코드와이
JPA란 본문
JPA
ORM(Object-relational Mapping)
- 개념
- 객체를 RDB 테이블에 자동으로 영속화 해주는 것
- 장점
- SQL문이 아닌 Method를 통해 DB를 조작할 수 있다.
- 객체지향적 접근만 고려하면 되기 때문에 생산성 증가
- 단점
- 프로젝트 규모가 크고 복잡하여 설계가 잘못된 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
- ORM vs SQL Mapper
- ORM
- DB 데이터 <- mapping -> Object 필드
- 객체를 통해 간접적으로 DB 데이터를 다룬다.
- 객체와 DB의 데이터를 자동으로 매핑해준다.
- JPA, Hibernate
- SQL Mapper
- SQL <- mapping -> Object 필드
- SQL문으로 직접 DB를 조작한다.
- MyBatis, jdbcTemplate
- ORM
JPA(Java Persistence API)
- Java 진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음
- 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
- 동작과정
출처 : https://livenow14.tistory.com/70 - JPA는 애플리케이션과 JDBC 사이에서 동작한다.
-
- 개발자가 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
- 즉 개발자가 직접 JDBC API를 사용하는 것이 아니다.
- 왜 사용하는가?
- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성
- JPA를 사용하는 것은 마치 Java Collection에 데이터를 추가/삭제하는 것처럼 사용할 수 있게 만든 것이다.
- 간단한 CRUD
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberId)
- 수정 : member.setName("AAA")
- 삭제 : jpa.remove(member)
- 수정이 굉장히 간단하다
- 객체를 변경하면 자동으로 DB에 UPDATE된다.
- 유지보수
- 기존엔 필드 변경 시 모든 SQL을 수정해야 했다면 JPA를 사용함으로써 필드만 추가하면 된다.
Hibernate
- JPA의 구현체의 한 종류
- JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용한다.
JPA(Spring data jpa)
- Spring framework에서 jpa를 편리하게 사용할 수 있도록 지원하는 것
- Repository라는 인터페이스를 작성하면 실행 시점에 구현 객체를 동적으로 생성해서 주입
- 이 Repository는 정해진 규칙을 인터페이스를 선언하기만 해도 자동으로 내부에서 구현체를 만들어 동작시켜준다.
- findAll(), save(), delete()
Reference
'웹' 카테고리의 다른 글
[웹] 스프링 프레임워크 (0) | 2021.11.29 |
---|---|
[웹] Elasticsearch 보안 설정 및 적용 (0) | 2021.10.09 |
[웹] Elasticsearch 기본 예제 (0) | 2021.09.29 |
[웹] JPA (0) | 2021.08.08 |
[웹] Spring(3) Interceptor (0) | 2021.08.07 |