본문 바로가기

SpringDataJPA26

20. 기타 AttributeConverter, @Formula, @DynamicUpdate(@DynamicInsert), @Immutable, @Subselect 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * AttributeConverter 매핑을 지원하지 않는 자바 타입과 DB 타입 간 변환 처리를 담당한다. ex) boolean 타입을 char 타입으로 매핑하고 싶을 때 open_yn (char)를 opened (boolean)에 매핑하고 싶다. 이걸 AttrivuteConverter가 해준다. AttributeConverter를 구현한 클래스를 먼저 만든다. AttributeConverter에는 convertToDatabaseColumn() 과 convertToEntityAttribute()가 정의되어 있다. convertToDatabaseColumn() : 엔티티 속성을 DB 칼럼 값으로 바꿔.. 2023. 4. 5.
19. Criteria 소개 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * Criteria 코드로 쿼리를 구성하는 API JPQL 대신 자바 코드 사용 CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Review.class); /** * cq를 이용해서 쿼리 구성 */ Root root = cq.from(Review.class); cq.select(root); Predicate p = cb.conjunction(); if (hotelId != null) { p = cb.and(p, cb.equal(root.get("hotelId"), hotelId)); } p = cb.and(.. 2023. 4. 4.
18. JPQL 소개 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * JPQL JPA Query Language SQL 쿼리와 유사하다. 테이블, 칼럼명 대신 엔티티 이름, 속성을 사용한다. 테이블 대신 엔티티인 Review를 사용한다. r.hotelId 는 칼럼명이 아닌 Review의 필드 멤버, 즉 Review의 속성이다. createQuery()의 두 번째 인자로 해당 엔티티 클래스라는 것을 명시한다. 해당 메서드의 결과로 TypedQuery 객체가 생성된다. setParameter();를 통한 파라미터 바인딩이 가능하다. 위의 JPQL문에서 :Property 형태로 쓰인 부분에 바인딩을 해준다. setParameter();의 첫 번째 인자는 바인딩 될 부분 .. 2023. 3. 30.
17. 영속성 전파 & 연관 매핑 고려사항 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. find()로 찾아온 객체를 활용에서 persist()를 하면 에러가 발생하지 않는다. 새로 만든 객체를 활용해서 persist()를 하면 DB에 새롭게 만든 객체의 정보가 없으니까 에러가 발생한다. 그런데 오른쪽처럼 코드를 작성하고 싶으면 어떻게 해야할까? * 영속성 전파 연관된 엔티티에 영속 상태를 전파 : 나와 연관된 엔티티에 나의 영속상태가 바뀌는 것을 전파한다. 예, 저장할 때, 나와 연관된 엔티티도 함께 저장되게 하는 것. Team 클래스에서 확인할 수 있다 연관하는 애너테이션(@OneToOne, @OneToMany, @ManyToMany)에 cascade라는 속성의 값을 CascadeTy.. 2023. 3. 29.
16. 엔티티 간 1-N 단방향 연관 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 1-N 단방향 연관 매핑 콜렉션을 사용한 매핑 : Set, List, Map * 1-N 단반향 Set 연관 매핑 참조키를 이용한 1-N 관계를 생성할 수 있다. player는 team_id를 통해 team 테이블을 참조한다. * 1-N 단방향 Set 연관 매핑 설정 Team 클래스에서 확인할 수 있다. @OneToMany, @JoinColumn(name = "참조할 칼럼")을 이용해 1-N 단방향 연관 매핑을 설정할 수 있다. * Set 저장 여러 Player를 find(); 해온 뒤, player들의 Set을 만들어서 저장하고 이를 Team에 넣어 persist(team);을 한다. team 데.. 2023. 3. 28.
반응형