티스토리 뷰

Server/Spring

[JPA] 간략한 설명

SdardewValley 2021. 10. 24. 22:00
반응형

Java Application은 JDBC API를 사용해서 SQL을 데이터베이스에 전달한다.

 

 

SQL을 직접 사용할 때 단점

1. 작성해야 하는 코드가 많다

 

데이터베이스는 데이터 중심의 구조를 가지므로, 객체를 데이터베이스에 바로 저장하거나 조회할 수 없다. 따라서  개발자가 객체지향 애플리케이션과 데이터베이스 중간에서 SQL과 JDBC API를 사용해서 변환 작업을 직접 해주어야 한다.

 

 

2. SQL에 의존적이게 된다.

 

객체에 다른 정보를 저장해야 하면 쿼리도 변경을 해야한다. 변경된 사항이 있으면 DAO의 SQL을 수정해야 한다. 이렇게 되면 Entity와 의존관계가 강해진다. CRUD 코드와 SQL을 변경해야 하는 단점이 있다.

 

  • 계층 분할이 어려움
  • 엔티티의 신뢰성이 하락
  • SQL에 의존적

 

SQL 직접 사용의 단점 해결: JPA의 사용

JPA를 사용하면 개발자가 직접 SQL을 작성하지 않고 JPA가 제공하는 API를 사용하면 된다. 그러면 JPA가 SQL을 생성하여 데이터베이스에 전달한다.

 

JPA를 사용함으로써, 객체 모델링을 사용하면서도 데이터베이스와 객체 지향적 언어의 패러다임 불일치 문제를 해결할 수 있다.

 

JPA가 제공하는 CRUD API

  • CREATE: persist()
  • READ: find()
  • UPDATE: find(), setter

 

패러다임 불일치

https://sdardew-valley.tistory.com/entry/SpringBoot-JPA%EB%A5%BC-%ED%86%B5%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%82%AC%EC%9A%A9

 

[SpringBoot] JPA를 통한 데이터베이스 사용 - 개념 정리

패러다임 불일치 문제 관계형 데이터베이스: 어떻게 데이터를 저장할지에 초점 객체지향 프로그래밍 언어: 기능과 속성을 한곳에서 관리 관계형 데이터베이스와 객체지향 프로그래밍 언어의

sdardew-valley.tistory.com

위의 링크에 들어가 보면 자세하게 정리되어 있다.

 

객체와 관계형 데이터베이스는 지향하는 목적이 다르므로 둘의 기능과 표현 방법이 차이가 난다. 이를 패러다임 불일치 문제라고 한다.

 

이런 문제로 객체를 테이블에 저장하는데는 한계가 있다.

 

 

지연 로딩

 

JPA는 연관된 객체를 사용하는 시점에 적절한 SELECT API를 실행한다.

 

객체를 사용하는 시점까지 데이터베이스 조회를 미루는데 이를 지연로딩이라고 한다.

 

비교

 

데이터 베이스는 기본 키의 값으로 튜플(row, record)를 비교한다.

 

객체는 동일성 비교, 동등성 비교가 있다.

  • 동일성 비교(==): 객체의 주소값을 비교
  • 동등성 비교(equals): 객체 내부의 값을 비교

 

JPA는 같은 트랜잭션 일 때, 같은 객체가 조회되는 것을 비교한다.

 

JPA (Java Persistence API)

Java 진영의 ORM 기술 표준

 

ORM (Object Relational Mapping)

객체와 관계형 데이터베이스를 연결하는 것

ORM 프레임워크는 객체와 테이블을 매핑하여 패러다임 불일치 문제를 해결해준다.

 

객체를 데이터베이스에 저장, 조회 등의 작업을 할 때 JPA는 적절한 쿼리를 생성하여 데이터베이스 작업을 한다.

 

개발자는 Java 객체 모델링만 하고, 데이터베이스는 그에 맞게 모델링을 한다. 그리고 매핑 방법만 ORM 프레임워크에 설정을 하면 된다. 

 

 

JPA를 사용의 장점

 

  • 생산성
    • SQL 작성 없이 JPA에 객체를 전달만 하면 됨

 

  • 유지보수
    • 유지보수할 코드 수가 감소

 

  • 패러다임 불일치 해결

 

  • 성능
    • 애플리케이션과 데이터베이스 사이의 성능 최적화 기회 제공

 

  • 데이터 접근 추상화와 벤더 독립성
    • 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 함

 

  • 표준
    • 표준기술 이기 때문에 다른 기술로 변경이 손쉬움
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함