JPA13 Entity 상속 JPA Entity 상속 방법 @Inheritance(strategy=InheritanceType.XXX)의 stategy를 설정해주면 된다. default 전략은 SINGLE_TABLE(단일 테이블 전략)이다. InheritanceType 종류 JOINED SINGLE_TABLE TABLE_PER_CLASS @DiscriminatorColumn(name="DTYPE") 부모 클래스에 선언한다. 하위 클래스를 구분하는 용도의 컬럼이다. 관례는 default = DTYPE @DiscriminatorValue("XXX") 하위 클래스에 선언한다. 엔티티를 저장할 때 슈퍼타입의 구분 컬럼에 저장할 값을 지정한다. 어노테이션을 선언하지 않을 경우 기본값으로 클래스 이름이 들어간다. Single table 전략 .. 2023. 9. 13. JPQL JPQL(Java Persistence Query Language) JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다. 따라서 테이블을 대상으로 쿼리 하는 것이 아닌 엔티티 객체를 대상으로 쿼리한다. JPQL은 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는 장점이 있다. JPQL은 SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다. JPQL은 결국 SQL로 변환된다. 예시 public List findAll(){ return em.createQuery("select m from Member m", Member.class).getResultList(); } public List findByName.. 2023. 9. 13. 영속성 컨텍스트 JPA의 기본중 가장 중요했던 개념인 것 같다. 이론적인 내용을 좋아하진 않지만 중요하기 때문에 간략히 정리해본다. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어이다. 엔티티를 영구 저장하는 환경이라는 뜻이다. 어플리케이션과 DB사이에서 객체를 보관하는 가상의 DB같은 역할을 한다. 서비스별로 하나의 EntityManager Factory가 존재하며 Entity Manager Factory에서 디비에 접근하는 트랜잭션이 생길 때 마다 쓰레드 별로 Entity Manager를 생성하여 영속성 컨텍스트에 접근한다!! EntityManager에 엔티티를 저장하거나 조회하면 EntityManager는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 영속성 컨텍스트는 EntityManager를 생성할 때 만.. 2023. 9. 13. 연관관계 설정 테이블간의 연관관계 설정에 대해서 간단히 복습해본다. JPA강좌 여러개를 들었고 책도 읽어보았지만 이부분이 제일 낯설고 복잡했던것 같다. @Entity @Getter @Setter @NoArgsConstructor public class Member extends BaseEntity{ @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(unique = true) private String email; @Column(length = 200) private String pw; @NotEmpty private String name; @Embedded private Address address; @JsonIgnore @OneToMa.. 2023. 9. 11. 이전 1 2 3 4 다음