본문 바로가기
반응형

JPA11

[JPA] 상속관계 매핑 - 상속 전략 DB의 슈퍼타입 서브타입 관계를 JPA에서는 객체의 상속 관계로 풀어낼 수 있다 아래 세 가지 전략 중 조인 전략을 기본으로 사용하고, TABLE PER CLASS 전략은 사용하지 않도록 하는 것이 좋다 상속 관계 (세 가지 전략 모두 상속 관계는 동일) 부모 클래스 - Item 엔티티 자식 클래스 - Album, Movie, Book 엔티티 1. 조인 전략 - 기본 상속 전략 - @Inheritance(strategy = InheritanceType.JOINED) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn public class Item { @Id @GeneratedValue private Long id; ... 2022. 4. 6.
[JPA] 영속성 컨텍스트 / 엔티티의 생명주기 # 영속성 컨텍스트 "엔티티를 영구 저장하는 환경" EntityManager.persist(entity); // 객체를 영속성 컨텍스트에 저장(영속화) 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 # 엔티티의 생명주기 1. 비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 Member member = new Member(); // 비영속 2. 영속 영속성 컨텍스트에 관리되는 상태 Member member = new Member(); .. em.persist(entity); // 영속 상태 * 엔티티매니저를 통해 persist 해줘야만 영속 상태! DB에 저장되는건 아님! tx.commit(); // 트랜잭션을 커밋할때 DB에 저장 3. 준영속 영속성 컨텍스트에 저장되었다가 분리된 상태 em.det.. 2022. 3. 31.
[JPA] Spring Data JPA - Query Method / 쿼리 메소드 / 간단한 쿼리는 쿼리 메소드 사용하면 편리 동적인 조건으로 조회를 하거나(ex.검색쿼리) 복잡한 쿼리를 해야한다면 Querydsl을 추천 하지만 단순한 crud라면 쿼리 메소드를 이용하면 매우 간단 편리하며 생산성을 올릴 수 있다! 쿼리메소드 키워드 표 Keyword Sample JPQL snippet Distinct findDistinctByLastnameAndFirstname select distinct …​ where x.lastname = ?1 and x.firstname = ?2 And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2 Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = .. 2022. 1. 20.
[JPA] enum 타입 DB에 저장시 값 변환 / @Converter / AttributeConverter JPA Entiry 에서 ENUM 타입을 필드로 사용할 때 Converter를 사용하면 DB에 원하는 값으로 변환해서 넣어줄 수 있다 # ENUM public enum Gender { MAIL("남자"), FEMAIL("여자"); private final String label; Gender(String label) { this.label = label; } public String getLabel() { return this.label; } } # CONVERTER - AttributeConverter 인터페이스를 구현해서 만들어준다 – entity 필드 타입 (Enum타입) – DB 컬럼에 저장할 값 타입 public interface AttributeConverter { public Y conver.. 2022. 1. 19.
[JPA] postgres 스키마 설정 / default schema 설정 1. application.yml 설정 - 기본 스키마 설정 spring.jpa.properties.hibernate.default_schema: myschema - 샘플 spring: datasource: # db url: "jdbc:postgresql://DatabaseURL:port/db" username: user password: password platform: postgresql jpa: hibernate: ddl-auto: none # 자동으로 ddl 생성해서 반영하지 않게 설정 use-new-id-generator-mappings: true # AUTO, TABLE 및 SEQUENCE에 대해 Hibernate의 새로운 IdentifierGenerator를 사용할지 여부 database-p.. 2022. 1. 17.