[SpringBoot]JPA 이해하기

손채윤·2024년 2월 1일
post-thumbnail

1.JPA란?

JPA는 Java Persistence(영속성) API이다. 여기서 Persistence란, "영속성"을 의미하며 데이터가 사라지지 않고 오랫동안 지속됨을 의미한다.

즉, 자바 프로그램을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스를 제공해 주는 것이다.

2.JPA의 동작

-JPA는 애플리케이션과 JDBC 사이에서 동작한다.

-JPA는 JDBC API를 사용하여 데이터베이스와 데이터를 주고받는다.

3.JPA를 사용하는 이유

기존의 개발 방식은 SQL 중심적인 개발이었다.
JPA를 사용하면 객체 중심으로 애플리케이션 개발이 가능하다.

생산성(CRUD)
JPA를 사용하면 기본적으로 생산성이 높아진다. JDBC 방식의 경우 SQL 쿼리문을 직접 작성해야 데이터베이스에 접근이 가능하다.
하지만, JPA는 쿼리문을 별도로 작성할 필요가 없다. 다음과 같이 간단한 메서드를 통해 CRUD가 가능하다.

  • 저장 : jpa.persist(member)
  • 조회 : Member member = jpa.find(memberId)
  • 수정 : member.setName("변경할 이름")
  • 삭제 : jpa.remove(member)

유지보수
기존에는 엔티티 클래스의 필드가 변경되면 모든 SQL을 수정해야 했다.
JPA에서는 쿼리를 직접 작성하지 않기 때문에 필드가 변경되더라고 매핑 정보만 잘 연결하면 SQL문은 자동으로 작성된다.

패러다임의 불일치 문제 해결
상속, 연관관계, 객체 그래프 탐색, 비교 등의 설계 차이로 인해 발생하는 패러다임의 불일치 문제를 해결한다.

  • 객체는 상속 구조를 만들 수 있으며, 다형성 구현이 가능하지만 관계형 데이터베이스의 테이블은 상속이라는 개념이 존재하지 않는다.
  • 객체는 참조를 통해 관계를 표현하며 방향을 가지고 있으나, 관계형 데이터베이스는 외래키를 통해 관계를 표현하며, 방향이 존재하지 않는다. 또한 다대다 관계 문제를 해결하기 위해 조인을 사용한다.
  • 이 외에도 다양한 패러다임 불일치 문제가 존재.



이와 같이 객체와 데이터베이스는 서로 다른 목적을 가지고 설계되었기 때문에 매핑하는 데 있어 여러 문제가 발생한다. 하지만 JPA를 사용하면 이러한 문제를 모두 해결할 수 있다:)

0개의 댓글