ORM, Hibernate 그리고 JPA 살짝 짚고 넘어가겠습니다

시나브로·2021년 5월 1일
0

JPA

목록 보기
1/12
post-thumbnail

어느 날, 술마시면서 JPA에 대해 얘기하는 도중 들어온 질문

JPA는 알겠는데 근데 그럼 Hibernate는 뭐야? 같은건가? ORM은? 차이가 뭐야?

그 질문에 아무도 명쾌하게 설명하지 못하고 다른 얘기로 넘어갔다는 이야기🙃

JPA 개념알겠고, 공부하는건 좋은데 근본적으로 개념은 알고 공부하자해서 간단하게 짚고 넘어가려 합니다.


🍺 ORM이 뭔데

ORM은 Object-Relational Mapping으로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 프로그래밍 기법이다

  • ORM은 객체와 관계형 DB를 매핑해주는 프로그래밍 기법으로 전체를 아우르는 개념이었다.


ORM은 알겠는데 왜 쓰는거지


장단점이 있는데, 간단하게만 정리하자면 다음과 같다
  • 장점
    • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다
    • 재사용 및 유지보수의 편리성이 증가한다

  • 단점
    • 프로젝트의 복잡성이 크면 구현하는 난이도가 상승
    • 잘못 구현한 경우 성능이 저하
      • 이 부분은, 그렇게 큰 차이가 없다고 하는 의견도 많다



 개인적으로 관계형에 종속되지 않고 객체 지향적으로 설계를 할 수 있다는 것이 가장 큰 장점이라고 생각한다.
 객체 지향와 관계형은 상속, 연관관계, 데이터 타입부터가 다른데, 중심이 관계형에 얽메이지 않고 객체 지향적으로 설계를 할 수 있다는 것은 아무도 무시할 수 없을 장점일 것이다.



🍻 JPA는 뭔데

Java Persistence API의 약어로 자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는 자바 API이다.


JPA는 표준 인터페이스다


  • JPA는 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것이다.
  • JPA는 특정 기능을 하는 라이브러리가 아니다.
  • javax.persistance 로서 구현체가 없다는 것이 중요하다



🥴 Hibernate는 뭔데

Hibernate는 JPA 명세의 구현체이다.

  • javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리이다.

  • JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다

  • 즉, JPA를 사용한다고해서 굳이 Hibernate를 사용할 필요는 없다고 생각할 수도 있다


 재밌는건 사실 Hibernate가 JPA보다 먼저 나왔다는 것이다. EJB를 사용하던 시절, 한 개발자가 자기가 만들어도 이것보단 잘 만들겠다며 뚝딱하고 나온게 Hibernate.
 Hibernate가 각광받자 Java진영에서 표준을 만들고 Hibernate 개발자를 모셔와 나온게 JPA.
  EJB는 얼마나 거지같았던걸까



😵 번외 Spring Data JPA

JPA를 쓰기 편하게 만들어놓은 모듈이다

profile
Be More!

0개의 댓글