본문 바로가기
반응형

Study/JPA7

[JPA] 공통 속성 매핑 공통 속성 매핑 Audit과 같이 상속 관계는 아니지만 생성일자, 수정일자 등 공통적인 속성을 여러 클래스가 사용해야 하는 경우가 있다. JPA에서 이런 공통 속성을 매핑하는 방법에 대해 알아보자. 실습하기 전 공통 속성을 물려받을 테스트용 클래스를 만들어주자. @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue private Long id; private String name; } @MappedSuperClass 위의 그림과 같이 공통 속성을 상속받고 싶을 경우 부모 클래스에 @MappedSuperClass 어노.. 2022. 8. 26.
[JPA] 상속관계 매핑 Intro 관계형 데이터베이스에서는 기본적으로 상속 관계를 지원하지 않는다. JPA에선 이런 문제를 해결해줄 수 있는 3가지 상속관계 매핑 방법을 지원한다. 이번 시간엔 JPA를 통해 상속 관계를 매핑하는 방법에 대해 알아보자. 실습하기 전 아래의 간단한 테스트용 Entity 2개를 만들어보자. @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PROTECTED) public class Item { @Id @GeneratedValue private Long id; private String name; private int price; } @Entity @Getter @Setter @NoArgsConstru.. 2022. 8. 26.
[JPA] 연관관계 매핑 Intro DB를 설계할 때 테이블이 하나만 있는게 아닌 이상 거의 대부분의 경우에 테이블 간 연관관계 설정이 필요하다. 연관관계 종류로는 1:1, 1:N, N:1, M:N이 있으며, Foreign Key를 사용해 매핑해야 한다. 하지만 JPA에선 Entity에 연관된 테이블의 ID를 넣는 것 대신 객체 자체를 변수로 넣을 수 있게 해준다. 실습하기 전 아래의 간단한 테스트용 Entity 2개를 만들어보자. @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue private Long id; private String.. 2022. 8. 25.
[JPA] Entity 필드, 컬럼 매핑 Intro JPA에서 영속성 컨텍스트와 함께 가장 중요한 개념인 엔티티 매핑이다. Java의 클래스와 DB의 테이블을 변환해주고, 옵션을 설정하기에 따라 테이블을 자동으로 생성해주기도 한다. 아래의 간단한 클래스를 테이블로 매핑해보자. Entity의 경우 protected 또는 public의 기본 생성자가 반드시 있어야 하며, 클래스 또는 저장할 필드에 final을 붙이면 안된다. @Getter @Setter @NoArgsConstructor public class Member { private Long id; private String name; private String password; } @Entity, @Table 우선 "이 클래스가 엔티티이며, JPA에서 관리하도록 하겠다" 라는 의미를 부여하.. 2022. 3. 5.
[JPA] 영속성 컨텍스트 영속성 컨텍스트 (Persistence Context)란? Entity를 영구적으로 저장하는 환경으로, JPA를 이해하기 위해 빼놓을 수 없는 개념이다. 논리적인 개념이기에 눈에 보이지 않고, EntityManager를 통해 접근할 수 있다. 우리가 이전 시간에 사용했던 EntityManager.persist(Entity)가 Entity를 영속성 컨텍스트에 저장한다는 뜻이다. 영속성 컨텍스트의 생명주기 영속성 컨텍스트엔 아래의 4가지 생명주기가 있다. 비영속 (New) 이제 막 생성되어 영속성 컨텍스트와 아무런 상관이 없는 상태이다. Member member = new Member(); member.setId("member"); member.setName("회원"); 영속 (Managed) 엔티티가 영속.. 2022. 3. 5.
[JPA] DB에 데이터 넣어보기 DB에 데이터 넣어보기 이전 시간에 아래의 코드를 작성했다. public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //code tx.commit(); em.close(); emf.close(); } } 이번 시간에는 코드에 들어간 클래스들에 대해 간단히 정리하고 넘어가고자 한다. EntityManagerFactory 애플리케이션 로.. 2022. 2. 26.
[JPA] JPA 프로젝트 설정 JPA란? Java Persistence API의 약자로, 자바의 ORM 기술의 표준이다. 즉, JPA는 ORM을 위한 인터페이스 같은 개념이고, 이 인터페이스를 구현만 하면 JPA로 사용할 수 있다. 예를 들자면, 우리가 아는 대표적인 JPA 구현체로는 Hibernate가 있지만, EclipseLink나 DataNucleus 같이 JPA 인터페이스를 구현한 다른 구현체들도 Hibernate 대신 교체해서 쓸 수 있는 것이다. JPA 프로젝트 생성 [File] - [New Project] 를 선택하고 Maven 또는 Gradle 프로젝트를 생성한다. 그 후 JPA를 사용하기 위해 Dependency를 추가해준다. 이번 프로젝트의 경우 JPA의 구현체 중 Hibernate를 선택하도록 하겠다. Maven .. 2022. 2. 26.
반응형