JDBC API를 변경하지 않고 JDBC Driver Manager만 교체하면 다양한 밴더사의 제품을 사용할 수 있다.
- 중복 코드가 많다
- 쿼리를 직접 써야 한다.
- 커넥션 관리가 어렵다
그래서 rowmapper가 나온다.
rowmapper 덕분에 추상화가 많이 됐다.
SQL을 분리하자! 자바 코드에서 SQL을 쓰는게 불편하다. 띄어쓰기 하나 잘못돼도 에러가 발생한다.
메서드마다 xml에 있는 쿼리를 매핑하고 있다.
패러다임의 불일치
JPA는 인터페이스고 Hibernate가 구현체다.
Spring Data JPA에는
Repository
라는 개념을 제안했다. 엔티티 매니저가 복잡하니 한 단계 더 추상화 한 것이다. 그래서 Data JPA를 뜯어보면 Entity Manager가 있다.
더 Simple할 수는 없을까? 엔티티 매니저, lazy loading.. 이런 것들 쓰지 말자. -> DDD
그래서 JDBC API를 이용해서 구현했지만, Repository 개념은 있다.
JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발.
이 안에 SqlMapper와 ORM으로 나눌 수 있다.
위는 JDBC만을 사용하여 작성한 코드다.
위는 동일한 코드에 대해 JDBC Template을 사용했을 때 코드다.
또한 MyBatis는 동적 쿼리도 지원해준다.