트랜잭션이 둘 이상 있을 때 스프링은 어떻게 동작할까? 예를 들어 트랜잭션을 사용 중인데 그 안에서 또 트랜잭션을 사용하게 된다면? 이렇게 트랜잭션이 여러 번 실행되는 경우 스프링이 어떻게 동작하는지, 그리고 트랜잭션 전파라는 기능에 대해 알아본다. 우선 기본적인 커밋과 롤백에서의 트랜잭션 작동 방식을 다시 복습해보자. 커밋/롤백 ...
스프링 트랜잭션 전파 개념
스프링 트랜잭션 deep dive
이전 포스트에서 스프링이 제공하는 트랜잭션 기능이 왜 필요하고, 어떻게 동작하는 지 알 수 있었다. 스프링 트랜잭션 deep dive 포스트에서는 스프링 트랜잭션에 대해 더 자세하고 다양한 기능들을 알아본다. 즉, @Transactional의 여러 기능들을 알아본다. 트랜잭션의 적용 확인 @Transactional을 통해 선언적 트랜잭션 방식을 ...
데이터베이스 접근 기술 활용 방안 + 고민
스프링 데이터 JPA 예제와 트레이드 오프 스프링 데이터 JPA 예제 포스트에서 스프링 데이터 JPA를 사용했던 방법을 다시 보자. ItemService가 ItemRepository에 의존하고 그러한 코드를 수정하지 않고 스프링 데이터 JPA를 사용하기 위해 JpaRepository가 아닌 ItemRepository를 상속받는 중간 Reposi...
Querydsl
쿼리는 문자이다. Type-check가 불가능하다. 즉 실행하기 전까지 작동 여부를 확인할 수 없다. 단순히 띄어쓰기를 하나 틀려도 컴파일러에서 잡아주지 못하고, 에러를 찾기 힘든 것이다. 에러는 크게 2가지이다. 컴파일 에러 (좋은 에러) 런타임 에러 (나쁜 에러) 즉, 기존의 query 방식은 나쁜 에러인 것이다. 더해 SQL을 ...
스프링 데이터 JPA
Spring + JPA의 조합으로 개발이 이루어지던 도중 다른 여러 데이터베이스 기술들이 등장하게 된다. 그런데 데이터베이스 기술들이 아무리 나와도 결국 동작은 데이터를 저장하고, 조회하는 기능이 모두 공통적으로 있다. 그것이 데이터베이스의 목표이다. 그래서 이러한 것을 공통 기능들을 처리하는 것이 필요하다고 느껴져 만들어진게 Spring DATA...
JPA
스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술이다. 스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공한다. JPA는 스프링 만큼 방대하고 학습해야할 분량도 많다. 하지만 그만큼 데이터 접근 기술에서 매우 큰 생산성 향상을 경험할 수 있다. JPA를 사용하면 SQL을 ...
MyBatis
MyBatis JdbcTemplate하고 비교해 더 많은 기능을 제공하는 SQL Mapper이다. 기본적으로 JDbcTemplate이 제공하는 대부분의 기능을 제공한다. JdbcTemplate과 비교하면 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고, 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다. SQL이 ...
DB와 연동하는 테스트 방법
JdbcTemplate, JPA 같은 데이터 접근 기술을 사용할 때 테스트 코드를 어떻게 짜고, 테스트를 어떻게 진행해야 하는 지 알아본다. 데이터베이스 연동 테스트 테스트 케이스는 src/test에 있다. test를 실행하면 src/test에 있는 application.properties 파일이 우선순위를 갖게 된다. 즉, src/main 아래...
스프링 JdbcTemplate
JdbcTemplate SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate는 좋은 선택이 될 수 있다. JdbcTemplate는 JDBC를 매우 편리하게 사용할 수 있도록 도와준다. JPA와 같은 ORM 기술을 사용하면서 동시에 SQL을 직접 작성해야 할 때가 있는데 이런 경우도 JdbcTemplate을 함께 사용하면 된다. ...
DB 접근 기술들
데이터 접근 기술은 다양하다. 데이터베이스 접근 방식을 파악하기 위해 사용했던 JDBC기술과 더불어 아래와 같은 기술들이 있다. JDBCTemplate MyBatis JPA, Hibernate 스프링 데이터 JPA QueryDSL 이것들을 크게 SQLMapper, ORM 관련 기술 이 2가지 분류로 나눌 수 있다. SQ...