2023. 5. 21. 23:45ㆍJAVA(자바)
1. JPA와 MyBatis
ㄱ. 특징
(1) 정의 및 배경
- 관계형 데이터베이스를 이용하는 프로젝트에서 객체 지향 프로그래밍(object-oriented programming: OOP)을 구현하기 위해 나온 해결책 중 하나가 바로 JPA라는 자바 표준 ORM 기술이다.
- 쿠팡, 우아한 형제들, NHN 등 자사 서비스를 개발하는 곳에서는 Spring과 JPA를 전사 표준으로 사용하고 있다.
(2) JPA와 MyBatis 차이
- JPA는 ORM이고, MyBatis나 iBatis는 SQL Mapper이다.
ORM | JPA |
쿼리를 매핑 | 객체를 매핑 |
JPA가 점점 더 많이 사용되고 있으므로 JPA를 알아두는 것이 매우 좋습니다!
(3) SQL Mapper를 사용하였을 때의 문제점
◈ 반복 작업
- 실제 현업에서 사용하는 테이블은 무수히 많은데 그만큼의 테이블만큼 몇배의 SQL을 만들고 유지보수 해야한다.
◈ 패러다임 불일치
- 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이다.
- 객체지향 언어는 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술이다.
- 관계형 데이터베이스로 객체 지향을 표현하기는 쉽지 않다.
- 객체를 데이터베이스에 저장하려고 하니 여러 문제가 발생한다. 이를 패러다임 불일치라고 한다.
※ Child와 Parent은 부모-자식 관계
//데이터베이스가 추가되지 않은 코드
Child child = findChild();
Parent parent = child.getParent();
//데이터베이스 추가 코드
Child child = childDao.findChild();
Parent parent = parentDao.findParent(child.getParentId());
- Child 따로 Parent 따로 조회하게 된다. 객체 모델링을 데이터베이스로는 구현할 수 없고 Child와 Parent 의 관계를 알 수가 없다.
- Spring Data JPA, Spring Data Redis, Spring Data MongoDB 등 Spring Data의 하위 프로젝트들은 save(), findAll, findOne() 등을 인터페이스로 갖고 있다. 그렇기 때문에 저장소가 교체되어도 기본적인 기능은 변경하지 않아도 됨!
ㄴ. 구현체
(1) 정의
- 인터페이스인 JPA를 사용하기 위해서는 구현체가 필요한데 대표적으로 Hibernate, Eclipse, Link 등이 있다.
- 구현체들을 좀 더 쉽게 사용하고자 추상화시킨 것이 Spring Data JPA라는 모듈이다. Hibernate를 쓰는 것과 Spring Data JPA를 쓰는 것 사이에는 큰 차이는 없지만 스프링 진영에서는 Spring Data JPA를 개발했고 권장하고 있다.
(2) Spring Data JPA의 장점
① 구현체 교체의 용이성 => Spring Data JPA 내부에서 구현체 매핑을 지원하기 때문② 저장소 교체의 용이성 => Spring Data의 하위 프로젝트들은 기본적인 CRUD의 인터페이스가 같기 때문에 의존성만 교체하면 되고 기본적인 기능은 변경하지 않아도 된다.
'JAVA(자바)' 카테고리의 다른 글
[Java Springboot] Hikari와 Mybatis (0) | 2023.02.19 |
---|---|
[JAVA] JAVA Spring boot로 웹 개발 해보기 Start (0) | 2023.02.11 |
DB, Web Server 통합 개발 환경(IDE) (2) | 2023.02.01 |
[JAVA 기초부터 훑어보기 PART2]07. 클래스와 객체 (0) | 2023.01.18 |
[JAVA 기초부터 훑어보기]06. 조건과 반복 (0) | 2023.01.16 |