내일배움캠프 Spring 48일차(월) TIL

Skadi·2024년 3월 4일
0

스프링 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타입 및 테이블에 종속적이다.

0개의 댓글