JAVA

[JPA] JPA란 무엇인가?

로춘남 2021. 12. 21. 14:15
728x90

JPA(Java Persistence API) : 자바 진영의 ORM 기술 표준

그렇다면 ORM은? (Object Relational Mapping) 

ORM은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻. ORM프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다.

 

왜 JPA를 사용해야 하는가?

1) 생산성

JPA를 사용하면 다음 코드처럼 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면 된다. INSERT SQL을 작성하고 JDBC API를 사용하는 지루하고 반복적인 일은 JPA가 대신 처리해준다.

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

그렇기때문에 지루하고 반복적인 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다. 또한 JPA에는 Create table 같은 DDL문을 자동으로 생성해주는 기능도 있다. 이런 기능들을 사용하면 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전시킬 수 있다.

 

2) 유지보수

SQL을 직접 다루면 엔티티에 필드를 하나만 추가해도 관련된 등록, 수정, 조회 SQL과 결과를 매핑하기 위한 JDBC API코드를 모두 변경해야했다. 반면에 JPA를 사용하면 이런 과정을 JPA가 대신 처리해주므로 필드를 추가하거나 삭제해도 수정해야 할 코드가 줄어든다. 따라서 개발자가 작성해야 했던 SQL과 JDBC API코드를 JPA가 대신 처리해주므로 유지보수해야 하는 코드수가 줄어든다.

 

3) 패러다임의 불일치 해결

JPA는 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제를 해결해준다.

 

4) 성능

JPA는 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공한다. JPA는 애플리케이션과 데이터베이스 사이에서 동작한다. 이렇게 애플리케이션과 데이터베이스 사이에 계층이 하나 더 있으면 최적화 관점에서 시도해 볼 수 있는 것들이 많다.

 

5) 데이터 접근 추상화와 벤더 독립성

관계형 데이터베이스는 같은 기능도 벤더마다 사용법이 다른 경우가 많다. 단적인 예로 페이징 처리는 데이터베이스마다 달라서 사용법을 각각 배워야 한다. 결국, 애플리케이션은 처음 선택한 데이터베이스 기술에 종속되고 다른 데이터베이스로 변경하기는 매우 어렵다.

 

※ 마이바티스와 차이점은?

마이바티스나 스프링 JDBCTemplate는 보통 SQL 매퍼라고 부른다. 이것은 이름 그대로 객체와 SQL을 매핑한다. 따라서 SQL과 매핑할때 객체만 지정하면 지루하게 반복되는 JDBC API사용과 응답 결과를 객체로 매핑하는 일은 SQL매퍼가 대신 처리해준다. 이런 SQL 매퍼가 편리하긴 하지만 결국 개발자가 SQL을 직접 작성해야하므로 SQL에 의존하는 개발을 피할 수가 없다. 반면에 ORM은 객체와 테이블을 매핑만하면 ORM 프레임워크가 SQL을 만들어서 데이터베이스와 관련된 처리를 해주므로 SQL에 의존하는 개발을 피할 수 있다.


출 처 : 자바 ORM 표준 JPA 프로그래밍

728x90

'JAVA' 카테고리의 다른 글

[JPA] JPA 기본 객체 매핑  (0) 2022.01.20
[JPA] JPA 기본 시작  (0) 2021.12.21
[Java] Java 8 / Java 11 차이 자바  (0) 2021.11.01
[Java] enum의 개념과 사용법  (0) 2021.10.19
[Spring] IoC, DI, 컨테이너  (0) 2021.10.19