[CS] JDBC, SQLMAPPER, ORM

June·2021년 9월 15일
0

[CS] CS 지식 정리

목록 보기
19/27

코즈의 JDBC, SQLMAPPER, ORM

JDBC API

JDBC API를 변경하지 않고 JDBC Driver Manager만 교체하면 다양한 밴더사의 제품을 사용할 수 있다.

  • 중복 코드가 많다
  • 쿼리를 직접 써야 한다.
  • 커넥션 관리가 어렵다

그래서 rowmapper가 나온다.

SQL MAPPER

Spring JDBC

rowmapper 덕분에 추상화가 많이 됐다.

MyBatis

SQL을 분리하자! 자바 코드에서 SQL을 쓰는게 불편하다. 띄어쓰기 하나 잘못돼도 에러가 발생한다.

메서드마다 xml에 있는 쿼리를 매핑하고 있다.

ORM

패러다임의 불일치

JPA는 인터페이스고 Hibernate가 구현체다.

Entity Manager

Spring Data JPA에는 Repository라는 개념을 제안했다. 엔티티 매니저가 복잡하니 한 단계 더 추상화 한 것이다. 그래서 Data JPA를 뜯어보면 Entity Manager가 있다.

Spring Data JDBC

더 Simple할 수는 없을까? 엔티티 매니저, lazy loading.. 이런 것들 쓰지 말자. -> DDD

그래서 JDBC API를 이용해서 구현했지만, Repository 개념은 있다.

아마찌의 ORM vs SQL Mapper vs JDBC

JDBC

Persistence Framework

JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발.

이 안에 SqlMapper와 ORM으로 나눌 수 있다.

SQLMapper

Spring JDBC (JDBC Template)

위는 JDBC만을 사용하여 작성한 코드다.

위는 동일한 코드에 대해 JDBC Template을 사용했을 때 코드다.

MyBatis

또한 MyBatis는 동적 쿼리도 지원해준다.

SQL Mapper의 장점

SQL Mapper 단점

ORM

패러다임 불일치 문제

상속 문제

연관 관계 문제

객체 그래프 탐색

비교

정리

0개의 댓글