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 |
댓글