코드와이
[웹] JPA 본문
JPA
SQL Mapper
- SQL 문을 직접 작성해서 DB에 접근합니다.
- Mybatis, jdbcTemplate
ORM(Object Relational Mapping, 객체 관계 매핑 )
- 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계합니다.
- 객체를 통해 간접적으로 DB 데이터를 다룹니다.
- 객체와 DB의 테이블을 자동으로 매핑시킵니다.
- JPA, Hibernate
JPA(Java Persistence API)
자바 ORM 기술에 대한 표준 명세로, 자바에서 제공하는 API 입니다. 자바 어플리케이션에서 관계형 데이터베이스 사용을 정의한 인터페이스입니다. 자바 클래스와 관계형 DB 테이블을 매핑합니다. spring-data-jpa 는 스프링에서 제공하는 프레임워크입니다.
- 데이터를 객체지향적으로 관리할 수 있기 때문에 개발자는 비즈니스 로직에 집중할 수 있고 객체지향적인 개발이 가능합니다.
- 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL 을 생성합니다.
- 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language) 를 지원합니다.
- JPA 는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇가지 기법을 제공하는데 이것을 잘 활용하면 SQL 을 직접 사용하는 것과 유사한 성능을 얻을 수 있습니다.
JPA 동작 흐름
JPA 는 자바 어플리케이션과 JDBC 사이에 위치해 있다. 개발자가 직접 JDBC 를 사용하지 않고 JPA 를 사용하면 JPA 내부에서 JDBC API 를 호출하여 DB 에 접근합니다.
- insert
- DAO에서 객체를 저장하고 싶을 때 개발자는 JPA에 객체를 넘깁니다.
- JPA 가 객체를 분석하고 SQL 문을 생성합니다.
- JDBC API 를 사용해서 DB 에 접근합니다.
- find
- 객체의 primary key 를 JPA 에 넘깁니다.
- JPA 가 매핑되는 객체를 분석해서 SELECT SQL 문을 생성합니다.
- DB 에 접근해서 결과값을 가져옵니다.
- 결과를 객체에 모두 매핑시킵니다.
'웹' 카테고리의 다른 글
[웹] Elasticsearch 보안 설정 및 적용 (0) | 2021.10.09 |
---|---|
[웹] Elasticsearch 기본 예제 (0) | 2021.09.29 |
[웹] Spring(3) Interceptor (0) | 2021.08.07 |
[웹] JPA @GeneratedValue(strategy = GenerationType.IDENTITY) (0) | 2021.07.13 |
[웹] Vue.js(3) (0) | 2021.05.13 |