Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 JPA 동작 원리 (다락방) 본문

Spring

스파르타 부트캠프 JPA 동작 원리 (다락방)

H.S-Backend 2024. 6. 18. 14:53

JDBC API 는

 

Java를 이용한 데이터베이스 접속,

SQL문의 실행,

실행결과 데이터 핸들링을 제공하는 방법,

절차에 관한 규약으로

 

JPA내에서 동작한다.


MemberDAO에서 객체를 저장하기 위해서

 

Member객체를 JPA에 넘긴다.

그럼 JPA가 객체를 분석하고 INSERT Query를 생성한다.

그 후에 JDBC API를 사용하여 INSERT Query를 DB에 보내고

DB에서 결과를 받는다.


Member의 PK값만 (id) JPA에 넘기면

JPA가 Member객체를 분석하여 적절한 SELECT Query를 만들어낸다.

 

이를

JDBC API를 사용하여 Query를 보낸뒤 결과를 반환받는다.

결과로 받은 ResultSet을 객체에 매핑해준다.


객체와 SQL을 동시에 고쳐야할 일이 없다.

 

저장 : jpa.persist(member)

조회 : Member meember = jpa.find(memberId)

수정 : member.setName("변경이름");

삭제 : jpa.remove(member)

 

동일한 Transaction내에서 조회한 엔티티는 동일하며 보장한다.

 

주소값은 다르다.

JPA 구동방식

EntityManagerFactory 는

WAS 내에서 Singletone으로 만들어져야하는

EntityManager를 생성하는 Factory interface이다.

 

EntityManager는

Request(요청) 시마다 Factory에서 생성하여

영속성을 관리하는 객체

내부적으로 DatabaseConnection을 통해서 DB를 사용한다.

 

쓰레드는 공유하면 안되며 생명주기가 존재한다.

 

 

EntityTransaction은

JPA의 모든 객체와 데이터 변경은

Transaction level 안에서 수행되며 영속성을 갖는다.


Persistence Context(영속성 컨텍스트)

 

객체(Entity)를 영구 저장하는 환경(메모리)을 의미하며

EntityManager.persist(entity);

 

DB에 엔티티를 저장한다는게 아니라

영속성 컨텍스트를 영속화(저장)함을 뜻한다.

 

본질은 같다.

 


Entity LifeCycle

비영속 (New) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태(처음생성)

영속 (managed) : 영속성 컨텍스트에 관리되는 상태 EntityManager.persist(entity) 이후의 상태

준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태

삭제 (removed) : 삭제된 상태


비영속과 영속차이

 

 

 

https://hs-backend.tistory.com/200

 

스파르타 부트캠프 객체와 관계형 DB (다락방)

관계형 DB에서 객체의 상속관계와 유사한 것이 Table 슈퍼타입, 서브타입관계이다. Album을 저장하려면객체 상속에서 Album은 Item속성을 받은 상태이다. 관계형 DB 입장에서다른 Insert Qeury를 두번 작

hs-backend.tistory.com

 

반응형