다양한 데이터 접근 기술 조합

wangjh789·2022년 8월 20일
0

[Spring] 스프링-DB-2

목록 보기
10/21

다양한 접근 기술

Jpa, Jpa 스프링데이터, QueryDsl을 기본으로 사용하고, 만약 복잡한 쿼리를 써야하거나, 해결이 잘 안되는 쿼리의 경우 JdbcTemplate, MyBatis를 함께 사용하는 것이 좋다.

트랜잭션 매니저 사용

Jpa, 스프링 데이터 Jpa, QueryDsl은 모두 Jpa 기술을 사용하는 것이므로 스프링이JpaTransactionManager를 선택해 빈으로 자동등록한다.
반면, JdbcTemplate, MyBatis 기술은 내부에서 JDBC를 직접 사용하기 때문에 DataSourceTransactionManager를 사용한다. (JdbcTransactionManager를 사용하기도..)
따라서 사용하는 기술에 따라 사용하는 트랜잭션 매니저가 달라져 트랜잭션을 하나로 묶을 수 없는 문제가 발생할 수 있다고 생각한다.

JpaTransactionManager

JpaTransactionManager도 결국 내부에서 DataSource와 JDBC커넥션을 사용하기 때문에 JdbcTemplate, MyBatis 모두를 하나의 트랜잭션으로 묶어서 사용할 수 있다.

하지만 Jpa와 JdbcTemplate을 함께 사용하는 경우 Jpa의 플러시 타이밍에 주의해야한다.
Jpa는 데이터를 변경하면 변경 사항을 즉시 DB에 반영하지 않기때문에 Jpa로 데이터를 변경한 다음 JdbcTemplate을 호출하는 경우 변경 전의 데이터를 읽는 문제가 발생한다.
해결방안은 Jpa 호출이 끝난 시점에 수동으로 플러시를 사용해 DB에 변경내역을 반영하는 것이다.

profile
기록

0개의 댓글