Web(110)
-
JPA - 하나의 엔티티에 다수 테이블 매핑(@SecondaryTable,@SecondaryTables)
JPA - 하나의 엔티티에 다수 테이블 매핑(@SecondaryTable,@SecondaryTables) 123456789101112131415@Entity@Table(name = "BOARD")@SecondaryTable(name = "BOARD_DETAIL", pkJoinColumns = @PrimaryKeyJoinColumn(name = "BOARD_DETAL_ID"))@Getter@Setterpublic class Board { @Id @Column(name = "BOARD_ID") private String id; private String title; @Column(table = "BOARD_DETAIL", name = "BOARD_CONTENT") private String content;}..
2019.02.03 -
JPA - @MappedSuperClass (매핑정보 상속)
@MappedSuperClass바로 직전의 포스트에서는 JPA에서의 엔티티 상속 전략에 대해서 다루었다. 이번에 다룰 것은 비슷한 상속개념이지만, 이전 포스트 글과는 다르게 부모에 해당하는 클래스가 테이블과 매핑되는 것이 아니라, 단순 상속받는 엔티티에게 매핑정보만 상속해주는 것이다. 즉, 객체들이 주로 사용하는 공통 매핑정보등을 정의하여 그 매핑정보를 엔티티들에게 상속해주는 것이다. 1234567891011121314151617181920212223242526272829@MappedSuperclass@Getter@Setterpublic abstract class BaseEntity { @Id @Column(name = "BASE_ID") @GeneratedValue(strategy=GenerationT..
2019.02.02 -
JPA - 상속 관계 매핑, @Inheritance, @DiscriminatorColumn
JPA - 상속 관계 매핑, @Inheritance, @DiscriminatorColumn 사실 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 각각의 테이블로 변환 4개 각각을 모두 테이블로 만들고 조회할 때 조인을 사용한다.(조인전략) 통합 테이블로 변환 단 하나의 테이블을 사용해서 상속관계를 통합한다.(단일 테이블 전략) 서브타입 테이블로 변환 서브 타입마다 하나의 테이블을 만든다(..
2019.02.02 -
JPA- 연관관계 외래키의 주인과 주인의 참조자 관계
JPA- 연관관계 외래키의 주인과 주인의 참조자 관계 JPA에서 일대일,일대다,다대일,다대다 관계에서는 항상 연관관계의 주인이 존재한다. 연관관계의 주인이라고 함은 데이터베이스 테이블에서 외래키의 주인을 뜻한다. 보통 일대다,다대일(다대다 포함, 다대다는 일대다,다대일관계로 매핑을 시킴) 관계에서는 보통 다쪽에 외래키가 존재한다. 일단 예제를 보면서 설명하겠다. 연관관계 예시 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364package com.spring.jpa.entitiy; import javax.persistence.Column;imp..
2019.01.24 -
JPA - 다대다 연관관계(@ManyToMany),N:N
JPA - 다대다 연관관계(@ManyToMany),N:N 설명에 앞서 사실 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 곤계를 표현할 수 없다. 그래서 보통 다대다 관계를 일대다,다대일 관계로 풀어내는 연결 테이블을 사용한다. 왜냐하면 다대다 관계를 1:1 테이블 매핑은 한다고 생각해보자. 회원과 상품의 관계인데, 한 회원이 여러개의 상품을 구입할 수 있고, 한 상품(ID)이 여러 회원에 의해 구입될 수 있다. 그렇다면 서로 몇개까지 살 수 있냐라는 제한이 없으면 외래키가 유동적으로 늘어난다. 그렇다면 엄청 많은 외래키를 굳이 미리 생성할 필요도 없다. 즉, 이렇게 몇개인지 알수 없는 다대다 관계를 중간에 연결 테이블 하나를 두고 일대다, 다대일 관계로 매핑을 시켜주는 것이다. 연결테이블은 단순히..
2019.01.24 -
JPA - 기본 키 매핑 전략(@Id)
JPA 기본 키 매핑 전략,@IdJPA에서 기본 키 매핑 전략에는 크게 4가지가 있다. 1)직접 할당 : 기본 키를 애플리케이션에서 직접 엔티티클래스의 @Id 필드에 set해준다. 2)자동 생성 : 대리 키 사용 방식 - IDENTITY : 기본 키 생성을 데이터베이스에 위임한다.(ex MySQL - AUTO INCREMENT...)- SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다.(ex Oracle sequence...)- TABLE : 키 생성 테이블을 사용한다.(ex 시퀀스용 테이블을 생성해서 테이블의 기본키를 저장하고 관리한다.) 자동 생성 전략이 이렇게 다양한 이유는 데이터베이스 벤더마다 지원하는 방식이 다르기 때문이다. 위 중에서 IDENTITY와 SEQUENCE는 데이..
2019.01.17