개요
- Java의 객체 상속과 DB의 상속은 개념 자체가 다르다.
- 이를 JPA가 해결해준다.
상속

- 객체는 상속이라는 기능을 가지고 있지만 테이블은 없다.
- DTYPE Column 을 사용해서 어떤 자식 테이블과 연관 관계가 있는지 정의했다.
Model
abstract class Item {
Long id;
String name;
int price;
}
class Album extends Item {
String artist;
}
class Movie extends Item {
String director;
String actor;
}
class Book extends Item {
String author;
String isbn;
}
- 예를 들어, Album 객체를 저장하려면 두 개의 SQL 이 필요하다.
INSERT INTO ITEM ...
INSERT INTO ALBUM ...
- 두 번의 INSERT 작업이 필요하지만, 이를 JPA가 해결해준다.
JPA와 상속
em.persist(album);
- Album 저장 시 상속 관계인 Item 객체도 Insert 쿼리를 자동으로 생성하여 저장 시켜준다.
String albumId = "100";
Album album = em.find(Album.class, albumId);
SELECT I.*, A.*
FROM ITEM I
JOIN ALBUM A ON I.ITEM_ID = A.ITEM_ID
- em.find(식별자) 를 통해 검색을 하면 JPA가 자동으로 SELECT SQL을 만들어준다.