엔티티2 [JPA] 엔티티 설계시 주의사항 본 내용은 김영한님의 실전 스프링 부트 JPA 활용 강의를 수강하며 정리한 내용입니다. 가급적 Setter를 지양해라 Setter가 모두 열려있으면, 변경 포인트가 너무 많아져서 유지 보수가 어렵다. 모든 연관관계는 지연로딩(LAZY)으로 설정해라(중요) 즉시로딩(Eager)의 경우 N+1 문제가 발생 할 수 있다. 어떤 SQL이 실행될지 추적하기 어렵다. 실무에서 모든 연관관계는 지연로딩(LAZY)로 설정해야 한다. 함께 조회해서 가져오고 싶은 경우 fetch join 또는 엔티티 그래프 기능을 사용해야한다. xxxToOne어노테이션은 기본값이 Eager이기 때문에 LAZY로 바꿔줘야한다. 컬렉션은 필드에서 초기화 하자. 필드에서 바로 초기화 하는것이 안전하다. null에 대해 안전하다. 하이버네이트에.. 2020. 4. 30. [JPA] Entity의 LifeCycle 백기선님의 Spring Data JPA 강좌를 참고하여 정리한 내용입니다. Entity의 상태 Entity의 상태에는 크게 4가지가 있다. Transient Persistent Detached Removed 각각의 상태 변화에 대해 알아보자 Transient : JPA가 모르는 상태 (단순 객체 생성) Account account = new Account(); account.setUsername("seokhun"); account.setTitle("JPA"); Persistent : JPA가 관리중인 상태 (1차 캐시, Dirty Checking, Write Behind) Session session = entityManager.unwrap(Session.class); session.save(accoun.. 2020. 3. 3. 이전 1 다음