inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

hibernate 와 JPA

272

최상용

작성한 질문수 7

0

안녕하세요. 

공부를 하다가 누군가에게 hibernate or JPA를 사용해보았냐는 질문을 받았습니다.

JPA는 사용을 해보았다고 대답을 했으나 hibernate를 사용해봤는지 판단을 할 수 없었습니다.

그래서 찾아보니 hibernate와 JPA의 차이점을 찾아봤으나 hibernate는 JPA를 구현한것이다.

라는 답변을 찾을 수 있었으나 제가 이해한것이 맞는지 틀린지 판단을 할 수 없어서 질문드립니다.

1. entity를 설계하고 public interface MemberRepository extends JpaRepository<Member, Long>와같이 JpaRepository를 구현했다 -> JPA를 사용

2. entity를 설계하고 entityManager를 활용하였다 -> hibernate 

라고 이해를 하였습니다. 맞게 이해한것인가요 ?

JPA java

답변 1

1

김영한

안녕하세요. sangyong choi님

어느정도 알아보셨으니 질문에 바로 답변을 드릴께요^^

1. entity를 설계하고 public interface MemberRepository extends JpaRepository<MemberLong>와같이 JpaRepository를 구현했다 -> JPA를 사용

-> 이것은 스프링 데이터 JPA를 사용한 것입니다. 순수하게 JPA를 사용하는 것 보다 스프링 데이터 JPA가 여러가지 편리한 기능을 제공해주기 때문에 최근에는 이렇게 많이 사용합니다.

2. entity를 설계하고 entityManager를 활용하였다 -> hibernate 

-> Hibernate를 직접 사용하면 EntityManager가 아니라 하이버네이트 Session이라는것을 사용합니다. JPA는 EntityManager 인터페이스를 제공하고, 하이버네이트를 사용하면 하이버네이트가 EntityManager 인터페이스를 통해서 제공됩니다. (하이버네이트가 JPA의 EntityManager를 구현합니다. Entity 설계도 마찬가지 입니다.)

최근에는 하이버네이트도 JPA에 거의 통합되고, 대부분 하이버네이트 구현체를 사용해서 JPA를 사용하면 거의 하이버네이트를 사용한 것으로 생각하셔도 됩니다.

사실 우리가 하이버네이트를 사용하고 있다는 것은 maven, gradle에서 포함한 라이브러리를 보시면 됩니다.

이런식으로 JPA 인터페이스를 통해서 사용하면 다음에 하이버네이트가 아닌 다른 구현체 라이브러리로 변경해도 기존 코드는 거의 손대지 않고 변경할 수 있는 장점이 있습니다.(하지만 하이버네이트 대항마가 나오기는 쉽지 않을 것 같아요.)

추가로 JPA 기본편 강의 - JPA 시작하기 5:23을 다시한번 참고해보시면 좋을 것 같습니다^^

Entity 동등성 비교

0

4

1

실무 조언 관련 질문입니다.

0

41

1

H2데이터베이스 파일 생성

0

51

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

49

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

48

1

JPQL 메소드와 락

0

52

1

Delivery @OneToOne

0

57

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

89

2

UnsupportedOperationException 발생

0

82

3

H2 Database 연결이 안됩니다.

0

88

2

연관관계 매핑 질문드립니다.

0

82

2

h2데이터베이스 실행오류

0

105

2

persistence.xml

0

103

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

77

1

영속성 컨텍스트

0

62

1

JPA 프록시

0

90

1

Native Query와 MyBatis

0

63

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

83

1

임베디드 타입 예시 코드 관련 질문

0

112

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

90

3

인텔리제이 패키지 커서 단축키 질문

0

106

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

136

1

양방향 연관관계 시 연관관계 주인을 설정하는 이유

0

68

1

임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.

0

95

1