영속성 컨텍스트란 엔티티를 영구히 저장하는 환경을 말한다.1) 비영속 (new) : 영속성 컨텍스트와 전혀 관계가 없는 상태2) 영속 (managed) : 영속성 컨텍스트에 저장된 후 관리되는 상태.3) 준영속 (detached) : 영속성 컨텍스트에서 관리되었다가 관
JPA 사용시, 엔티티 클래스를 만들어줘야 한다. 엔티티에 자주 사용하는, 꼭 써야하는 어노테이션들은 무엇인지 알아보자.
Entity 클래스를 작성할 때 어노테이션을 많이 씁니다. 아래와 같이 많이 쓰게 되는데요.이 어노테이션에서 문제 3가지가 보입니다. 이를 개선하기 위해 해결방법을 정리해봅니다.Setter는 그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 되어서 객체의
OSIV(Open Session In View)는 영속성 컨텍스트를 뷰까지 열어두는 기능이다. 영속성 컨텍스트가 유지되면 엔티티도 영속 상태로 유지된다. 뷰까지 영속성 컨텍스트가 살아있다면 뷰에서도 지연 로딩을 사용할 수가 있다.OSIV의 동작 방식에 대해서 Sprin
1) BaseTimeEntity 생성2) extends BaseTimeEntity 추가Board(BaseTimeEntity를 상속할 엔티티 클래스)3) @EnableJpaAuditing 추가SpringbootBoardExampleApplication
1) EagerLoading : 특정 엔티티를 조회할 때 연관된 모든 엔티티를 같이 로딩, 즉시 로딩이라고 합니다.즉시 로딩은 연관된 엔티티를 모두 가져온다는 장점이 있지만,실무에서 엔티티간의 관계가 복잡해질수록 조인으로 인한 성능 저하를 피할 수 없게 됩니다.JPA에
JPA Pagination, 그리고 N + 1 문제뻥튀기 되는 문제 + distinct 해결법 정리결론 2번째 방식을 선호! 서브쿼리도 MySQL 에서 지장을 주기 때문에!
JPA를 쓸 때 연관관계로 인한 매핑문제로 무한참조(@XToOne)가 생길 수 있다. 이를 막기 위해default인 EagerLoading을 LazyLoading으로 거는데 여기서 문제가 생길 수 있다.바로,Lazy는 기본적으로 실제 객체가 아닌 프록시 객체를 감싸져
JPA 를 사용하면서 Team -> Member 와 같이 OneToMany -> ManyToOne 과 같은 양방향 관계를 가지는 구조에서 많이 발생하는 Json 순환참조에 대해서 알아보자.Json 순환참조는 양뱡향 관계에서 객체를 직렬화 하는 과정에서 양쪽 모두 직렬화
DBMS가 지원해주는 트랜잭션 외 JPA에서도 트랜잭션 처리기버을 소개한다.Pessimistic(선점) Lock(잠금): 비관적 잠금Optimistic(비선점) Lock(잠금): 낙관적 잠금DDD 참고JPA 프로바이더와 DBMS에 따라 잠금 모드의 구현이 다른데, 하이