gony-dev 님의 블로그

[JPA] 자바 ORM 표준 JPA 프로그래밍 - JPA를 사용해야 하는 이유? 본문

Spring/JPA

[JPA] 자바 ORM 표준 JPA 프로그래밍 - JPA를 사용해야 하는 이유?

minarinamu 2024. 7. 29. 00:35

1. SQL 중심적인 개발의 문제점


무한 반복..지루한 코드...

애플리케이션을 개발하다 보면 보통 객체 지향 언어로 개발을 하게 된다. 그리고 데이터베이스는 관계형 DB를 많이 채택한다. 실제로 우리가 실무에서 개발을 진행하면 만들어지는 객체들을 이 관계형 DB에 관리를 하게 된다. 본래는 SQL문을 만들어가면서 CRUD 기능들을 진행해야한다. 이러할 때 문제점은 수많은 SQL문들을 작성해야 하기 때문에 대단히 번거롭고 비효율적인 과정을 거치게 된다. 하지만 관계형 데이터베이스를 사용하면서 통신을 하기 위해서는 SQL에 의존적인 개발을 피하기가 어렵다...

객체와 관계형 데이터베이스의 차이

  1. 상속
    • 상위 항목을 추상화로 두고 밑에 구체적인 객체들을 상속받는다.
  2. 연관관계
    • 객체는 참조를 사용하고, 테이블은 외래 키를 사용한다.
  3. 객체 모델링 저장
    • 객체로 저장할 때는 클래스로, 관계형 DB로 저장할 때는 SQL 쿼리를 작성한다.
  4. 객체 그래프 탐색
    • 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.
    • 모든 객체를 미리 로딩할 수는 없기 때문이다!!

그렇다면, 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없을까?

정답은 JPA!!


2. JPA 소개


ORM

본격적인 JPA를 소개하기 전에 ORM에 대해 알 필요가 있다. ORM은 'Object Relational Mapping'의 약자로 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계하는 매핑 기술을 뜻한다.

JPA

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

  • JDBC API를 통해 데이터베이스와 연동하여 SQL문을 통해 데이터를 관리하고 결과를 반환하면 JPA가 중간에서 데이터베이스와 객체를 매핑한다.2. JPA 동작
    • JPA가 동작하는 기능에는 여러가지 있는데 이를테면 어떠한 entity를 던져주면 특정 개체를 분석하거나 insert sql을 사용하여 테이블을 생성하기도 한다.
    • 또는 저장과 비슷한 맥락으로 조회를 할 때, select sql을 사용하여 생성하여 결과를 조회할 수 있다.

※ JPA를 사용해야 하는 이유?

왜 굳이 JPA를 사용하면서 데이터를 다루어야 하는 걸까? 그 이유는 다음과 같다.

  1. SQL 중심적 개발에서 객체 중심으로 개발하고 있다.
  2. 생산성과 유지보수 측면에서 우수성을 자랑한다.
  3. 패러다임의 불일치 문제를 해결할 수 있다.
  4. 데이터 접근 추상화와 벤더 독립이 가능하다.