backend/Spring6 [JPA] 동일 트랜잭션 내 OneToMany 필드 객체의 데이터와 DB 데이터의 불일치 JPA의 변경감지 jpa에서 데이터를 수정하는 방식으로는 영속상태의 엔티티 필드를 수정하는 방식인 변경감지가 있다. 변경감지가 일어난 이후, 트랜잭션 종료 또는 JPQL 실행을 하면 영속성 컨텍스트를 flush하게 되어있다. 테스트를 하다 마주친 양방향 연관관계 매핑 과정에서 생긴 궁금증과 테스트를 통해 궁금증을 해결한 과정을 적어보고자 한다. 양방향 연관관계 매핑 우선 설명에 필요한 두 엔티티에 대해 간략하게 적어보자면 아래와 같다. 1. Member: Member 엔티티는 List 타입의 필드를 가진다. (@OneToMany(mappedBy)) 2. Solve: Solve 엔티티는 Member 타입의 필드를 가진다. (@ManyToOne) 이 두 관계는 양방향 연관관계로써, Member엔티티의 L.. 2023. 4. 21. [spring] @Configuration의 프록시 객체 수동 빈 등록이 싱글톤 보장될 수 있는 이유 사실, 스프링에서 @Bean 애노테이션을 사용하여 수동 등록을 해도 싱글톤으로 등록된다. 하지만, 문제는 내부의 의존관계를 메서드 호출을 통해서 주입해주는 경우 발생하게 된다. 이러한 경우에는 객체가 새로 생성되기 때문에 DI컨테이너 내에 싱글톤이 깨지게 된다. 이 문제를 해결해주기 위한 애노테이션이 바로 @Configuration인 것이다. @Bean을 사용하여 수동으로 빈을 등록할 때, @Configuration을 적어줌으로써 싱글톤이 유지되게 된다. @Configuration의 유무에 따른 싱글톤 보장 여부 예제코드와 함께 직관적으로 살펴보면 아래와 같다. - ItemService와 ItemRepository 클래스. public class ItemRep.. 2023. 3. 10. 이전 1 2 다음