meleu.log
로그인
meleu.log
로그인
내일배움캠프 Spring 48일차(월) TIL
Skadi
·
2024년 3월 4일
팔로우
0
Spring
TIL
내일배움캠프
0
스파르타내일배움캠프
목록 보기
46/95
스프링 JPA
1. ORM의 탄생 배경
DB 탄생 후 Java 앱과 연동을 위해 JDBC 이 탄생했다.
그렇다면 왜 탄생 배경을 알아야 할까
- 내가 입사할 회사에 JPA 가 적용안된 프로젝트가 있을 수 있다! (대기업 및 금융)
- DB가 탄생한 후 수십년 후에야 ORM 이 나왔고 그뒤로 수년 후에야 JPA 그리고 SpringData JPA가 나왔습니다.
2. JDBC
Java Database Connectivity
문장 그대로 Java 앱과 DB 를 연결시켜주기 위해 만들어진 기술이다.
그렇기 때문에 JPA 도 이 기술을 사용하여 구현되어 있다.
JDBC Driver Manager 흐름
Connection(연결) 을 생성하여 쿼리를 요청할 수 있는 상태를 만들어주고
Statement(상태) 를 생성하여 쿼리를 요청하게 해주고
esultSet(결과셋) 을 생성해 쿼리 결과를 받아올 수 있게 해줍니다.
3. QueryMapper
JDBC 의 여러 문제로 QueryMapper 이 탄생
JDBC 로 직접 SQL을 작성했을때의 문제
SQL 쿼리 요청시 중복 코드 발생
DB별 예외에 대한 구분 없이 Checked Exception (SQL Exception) 처리
Connection, Statement 등.. 자원 관리를 따로 해줘야함
안해주면 메모리 꽉차서 서버가 죽음
문제 해결을 위해 SQL Mapper & ORM 등장
SQL Mapper (QueryMapper)
SQL 문과 객체(Object)의 필드를 매핑하여 데이터를 객채화
ORM
JPA, Hibernate가 있음 추후 다시 정리
JDBC Template
SQL Mapper 첫번째 주자로 JDBCTemplate 탄생
쿼리 수행 결과와 객채 필드 매핑
RowMapper 로 응답필드 매핑코드 재사용
Connection, Statement, ResultSet 반복적 처리 대신 해줌
But, 결과값을 객체 인스턴스에 매핑하는데 여전히 많은 코드가 필요함
MyBatis
SQL Mapper 두번째 주자로 MyBatis 탄생
반복적인 JDBC 프로그래밍을 단순화
SQL 쿼리들을 XML 파일에 작성하여 코드와 SQL 을 분리!
But, 결국 SQL을 직접 작성하는것은 피곤하다…(DB 기능에 종속적) 😫
But, 테이블마다 비슷한 CRUD 반복, DB타입 및 테이블에 종속적이다.
Skadi
팔로우
이전 포스트
내일배움캠프 Spring 47일차(목) TIL
다음 포스트
내일배움캠프 Spring 49일차(화) TIL
0개의 댓글
댓글 작성