블로그 이름

[JPA] Java Persistance API 란 본문

개발/Java

[JPA] Java Persistance API 란

Hide 2025. 2. 25. 00:14

오늘은 JPA에 대해 알아보고자 한다.

JPA는 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 실제 구현이 아닌 구현된 클래스와 매핑을 위해 사용한 프레임워크이다.

 

ORM이란

Object-Relational Mapping의 약자로 애플리케이션 class와 RDB(Relational Database)의 테이블을 매핑한다는 뜻이며 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면 된다.

 

장점

1. SQL문이 아닌 메소드를 통해 DB 조작하여 개발자가 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있다.

2. 쿼리같은 선언문, 할당 등의 부수적인 코드가 줄어들어 코드의 가독성을 높인다.

3. 객체지향 코드 작성 가능. 생산성 증가

4. 매핑정보가 class로 명시되어 ERD를 보는 의존도를 낮출 수 있고 유지보수 및 리팩토링에 유리하다.

5. ORM을 사용하는 경우 쿼리를 수정할 필요가 없다.

 

단점

1. 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우 속도 저하 및 일관성을 무너뜨린다.

2. 복잡하고 무거운 쿼리는 속도를 위해 별도의 튜닝이 필요하여 SQL문을 써야할수도 있다.

 

--

 

JPA(Java Persistence API)

JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계를 이용해 SQL을 생성하고 실행한다. JPA를 사용하여 얻을 수 있는 가장 큰 것은 SQL이 아닌 객체 중심으로 개발할 수 있다는 것이다. 

 

Person p = new Person();

jpa.persist(p);

위처럼 Person .객체를 간단하게 insert 할 수 있다.

 

jap.find(Person.class, p);

위 코드로 person 테이블에을 SELECT 할 수 있다.

 

그리고 여러 테이블을 JOIN 해야할때에는 아래와 같이 사용하면 된다.

Person p = jpa.find(Person.class, personid);

Animal a = p.getTeam();

 

위와 같이 사용하면 

SELECT P.*, A.*

FROM Person P JOIN Animal A ON P.personid = a.personid

해당 쿼리로 변환.

 

이 외에도 다양한 메소드가 있다.