Clean Code that Works.

하도 오래 전에.. 3~4년 전에 하이버네이트를 봤어서.. 기억이 안난다. -_-;;

스터디 사이트 이제부터는 하이버네이트 사용해서 공부 해볼까 해서, lib 추가 하고 간단한 테스트 클래스를 만들어 보았다.

기선님이 만들어 놓은 GenericDaoHibernateGenericDao가 있어서 이것을 사용하니깐 뚝 딱~(myBatis에서는 GenericMapper를 사용)
봄싹 소스 트랙커가 내려가 있는 관계로 내 스터디 프로젝트에 있는 소스를 링크


중간에 문제점이 있었던건
도메인 클래스의 @Entity를 javax. 패키지로 지정 해야 하는데 hibernate 패키지로 지정해서,
Entity 찾을 수 없다는 오류가 나는 것과 lib 잘 못 받아서난 오류 밖에 없었다.
다행 다행


클래스 상속을 매핑하는 가장 쉬운 방법은 하나의클래스 계층도에 대해 하나의 테이블을 할당 하는 경우.
사용자 삽입 이미지

클래스 다이어 그램


사용자 삽입 이미지

테이터베이스 테이블


모든 클래스들의 프로퍼티를 하나의 테이블에 매핑시키는 것으로,
CAREER 테이블은 Career 클래스, CompanyCareer 클래스 그리고 SchoolCareer 클래스가 갖는 모든 프로퍼티와 매핑될 칼럼을 가지고 있다.





클래스 상속 계층을 하나의 테이블에 넣는 방식은 다음과 같은 장점을 가진다.
장점
- 매핑이 간단하다.
- 성능이 좋다.
단점
- 하위 클래스의 프로퍼트와 매핑될 칼럼은 기본적으로 null이어야 한다.
- 새로운 하위 클래스가 추가될 경우 테이블을 변경해야 한다.