Programming

JPA란?

송코딩 songcoding 2022. 9. 10. 16:51

안녕하세요, 스진초 여러분!ㅎㅎ

송아지할때송아 김송아입니다.

 

간단하고 빠르게 JPA에 대해 1분만에 알아볼게요!

그럼, 시작합니다!

 

✔️JPA (Java Persistance API)

자바 응용 프로그램에서 관계형 데이터베이스의 관리를 할 수 있도록 하는 자바 API(=구현체 필요)
즉, 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있는 인터페이스

 

인터페이스라면 구현체가 필요하다고 생각이 되시죠?

맞아요! 그치만, 우리가 구현하는 게 아니라

스프링 JPA는 하이버네이트라는 구현체를 포함해서 제공하고 있습니다.

 

즉, 우리는 JPA 인터페이스 뒤에 있는 하이버네이트를 사용하게 되는 거겠죠?


// 참고. EJB의 Entity Bean을 대체하는 기술

 

🌟아마 JPA와 하이버네이트의 관계가 가장 헷갈리셨을거라, 다시 한번 짚고 갈게요🌟

JPA가 인터페이스이기 때문에, 구현체가 필요한거죠.
그 구현체를 손수 짤 수도 있겠지만!
구현체로 사용할 수 있는 프레임워크를 사용할 수도 있습니다.

* 대표적인 JPA 구현체 : 하이버네이트(Hibernate)

- 자바 응용 프로그램에서 관계형 데이터와 객체를 매핑을 할 수 있게 제공하는 프레임워크
- JPA의 구현체 (ver 3.2 부터)

 

✔️ JPA 구성요소

1) javax.persistance 패키지로 정의된 API

2) JPQL(Java Persistance Query Language)

- 관계형 데이터베이스에 저장된 Entity에 대한 쿼리들을 작성할 수 있는 언어

- 쿼리들은 구문에서 SQL 쿼리와 유사하지만, 데이터베이스 테이블에 직접적으로 처리되는 것이 아니라 Entity 개체에 처리된다.

3) 객체/관계 메타데이터

 

✔️ Entity란?

관계형 데이터베이스의 테이블에서 개개의 행에 해당하는 자바 클래스

어노테이션을 사용하여 엔티티 클래스 파일을 직접 명시하거나 별도 속성 파일(XML)에서 지정

👀 참고해주세요.
DDD 설계의 객체를 구현하는 방법으로 Entity를 사용하고 있습니다.
엄연히 말하면 DDD 설계의 Domain/객체/모델/엔티티 와 JPA의 Entity는 다른 거에요!!!!
둘은 정말 비슷하지만! 같은 단어가 아닙니다!! 
이건 마치 박완규님과 강형욱님 같은 느낌이랄까요?

 

 

 

그럼, 조금이나마 도움이 되셨길 바라며!

감사합니다 :)

 

 

 

 

 

Reference

https://ko.wikipedia.org/wiki/자바_퍼시스턴스_API

https://livenow14.tistory.com/70