SQL를 직접 다룰때 발생하는 문제점
- 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야 한다.
- SQL에 의존적인 개발이 된다.
- 데이터 접근 계층을 사용하여 SQL을 숨겨도 어쩔 수 없이 DAO를 열어서 어떤 SQL이 실행되는지 확인해야 하는 점이다.
- DAO을 열어서 어떤 SQL이 실행되고 어쩐 객체들이 함께 조회되는지 일일 이 확인해야 한다.
- SQL을 직접 다루면 처음 실행하는 SQL에 따라 객체 그래프를 어디까지 탐색할 수있을지 정해진다. - 비지니스 로직에 따라 사용하는 객체 그래프가 다른데 언제 끊어질지 모를 객체를 그래프를 함부로 탐색할 수없기 때문
요약
- 진정한 의미의 계층 분할이 어렵다.
- 엔티티를 신뢰할 수없다.
- SQL에 의존적이 개발을 피하기 어렵다.
JPA란?
Java Persistence API는 자바 진영의 ORM 기술 표준이다.
JPA의 특징
- 쿼리를 일일히 작성할 필요가 없어 코드 작업량이 줄어든다.
- 가독성이 뛰어나다.
- 수정이 간편해 유지보수, 리팩토링에 용이하다.
JPA의 한계점
- 매핑 설계를 잘못했을 때 성능 저하가 발생할 수 있다.
- 동적 쿼리를 사용하면 가독성이 떨어져 유지보수 시 어려움이 있다.
ORM이란?