본문 바로가기
학습/Spring

[java] JDBC / MyBatis / JPA / Spring-Data-JPA

by KKambi 2019. 12. 14.

JDBC

1. 자바에서 DB와의 커넥션 / 통신을 도와주는 자바 라이브러리

2. JDBC Class는 자바 패키지 中 java.sql과 javax.sql에 포함되어 있음

3. Node.js에서 MySQL과 연결을 도와주는 `mysql2` 모듈과 비슷한 것 같다.

4. 즉, SQL쿼리를 직접 소스코드 안에 포함시켜야 한다.

 

 

MyBatis

1. SQL Mapper

2. SQL쿼리를 매핑하여 쿼리를 쉽게 조합해주는 것 같음 (정확하지 않아...)

3. 커넥션 풀의 설정 등을 도와줌

4. SQL Injection 방지

5. 쿼리문을 프로그램과 분리하여, 별도의 XML에 저장

  • 서비스 로직 코드와 쿼리의 분리
  • 반복적인 쿼리문의 재사용

 

JPA (Java Persistence API)

1. ORM (Object Relational Mapping)

2. 쿼리가 아닌 객체 매핑

3. 패러다임의 불일치 해결

- 관계형 데이터베이스 = 어떻게 데이터를 저장할지에 초점이 맞춰진 기술

- 객체지향 = 메세지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술

- 개발자가 객체지향적으로 프로그래밍하면, JPA가 RDB에 맞게 SQL을 대신 생성해서 실행

- SQL에 종속적인 개발을 벗어날 수 있음

 

 

Spring Data JPA

1. JPA는 인터페이스로서 자바 표준명세서

2. 인터페이스이므로 사용할 구현체가 필요 (Hibernate / Eclipse Link 등)

3. 구현체를 좀 더 쉽게 사용하고자 Spring Data JPA로 한 단계 더 감싸놓았다

JPA <- Hibernate <- Spring Data JPA

4. 장점

- 구현체 매핑을 지원하므로, 구현체를 교체하기 쉽다

- Spring Data의 하위 프로젝트들은 공통의 CRUD 인터페이스를 갖고 있으므로, DB를 교체하기 쉽다

ex) Spring Data JPA / Spring Data Redis / Spring Data MongoDB 등은 save(), findAll(), findOne() 등을 인터페이스로 갖고 있음

'학습 > Spring' 카테고리의 다른 글

[spring] DAO와 Repository / DTO / VO  (0) 2020.02.02
[java] Gradle(그레이들)이란?  (0) 2020.01.05
[java] Lombok이란?  (0) 2019.12.14
[java] jar, war, ear  (0) 2019.12.14
[spring] Annotation 내 classpath의 기본경로  (0) 2019.12.14

댓글