본문 바로가기

강의 정리/스프링 부트와 JPA 활용 13

3. 변경 감지와 병합 0. Merge vs Dirty Checking 준영속 엔티티란? 영속성 컨텍스트가 더이상 관리하지 않는 엔티티 식별자를 갖고 있지만, 영속성 컨텍스트가 관리하지 않는 엔티티 1. Dirty Checking (변경 감지) 해당 코드가 tx.commit() 이 될 때, 영속성 컨텍스트가 변경감지를 통해 데이터베이스에 반영 @Transactional public void updateItem(Long itemId, BookForm form) { Item findItem = itemRepository.findOne(itemId); findItem.setPrice(form.getPrice()); findItem.setName(form.getName()); findItem.setStockQuantity(form.g.. 2021. 1. 5.
2. 엔터티 설계시 주의점 1. 엔터티 설계에서는 가급적 Setter를 사용하지 않는다. 2. 모든 연관관계는 Lazy로 세팅한다. Eager로 많이엮여있으면 하나를 가져올 때 모두를 가져오는 문제가 생길 수 있다. Lazy + [fetch join/entity graph] 을 사용해라 특히 JPQL을 사용할 때 N+1 문제가 자주 발생한다. @XToOne(OneToOne, ManyToOne) 은 기본 전략이 Eager이므로 꼭 Lazy로 설정해야한다. 3. 컬렉션은 필드에서 초기화해라 4. 하이버네이트 테이블, 컬럼명 생성 전략 (SpringPhysicalNamingStrategy) camelCase -> underscore 점(dot) -> underscore 대문자 -> 소문자 5. Cascade 2020. 12. 26.
1. 환경설정 1. JPA 환경설정 spring.jpa.hibernate.ddl-auto create : 어플리케이션 실행 시점에 내가 가지고 있는 엔터티를 지우고 재생성한다. spring.jpa..properties.hibernate show_sql : System.out.println 형식으로 쿼리문을 출력해준다. 2020. 12. 25.