본문 바로가기

Back-end/JPA

[JPA] JPA를 사용하는 이유

JPA를 사용하는 이유는 객체지향 프레임워크이기 때문입니다.

JPA를 사용하면 비지니스 로직RDBMS에 의존하는 것이 아니라, 자바 코드로 표현될 수 있기 때문입니다.

그로 인해서 생산성이 높아진다고 볼 수 있습니다.

 

또, JPA는 JPQL로 SQL를 추상화하기 때문에 RDBMS Vendor에 관계없이 동일한 쿼리를 작성해서 같은 동작을 기대할 수 있다는 장점도 가지고 있습니다.

이는 Database dialect를 지원하기 때문에 갖는 장점입니다.

 

 

사용 이유

  1. 생산성
    JPA를 사용하면 자바 컬렉션에 저장하듯이 JPA에게 저장할 객체를 전달하면 된다.
    지루하고 반복적인 코드를 개발자가 직접 작성하지 않아도 되며, DDL문도 자동으로 생성해주기 때문에 데이터베이스 설계 중심을 객체 설계 중심으로 변경할 수 있다.

  2. 유지보수
    필드를 하나만 추가해도 관련된 SQL과 JDBC 코드를 전부 수행해야 했지만 JPA는 이를 대신 처리해주기 때문에 개발자가 유지보수 해야하는 코드가 줄어든다.

  3. 패러다임의 불일치 해결
    JPA는 연관된 객체를 사용하는 시점 SQL을 전달할 수 있고, 같은 트랜잭션 내에서 조회할 때 동일성도 보장하기 때문에 다양한 패러다임의 불일치를 해결한다.

  4. 성능
    애플리케이션과 데이터베이스 사이에서 성능 최적화 기회를 제공한다.
    같은 트랜잭션 안에서는 같은 엔티티를 반환하기 때문에 데이터베이스와의 통신 횟수를 줄일 수 있다.
    또한, 트랜잭션을 commint하기 전까지 메모리에 쌓고 한번에 SQL를 전송한다.

  5. 데이터 접근 추상화와 벤더 독립성
    RDB는 같은 기능이라도 벤더마다 사용법이 다르기 때문에 처음 선택한 데이터베이스에 종속되고 변경이 어렵다.
    JPA애플리케이션과 데이터베이스 사이에서 추상화된 데이터 접근을 제공하기 때문에 종속이 되지 않도록 한다.
    만약 DB가 변경되더라도 JPA에게 알려주면 간단하게 변경이 가능하다.


    참고: https://girawhale.tistory.com/119

'Back-end > JPA' 카테고리의 다른 글

[JPA] Fetch Type란?  (0) 2021.11.22
[JPA] N+1 문제가 발생하는 이유와 해결 방법  (0) 2021.11.22
[JPA] JPA Propagation 전파 단계  (0) 2021.11.22
[JPA] JPA 영속성 컨텍스트의 이점 5가지  (0) 2021.11.22
[JPA] JPA란?  (0) 2021.11.17