본문 바로가기
반응형

Backend, Server/JPA12

[JPA] 고급 매핑 - 상속관계 매핑, @MappedSuperclass 1. 상속관계 매핑 관계형 데이터베이스는 상속 관계를 가지지 않는다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑은 객체의 상속과 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것. 슈퍼타입 서브타입 논리 모델을 실제 모델로 구현하는 방법은 세 가지가 있다. - 조인 전략(각각 테이블로 변환) - 단일 테이블 전략(통합 테이블로 변환) - 구현 클래스마다 테이블 전략(서브타입 테이블로 변환) - 조인 전략 아래처럼 슈퍼타입 객체에 @Inheritance 어노테이션을 달아주면 된다. 조인 전략은 속성으로 InteritanceType.JOINED 해주면 된다. 여기에 DTYPE까지 추가시키고 싶을 때는 @DiscriminatorColumn(name = "DTYPE")을 추.. 2021. 12. 14.
[JPA] 다양한 연관관계 매핑 - 다중성 다대일: @ManyToOne 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany 1. 다대일 N:1 - 다대일 단방향 가장 많이 사용하는 연관관계 - 다대일 양방향 외래키가 있는 쪽이 연관관계의 주인이 된다. 2. 일대다 1:N - 일대다 단방향 • 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인 • 테이블 일대다 관계는 항상 다(N) 쪽에 외래 키가 있음 • 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조 • @JoinColumn을 꼭 사용해야 함. 그렇지 않으면 조인 테이블 방식을 사용함(중간에 테이블을 하나 추가함) • 일대다 단방향 매핑의 단점 • 엔티티가 관리하는 외래 키가 다른 테이블에 있음 • 연관관계 관.. 2021. 12. 14.
[JPA] 연관관계 매핑 기초 연관 관계 매핑에 앞서 객체와 테이블의 차이를 알아야 한다. - 객체 연관관계 VS 테이블 연관관계 객체의 연관관계는 참조를 통해 이루어진다. 테이블의 연관관계는 외래키를 통해 이루어진다. 이때 객체의 연관관계는 단방향이고, 테이블의 연관관계는 양방향이 된다. 이러한 간극을 줄여주고자 연관관계 매핑이 필요한 것이다! - 단방향 매핑은 아래와 같이 @ManyToOne 어노테이션, @JoinColumn을 설정해준다. (JoinColumn은 필수가 아니다.) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age; // @Column.. 2021. 12. 14.
[JPA] 엔티티 매핑 기본 객체와 테이블 매핑 @Entity - @Entity가 붙은 클래스는 JPA가 관리하게 됨 - JPA를 사용하여 테이블과 매핑할 클래스는 필수다. - 주의할 점은 클래스는 기본 생성자를 반드시 가지고 있어야 한다. - final 클래스, enum, interface, inner 클래스에는 사용 불가 - 저장할 필드에 final 사용 불가 @Table - @Table은 엔티티와 매핑할 테이블을 지정한다. - @Table(name = "xxx")와 같은 방식으로 엔티티 이름을 설정해줄 수 있다. 데이터베이스 스키마 자동 생성 hibernate.hbm2ddl.auto create : 기존 테이블 삭제 후 다시 생성 create-drop : create와 같으나 종료시점에 테이블을 drop함 update : 변경.. 2021. 12. 9.
[JPA] 영속 컨텍스트 이해하기 JPA의 핵심은 다음 두가지다. - 객체와 관계형 데이터베이스 매핑(object relational mapping) - ORM - 영속성 컨텍스트 영속성 컨텍스트란? - 엔티티를 영구 저장하는 환경이라고 이해할 수 있다. - 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있다. 엔티티 생명주기 - 비영속(new) : 영속성 컨텍스트와 전혀 관계없는 상태 Member member = new Member(); member.setId("member1"); member.setUserName("회원1"); - 영속(managed): 영속성 컨텍스트에 관리되는 상태 EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //객체를 저.. 2021. 12. 9.
[JPA] H2 데이터베이스 사용법, JPA 시작하기 1. 설치 다운로드 : http://h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo h2database.com 윈/맥에 맞게 windows 또는 all platforms를 다운받으면 된다. 2. 실행 설치 경로로 가서 b.. 2021. 12. 8.
반응형