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