JPA 7

다중 데이터베이스 + JPA 환경에서의 트랜잭션 관리에 대하여

Spring Boot 애플리케이션에서 다중 데이터베이스 환경(Primary, Replication DB 여러대)을 운영하면서 스케줄러를 통해 데이터를 INSERT, UPDATE, DELETE하는 과정에서 실제 데이터베이스에 변경사항이 반영되지 않는 문제를 경험했습니다. 이는 트랜잭션 관리 방식의 차이에서 기인한 문제일 수 있습니다.해당 포스트에서는 제가 주로 사용한 두 가지 트랜잭션 관리자 DataSourceTransactionManager와 JpaTransactionManager에 대해 비교해보고 어떻게 위 문제를 해결했는지 기록합니다. 트랜잭션 관리자 비교DataSourceTransactionManager- 이 트랜잭션 관리자는 주로 JDBC API를 사용할 때 적합하며, 각 트랜잭션은 단일 데이터베..

Java & Spring Boot 2024.05.08

(JPA) 연관관계 매핑 예시

// Member Entity 기준 @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @OneToMany(mappdBy = "member") private List orders = new ArrayList(); // 실제 서비스 시, 회원을 통해 주문 정보를 불러오는 비지니스 로직은 거의 없지만 굳이 연관관계 매핑을 한다면 위와 같이 할 수 있다. // Order Entity 기준 @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; @OneToMany(mappe..

JPA 2023.01.15