JPA란?

Younseo·2022년 10월 6일
0

Spring

목록 보기
4/4

1. JPA(Java Persistence API)란?

현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이라고 할 수 있다.
실제로 동작하는 것이 아닌, 구현된 Class와 mapping해주기 위해 사용되는 frame-work이다.
JPA 인터페이스를 구현한 대표적인 오픈 소스로는 Hibernate가 있다.

2. ORM(Object-Relational Mapping)이란?

객체 관계 매핑이라는 뜻으로, 객체는 객체대로 RDB는 RDB대로 설계한다.
ORM 프레임워크가 중간에서 연결(mapping)해준다.
어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것을 의미한다.

3. JPA의 작동

(1) JPA의 동작과정


JPA는 JAVA Application과 JDBC 사이에서 동작
JPA를 사용하면, JPA 내부의 JDBC API를 사용하여 DB와 통신 (우리가 직접 JDBC API를 사용하는 것이 아니다.)

(2) JPA의 저장과정


ex) MemberDAO에서 객체를 저장하고 싶을 때
개발자 : JPA에 Member 객체를 넘긴다.
JPA : member entity를 분석 - insert SQL을 생성 - JDBC API를 사용하여 SQL을 DB로 전송

(3) JPA의 조회과정


ex) member 객체를 조회하고 싶을 때
개발자 : member의 pk값을 JPA에 넘겨줌
JPA : entity의 mapping 정보를 바탕으로 적절한 Select SQL을 생성 - JDBC API를 사용하여 SQL을 DB로 전송 - DB로부터 결과를 반환 - ResultSet를 객체에 모두 mapping

4. JPA를 왜 사용해야 할까?

  1. SQL 중심적인 개발에서 객체 중심으로 개발
  2. 생산성
    (1) 간단한 CRUD
    저장 : jpa.persist(member)
    조회 : Member member = jpa.find(memberID)
    수정 : member.setName(”변경할 이름”)
    삭제 : jpa.remove(member)
    (2) 수정이 간단함 (객체를 변경하면 db에 update된 query가 나간다.
  3. 유지보수
    기존에는 필드 변경시 모든 SQL을 수정해야 했다면, JPA는 필드만 추가하면 된다. SQL은 JPA가 처리하기 때문에 손 댈 것이 없다.

5. JPA annotation의 종류

Entity NameExplanation
@Entityclass를 table과 매핑한다고 JPA에게 알려주는 기능. 해당 어노테이션이 붙은 클래스를 entity class라고 한다.
@Tableentity class에 mapping할 테이블 정보를 알려준다. 이 이름을 생략하면, 클래스 이름을 테이블 이름으로 매핑한다.
@Identity class의 field
@Column

Reference

[1] https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
[2] https://dbjh.tistory.com/77
[3] https://mkil.tistory.com/526

0개의 댓글