본문 바로가기

강의 정리28

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.
10. 중급 문법 1. 경로표현식 특징 상태 필드 단순히 값을 저장하기 위한 필드 ex) m.username 연관 필드 단일 값 연관 필드 @XToOne 묵시적 조인이 발생 (inner join) 컬랙션 값 연관 필드 @XToMany 묵시적 조인이 발생 묵시적 조인을 쓰지말고, 명시적 조인을 만들어서 써라. 2. 페치 조인 JPQL 성능 최적화를 위해 제공되는 기능이다. 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회하는 기능이다. ex) select m from Member m join fetch m.team 컬렉션 패치 조인 1대 다 조인인 경우에는 데이터가 뻥튀기 될 수 있다. distinct로 제거할 수 있다. JQPL distinct는 중복된 엔티티를 제거해준다. (sql distinct 와는 조금 차이가 있음.. 2021. 1. 2.
9. 기본 문법 1. JPQL 엔티티 객체 대상으로 하는 객체지향 쿼리 언어다. 특정 SQL에 의존하지 않는다. TypeQuery : 반환 타입이 명확할 때 사용 TypedQuery typedQuery = em.createQuery("select m from Member m", Member.class); Query : 반환 타입이 명확하지 않을 때 사용 Query query = em.createQuery("select m.username, m.age from Member m"); 결과 조회 Collection 인 경우, getResultList(); 결과가 없으면 빈 리스트 반환 (NPE 발생하지 않음) List members = em.createQuery("select m from Member m", Member.cl.. 2021. 1. 2.
8. 값 타입 1. 기본값 타입 기본 타입 : int, double 래퍼 클래스 : Integer, Long String 2. 임베디드 타입 (복합 값 타입) 새로 값 타입을 만든다. ex) city, street, zipcode => Address 라는 값타입으로 만드는 것. as-is to-be Embeddable Period Embeddable Address 새로 정의한 값 타입에는 @Embeddable 사용할 곳에는 @Embedded Equals and hashcode 추가해주는게 좋다. 중복된다면? Address homeAddress Address workAddress 를 같이 사용하고싶다면? @Embedded private Address homeAddress; @Embedded @AttributeOverri.. 2021. 1. 1.