본문 바로가기

스터디/JPA2

단방향 @OneToMany를 지양해야 하는 이유 공부를 하다보면 단방향 OneToMany를 지양하라고 합니다. 이번 포스팅에서는 단방향 OneToMany를 왜 지양해야하는 지 직접 사용해보고 원인을 알아보려고 합니다. 아래는 테스트 요구사항입니다.회원이 여러 책을 가질 수 있다회원(Member)이 여러 개의 책(Book)을 가질 수 있는 관계를 모델링할 때, 이는 1:N(One-to-Many) 관계가 됩니다. JPA에서 1:N 관계를 구현하는 방법으로는 @ManyToOne과 @OneToMany를 사용할 수 있으며, 각각의 방식이 데이터베이스 테이블과 객체 모델 간의 매핑 방식에 영향을 미칩니다. 먼저 권장하는 방식인 @ManyToOne을 이용해 단방향 매핑을 해보겠습니다. @ManyToOne을 활용한 단방향 매핑 @Entity@NoArgsConstru.. 2023. 8. 15.
OSIV(Open Session In View) default 값을 사용해야할까? OSIV에 대해 공부하면서, 기본 설정값을 그대로 사용하는 것이 적절한지에 대한 의문이 들었습니다. 이에 관해 정리하여 포스팅을 작성하려고 합니다.OSIV란OSIV는 영속성 컨텍스트를 View 영역까지 열어두는 기능입니다. 즉, View Layer에서도 LazyLoading으로 엔티티를 조회할 수 있다는 말입니다. OSIV ture일 경우 (default) OSIV 전략은 트랜잭션이 시작되는 시점, 즉 최초 데이터베이스 커넥션이 생성될 때부터 API 응답이 완료될 때까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지하는 방식입니다. 이로 인해 View Layer에서 지연 로딩을 활용할 수 있습니다. 또한, View Layer에서는 트랜잭션 범위에 포함되지 않기 때문에 엔티티를 수정해도 쿼리가 발생하지 않습.. 2023. 7. 31.
728x90