JPA 2

[JPA] 객체 지향 쿼리 언어, JPA와 JDBC 같이 사용

JPQL: 엔티티 객체를 대상으로 쿼리, SQL을 추상화 해서 특정 데이터 베이스 SQL에 의존하지 않는다. → 결국 SQL로 변환된다. Criteria: 표준 스펙에 들어간다. (실무에서 x → 유지보수 어려움) 권하지 않는다. QueryDSL: JPQL 을 잘 사용하면 QueryDSL 은 금방 사용 가능하다. (실무 사용 권장) 컴파일 시점에 문법 오류 찾을 수 있음 JPQL 빌더 역할 자바코드로 JPQL 작성 가능 native SQL : JPA가 제공하는 SQL을 직접 사용하는 기능. 특정 데이터베이스에 의존적인 기능 flush 는 commit, query가 날라갈 때 실행이 된다. (기본적인 auto모드 전략, JPA 관련해서 쓸 때는 상관이 없다.) JPA를 사용하면서 JDBC 커넥션을 직접 사..

JPA 2022.05.19

[JPA] cascade 옵션 & 고아 객체

영속성 전이 cascade 객체를 저장하거나 삭제할 때 연관된 객체도 함께 저장하거나 삭제할 수 있는 것. JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태이어야 한다. cascade는 그럼 언제 써야 할까? Life Cicle이 일치 할 때 단일 엔티티에 종속적일 때 ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장해야 할 때 사용한다. cascade는 연관관계와는 연관이 없다. CASCADE의 종류 ALL: 모두 적용 PERSIST: 영속 부모와 자식 엔티티를 한 번에 영속화 가능 REMOVE: 삭제 부모 엔티티를 삭제하면 연관된 자식 엔티티도 함께 삭제. MERGE: 병합 => 보통 cascade = CascadeType.ALL을 사용한다. 고아 객체 jpa는 부모 엔티티와 연관..

JPA 2022.05.16