영속성(persistence) : 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
jdbc(java database connectivity)
persistence framework
sql mapper
jdbctemplate
mybatis
jdbc, sql mapper의 문제점
ORM
객체와 관계형 DB를 맵핑하는 것
객체간의 관계를 바탕으로 sql 문을 자동으로 생성하고 직관적인 메서드로 데이터를 조작하여 개발의 불편함을 해결할 수 있다. (select * from ... -> user.findAll())
패러다임 불일치 문제를 해결
장점
JPA
패러다임 불일치
RDB 테이블은 객체의 상속이라는 개념이 없다.
공통 부분을 슈퍼타입으로 묶고 공통으로 부터 상속받아 다른 엔티티와 차이가 있는 속성에 대해서는 서브 타입으로 구현하면 상속과 유사하게 테이블 설계 가능
person을 상속받은 crew
jpa가 해주는 일
crew 객체를 저장하려면
insert into person... , insert into crew
쿼리를 두 번 날려야 한다. crew 객체를 조회하려면
select p.*, c.* from person p join crew c on p.id = c.id;
join 문을 이용한 쿼리를 사용해야한다.
개발자가 할 일
jpa.persist(album)
Crew crew = jpa.find(Crew.class, crewId)
[참고]