Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그리디
- 알고리즘
- 스프링 핵심 기능
- http
- Servlet
- jpa
- Proxy
- 인프런
- Android
- QueryDSL
- 김영한
- JDBC
- 백준
- 스프링 핵심 원리
- springdatajpa
- kotlin
- Thymeleaf
- 스프링
- 자바
- db
- Greedy
- JPQL
- transaction
- java
- SpringBoot
- Spring Boot
- Exception
- pointcut
- spring
- AOP
Archives
- Today
- Total
개발자되기 프로젝트
[예제] 상속관계 매핑 본문
1. 요구사항 추가
- 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장이 될 수 있어
- 모든 데이터는 등록일과 수정일이 필수!
2. 도메인 모델
3. 도메인 모델 상세
4. 테이블 설계
5. Item class
- @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
- @DiscriminatorColumn
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class Item {
@Id
@GeneratedValue() //default = auto.
@Column(name = "ITEM_ID")
private Long id;
Hibernate:
create table Item (
DTYPE varchar(31) not null,
ITEM_ID bigint not null,
name varchar(255),
price integer not null,
stockQuantity integer not null,
actor varchar(255),
director varchar(255),
author varchar(255),
isbn varchar(255),
artist varchar(255),
etc varchar(255),
primary key (ITEM_ID)
)
6. Test
- book 을 저장해 보자.
Book book = new Book();
book.setName("booook");
book.setAuthor("nananana");
em.persist(book);
tx.commit();
- 전략을 JOINED로 바꿔보자.
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public abstract class Item {
Hibernate:
create table Book (
author varchar(255),
isbn varchar(255),
ITEM_ID bigint not null,
primary key (ITEM_ID)
)
7. @MappedSuperclass
- BaseEntity
@MappedSuperclass
public abstract class BaseEntity {
private String createdBy;
private LocalDateTime createdDate;
private String modifiedBy;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
- Item class를 상속받는 class는 BaseEntity를 별도로 상속받을 필요 없음
- Item이 BaseEntity 상속받음
- 각 테이블에 BaseEntity 속성이 추가된 것을 확인할 수 있다.
Hibernate:
create table Team (
TEAM_ID bigint not null,
createdBy varchar(255),
createdDate timestamp,
lastModifiedBy varchar(255),
lastModifiedDate timestamp,
modifiedBy varchar(255),
name varchar(255),
primary key (TEAM_ID)
)
8. Github : 210811 EXAMPLE
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
즉시 로딩과 지연 로딩. (0) | 2021.08.12 |
---|---|
프록시 (0) | 2021.08.12 |
@MappedSuperclass (0) | 2021.08.11 |
상속관계 (0) | 2021.08.11 |
[예제] 다양한 연관관계 추가 (0) | 2021.08.11 |
Comments