늦은 프로그래밍 이야기
JPA 본문
JPA
ORM
- Object Relational Mapping (객체 관계 매핑)
- 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계 후 ORM 프레임워크가 매핑.
- 패러다임 불일치에서 기인한 문제들과, 반복적이고 번거로운 Application 단에서의 쿼리 작업을 줄여주기 위함.
EJB
- 과거의 자바 표준 (Entity Bean)
- 과거의 ORM
- 문제 : 코드가 지저분하다, API의 복잡성이 높다, 속도가 느리다
JPA
- Java Persistence API
- 자바 ORM 기술에 대한 표준 명세, 인터페이스의 모음
문제해결
- 쿼리를 자동으로 만들어 준다.
- Application 계층에서 SQL 의존성을 줄여서 번거로운 작업이 단축된다.
- 패러다임의 불일치를 해결.
- 방언도 지원해준다.
JPA 동작 과정

- JPA는 Java Application과 JDBC 사이에서 동작한다
- 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
저장

- MemberDAO에서 객체를 저장하고 싶을 때
- JPA에 Member 객체를 넘긴다.
- Member 엔티티를 분석한다.
- INSERT SQL을 생성한다.
- JDBC API를 사용하여 SQL을 DB에 날린다.
조회

- Member 객체를 조회하고 싶을 때
- Member의 pk 값을 JPA에 넘긴다.
- 엔티티의 매핑 정보를 바탕으로 SELECT SQL을 생성한다.
- JDBC API를 사용하여 SQL을 DB에 날린다.
- DB로부터 결과를 받아온다.
- 결과(ResultSet)를 객체에 모두 매핑한다.
- 쿼리를 JPA가 만들어주기 때문에 Object와 RDB 간의 패러다임 불일치를 해결할 수 있다.
출처: https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
[JPA] JPA란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'내일배움캠프 > Spring' 카테고리의 다른 글
| Annotation (1) | 2022.12.21 |
|---|---|
| UnsatisfiedDependencyException 에러 해결 (0) | 2022.12.16 |
| Spring MVC (0) | 2022.12.07 |
| Database, SQL (0) | 2022.12.06 |
| Layered Architecture (계층형 구조) (0) | 2022.12.06 |