ORM (Object-relational mapping)
- 객체는 객체대로 설계
- 관계형 DB는 관계형 DB대로 설계
- ORM 프레임워크가 중간에서 SQL 매핑을 담당해줌
- 과거 개발자가 SQL 매핑을 해주던것을 ORM 프레임워크가 해 준다
JPA (Java Persistence API)
동작
- JPA가 JDBC API를 사용해서 SQL를 작성
- JPA에게 객체를 넘기면 JPA가 객체를 분석하고 적합한 쿼리를 만들어 날려준다
JPA를 사용해야 하는 이유
- SQL 중심적인 개발에서 객체 중심적인 개발이 가능하다
- 생산성 향상
- CRUD를 간단한 메소드로 할 수 있다
- 객체를 관계형 DB에서 넣고 뺄 때, 발생하는 SQL 매핑작업들을 JPA가 대신해준다
- 유지보수
- 필드가 변경되면 모든 SQL을 수정했어야 했는데, JPA 사용으로 필드가 변경되어도 관련 SQL 작성은 JPA가 담당한다.
- 객체와 관계형 DB간의 패러다임 불일치 해결
- 상속
- 테이블은 상속 기능이 없어서 개발자가 여러 쿼리를 작성해야 했다 (JOIN등)
- JPA가 관련된 여러 쿼리를 작성해준다. (INSERT INTO ITEM.. INSERT INTO ALBUM …)
- 연관관계, 객체 그래프 탐색
- 연관관계를 설정하고, 객체 그래프 탐색이 자유롭다
참고
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 김영한