JPA (Java Persistence API)

https://github.com/MoochiPark/jpa/blob/master/chapter10/README.md [ ▶ 객체지향 쿼리 언어 ]테이블이 아닌 개겣를 대상으로 검색하는 객체지향 쿼리다.SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. [ ▷ JPQL ]JPQL (Java Persistence Query Language)은 엔티티 객체를 조회하는 객체지향 쿼리이다.JPQL은 결국 SQL로 변환된다.Criteria나 QueryDSL도 결국 JPQL을 만들어주는 빌더 역할을 할 뿐이므로 JPQL을 잘 알아야 한다. [ ▷ 기본 문법과 쿼리 API ]JPQL도 SQL과 비슷하게 SELECT, UPDATE, DELETE 문을 사용할 수 있다. 엔티티를 저장할 때는 em.persis..
https://github.com/MoochiPark/jpa/blob/master/chapter09/README.md [ ▶ 값 타입 ]JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다.엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 추적할 수 없다.기본 값 타입 (basic value type):자바 기본 타입래퍼 클래스임베디드 타입 (embeded type) 혹은 복합 값 타입컬렉션 값 타입 (collection value type)임베디드 타입은 JPA에서 사용자가 직접 정의한 값 타입이..
https://github.com/MoochiPark/jpa/blob/master/chapter08/README.md [ ▶ 프록시와 연관관계 관리 ][ ▷ 프록시 ]엔티티를 조회할 때 연관되 엔티티들이 항상 사용되는 것은 아니다.@Getter@Setter@NoArgsConstructor@AllArgsConstructor@ToString@Entitypublic class Member { private String username; @ManyToOne private Team team; }@Getter@Setter@NoArgsConstructor@AllArgsConstructor@ToString@Entitypublic class Team { private String name;} publi..
https://github.com/MoochiPark/jpa/blob/master/chapter07/README.md [ ▶ 고급 매핑 ][ ▷ 상속 관계 매핑 ]관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서의 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 관계를 매핑하는 것이다. ▼ 슈퍼타입 서브타입 논리 모델 ▼ 객체 상속 모델  슈퍼타입 서브타입 논리모델을 실제 물리 모델인 테이블로 구현하는 방법은 아래와 같다.각각의 테이블로 변환: 각각의 테이블로 만들고 조회할 때 조인을 사용, JPA에서는 조인 전략이라고 한다.통합 테이블로 변환: 테이블 하나만 사용해서 통합한다..
https://github.com/MoochiPark/jpa/tree/master/chapter06/README.md [ ▶ 다양한 연관관계 매핑 ][ ▷ 다대일 ]다대일 관계의 반대 방향은 항상 일대다 관계고 일대다 관계의 반대 방향은 항상 다대일 관계다. 데이터베이스 테이블의 일, 다 관계에서 외래 키는 항상 다 쪽에 있다. 따라서 객체 양방향 관계에서 연관관계의 주인은 항상 다 쪽이다. [ ▷ 다대일: 단방향 ( N:1 ) ]▼ 회원 엔티티import lombok.*;import javax.persistence.*;@Getter@Setter@NoArgsConstructor@AllArgsConstructor@Builder@Entitypublic class Member { @Id @GeneratedV..
https://github.com/MoochiPark/jpa/tree/master/chapter05/README.md [ ▶ 연관관계 매핑 기초 ]대부분의 엔티티는 다른 엔티티와 연관관계가 있다. 그런데 객체는 참조 (주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘을 완전히 다르므로 객체 관계 매핑 (ORM)에서 가장 어려운 부분이 객체 연관관계와 테이블 연관관계를 매핑하는 것이다.방향 (Direction): 단방향, 양방향이 있다. 회원과 팀 관계가 있을 때, 회원 → 팀 또는 팀 → 회원 둘 중 한 쪽만 참고하는 것은 단방향. 양쪽 모두 서로 참조하는 것을 양방향 관계라 한다. 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향이다.다중정 (Multiplicity..
https://github.com/MoochiPark/jpa/blob/master/chapter06/README.md [ ▶ 엔티티 매핑 ]JPA를 사용하는데 가장 중요한 일은 에티티와 테이블을 정확히 매핑하는 것이다. 따라서 매핑 어노테이션을 숙지하고 사용해야 한다. JPA는 다양한 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다.객체와 테이블 매핑: @Entity, @Table기본 키 매핑: @Id필드와 컬럼 매핑: @Column연관관계 매핑: @ManyToOne, @JoinColumn [ ▷ @Entity ] JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라 부른다.속성기능기본값nameJP..
https://github.com/MoochiPark/jpa/tree/master/chapter03/README.md [ ▶ 영속성 관리 ]JPA가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다.엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조히하는 등 엔티티와 관련된 모든 일을 처리한다. 이름 그대로 엔티티를 관리하는 관리자다. 개발자 입장에서 엔티티 매니저는 인티티를 저장하는 가상의 데이터베이스로 생각하면 된다.[ ▷ 엔티티 매지너 팩토리와 엔티티 매지너 ]데이터를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. EntityManagerFactory emf = Persist..
GLaDiDos
'JPA (Java Persistence API)' 카테고리의 글 목록