[Spring] Review & Interface

진주·2022년 3월 22일
0

Spring

목록 보기
21/29

Review

hibernate가 실제로 JPA의 Interface를 구현한 구현부이다.
EclipseLink 또한 JPA의 구현부이지만, hibernate를 가장 많이 사용한다.

Interface는 메서드만 갖고 있고, 구현부는 따로 있다.

Persistence.createEntityManagerFactory("jpa")는 EntityManager를 만들어주는 메서드이다.

persistence.xml에서 <persistence-unit name="jpa">으로 지정했기 때문에 "jpa"를 사용한 것이다.

영속성(Persistence)를 관리해주는 createEntityManagerFactory를 만들 때 "jpa"라고 설정하면, persistence.xml에서 <persistence-unit name="jpa"> 하단에 있는 코드들을 읽어온다.

JDBC또한, Interface인데 이를 간소화한 것이 JPA 기술이다.

JPA는 Interface이며 구현체로 hibernate를 사용한다.

Q. JDBC 대신 JPA를 사용하는 이유는 무엇일까?

ORM(Object Relational Mapping) = Object와 Relation을 Mapping 해준다.

Book이라는 class를 만들면, 자동으로 Table로 만들 수 없을까? 하는 생각으로 나온 아이디어일 수도 있는 ORM의 개념이다.

ORM을 실체화 시킨 것이 JPA라는 Interface이고, 이 것을 실제 구현한 것이 hibernate이다.

간단하게 말하면, 별도의 SQL문 작성 없이 Java 코드 만으로 DB에 데이터를 저장할 수 있다.
(내부적으로는 결국 JDBC를 사용하지만, 보다 표면적인(추상화된) 코드를 통해 생산성이 증가한다)

JPA = Interface , Hibernate = 구현체

JPA를 사용하면 JDBC Interfaces ~ Persistence Layer 부분은 내부적으로 알아서 수행된다.

실제 JDBC 구현체는 JDBC Driver!


Interface?

profile
진주의 코딩일기

0개의 댓글