Programming/JPA

[JPA] JPA 란?

지윤이글스 2022. 9. 25. 20:12

JPA (Java Persistence API) 

JPA 는 java 진영의 ORM 기술의 표준이다.

라고하면 무슨말인지 모르겠다. ORM 이 뭔지부터 살펴보자 !

 

ORM = Object-Relational Mapping

Object(객체) 와 Relational(관계형 데이터베이스)를 매핑(연결)한다는 뜻이다. 

ORM framework 는 객체와 테이블을 매핑해서 패러다임의 불일치를 개발자대신 해결해준다. 

객체는 객체대로 생성하고, 데이터베이스는 데이버베이스에 맞도록 설계 가능케 해준다. 

개발자는 일일이 SQL 문을 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크 이다. 

 

여기서잠깐! 패러다임불일치가 뭔가요? 

--> 추상화, 상속, 다형성과 같은 특성을 가진 객체지향과 이러한 특성이 없는 데이터베이스는 서로 기능과 표현방법이

모두 다르다. 이것을 객체와 관계형DB 의 패러다임불일치 문제라고 한다. 

 

동작구조

#JPA의 역할 

1. 엔티티 분석

2. INSERT SQL 생성

3. JDBD API 사용

4. 패러다임 불일치 해결 

 

#JPA 장점

1. 특정 구현기술에 대한 의존도를 줄일 수 있다.

2. 다른 구현기술로 손쉽게 이동할 수 있다.

 

#JPA 사용이유

1. 생산성 

    1) 자바 컬렉션에 객체를 저장하듯이 JPA 에게 저장할 객체만 전달하면 JPA 가 대신 처리해준다. 

ex> jpa.persist(member); // 저장

Member member = jpa.find(memberId); //조회 

    2) 반복적인 코드와 CRUD(Create, Remove, Update, Delete)용 SQL 을 개발자가 직접 작성하지 않아도 된다.

    3) CREATE TABLE 과 같은 DDL 문을 자동으로 생성해줄 수 있다.

2. 유지보수

    1) SQL 을 직접 다루면 엔티티에 필드를 하나만 추가해도 그에 해당하는 SQL과 결과를 매핑하기 위한 JDBC API 코드를 모두 

변경해야한다. JPA 를 사용하면 JPA 과 이런과정을 대신 해준다. 

2) JPA가 패러다임의 불일치 문제를 해결하므로 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계할 수 있다.