JAVA

[JAVA] JPA란?

응디 2021. 9. 9. 17:35

JPA를 알아보기 전에 ORM을 먼저 집고 넘어가자!

 

1. ORM 이란?

: 객체와 관계형 DB(RDBMS)를 매핑 해주는 것을 의미한다.

: 객체는 ORM을 이용하여 DB에 접근 한다.( 적절한 SQL을 생성하여 DB에 객체를 저장해준다. )

 


2. JPA 란?

: ORM 기술을 구현한 프레임 워크에 대한 표준화 혹은 기준을 의미한다

 

ORM 기술을 구현하기 위해 여러가지 프레임워크들이 등장하였는데
각각의 프레임 워크들(Hibernate, CoCobase 등) 은 같은 기능을 해도
각각 필드와 메소드들이 다를 수 있으므로 이러한 것들을 기준을 정해 하나로 통합해주는 것이 JPA 이다.

예를들어,
같은 기능을 정의 하는 메소드가 Hibernate에서는 function dog() , CoCoBase에서는 function cat()으로
정의 되어 있을때 개발자가 ORM 프레임 워크를 변경 해야 할때 수정 할 부분이 많을 것이다.

그때 JPA가 이 기능은 통일해서 function animal()로 구현하라고 강제로 약속?을 시킨다.

 

 

3. JPA의 장단점

 

< 장점 >

  • JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달(저장) 하므로 개발자가 SQL을 짤 필요가 없음
  • 만약 기존 Mysql을 사용하다 PostgreSQL로 변환한대도 쿼리를 새로 짜거나 수정 할 필요가 없음
  • 유지보수, 리팩토링에 유리하다.

 

< 단점 >

  • 프로젝트 규모가 크고 복잡하여 설계가 잘못되면 속도 저하, 일관성을 무너뜨릴수 있음
  • 복잡하고 무거운 쿼리는 속도를 위해 별도의 튜닝이 필요하다.

결국 JAVA 에서 ORM을 사용할 때는 JPA 인터페이스에 맞추어 구현되어 있는 프레임워크(Hibernate, CoCoBase, Toplink 등)를 골라서 사용하면 됨 

'JAVA' 카테고리의 다른 글

[JAVA] JPA 애플리케이션 개발  (0) 2021.11.02
[JAVA] JPA 프로젝트 생성(Maven) + 기본설정  (0) 2021.11.02
[JAVA] build  (0) 2021.03.24
[JAVA] 인터페이스  (0) 2021.03.24
[JAVA] 추상화  (0) 2021.03.24