SlideShare une entreprise Scribd logo
1  sur  59
영속성 컨텍스트로 보는 JPA
2015.12.12
이경원(woniper)
이경원(woniper)
http://blog.woniper.net
https://github.com/woniper
leekw3747@gmail.com
목차
JPA 소개
JDBC부터 JPA까지
영속성 컨텍스트
참고자료
JPA(Java Persistence API) 소개
Java ORM(Object-Relational Mapping) 표준 F/W
RDB를 객체로 표현(매핑), 사용
Hibernate, Eclipse Link, TopLink Essensials 구현체
JDBC부터 JPA까지
JDBC
Connection
Query 생성
Resource Close
xBatis
<select id="select" parameterType="java.lang.Integer" resultType=“User”>
select userId, username, password from User where userId = #{userId}
</select>
Query 작성 지겹지 않나요?
JPA
EntityManager em = entityManagerFactory.createEntityManager();
1. Insert
em.persist(user);
2. Select
User user = em.find(User.class, 1);
3. Update
user.setUsername("update Name");
user.setPassword("1111");
4. Delete
em.remove(user);
Connection, close
Query 자동 생성 및 실행
데이터 자동 매핑
엔티티(Entity) 생명주기
@Entity
@Table(name = "User")
public class User {
@Id @GeneratedValue
private Integer userId;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "nickName", nullable = true)
private String nickName;
}
USER
비영속(NEW)
USER
영속(Managed)
영속성 컨텍스트
persist()
USER
삭제(Removed)
remove()
USER
준영속(Detached)
detach()
영속성 컨텍스트
이점
쓰기 지연 SQL(SQL 저장소)
자동 변경 감지
1차 캐시
엔티티 동일성
지연 로딩
EntityManagerFactory emf = Persistence.createEntityManagerFactory(“persistence");
1차 캐시 영역
@ID Entity Snapshot
SQL 저장소
EntityManager em1 = emf.createEntityManager();
em1
1차 캐시 영역
@ID Entity Snapshot
SQL 저장소
EntityManager em2 = emf.createEntityManager();
em2
1차 캐시 영역
@ID Entity Snapshot
1 User User
SQL 저장
소
영속성 컨텍스트
J
D
B
C
영속성 컨텍스트는 어떻게 동작할까
?
입력(persist)
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 비 영속 상태
User user = new User("wons", "12345", "woniper");
// 영속 상태
// 1차 캐시 저장, Query 생성 및 저장
em.persist(user);
// 준영속 상태
// SQL 저장소 Query DB에 반영
em.getTransaction().commit();
em.close();
조회(find)
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 영속 엔티티
User user = em.find(User.class, 1);
// 준영속 상태
em.getTransaction().commit();
em.close();
수정(자동 변경 감지)
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 영속 상태
// 1차 캐시 저장
User user = em.find(User.class, 1);
// 자동 변경 감지
user.setUserName("updateName");
user.setPassword("1111");
user.setNickName("updateNick");
// 준영속 상태
em.getTransaction().commit();
em.close();
삭제(remove)
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 영속 상태
// 1차 캐시 저장
User user = em.find(User.class, 1);
// 삭제 상태, Query 생성 및 저장
em.remove(user);
// SQL 저장소 Query DB에 반영
em.getTransaction().commit();
em.close();
트랜잭션 단위에서 동작
commit() 호출 전 flush()
merge
준 영속 엔티티 -> 영속 엔티티
merge를 알아보기 전에
영속 엔티티 -> 준 영속 엔티티
em.clear();
em.detach(user);
em.close();
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 1. 영속 상태, username == woniper
User user1 = em.find(User.class, 1);
// 2. 준영속 상태
em.detach(user1);
// 3. username 속성 변경
user.setUserName(“lee-kyung-won");
// 4. 영속 상태
em.merge(user1);
em.getTransaction().commit();
em.close();
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 5. username 속성 값은?
User user2 = em.find(User.class, 1);
em.getTransaction().commit();
em.close();
user2에 username은
lee-kyung-won
속성이 변경된 준영속 엔티티 merge :
update
비영속 엔티티 merge : insert
참고자료
http://www.tutorialspoint.com/jpa/
http://www.objectdb.com/
https://en.wikibooks.org/wiki/Java_
Persistence
http://goo.gl/xzpTdK
https://goo.gl/sqmO9p
https://goo.gl/GhsI4Q
https://goo.gl/GpQzeL
감사합니다.

Contenu connexe

Tendances

Spring bootでweb バリデート編
Spring bootでweb バリデート編Spring bootでweb バリデート編
Spring bootでweb バリデート編なべ
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로NHN FORWARD
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービューMasatoshi Tada
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentationJohn Slick
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
PHP 良好實踐 (Best Practice)
PHP 良好實踐 (Best Practice)PHP 良好實踐 (Best Practice)
PHP 良好實踐 (Best Practice)Win Yu
 

Tendances (20)

Spring bootでweb バリデート編
Spring bootでweb バリデート編Spring bootでweb バリデート編
Spring bootでweb バリデート編
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
Spring Core
Spring CoreSpring Core
Spring Core
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
JUnit 5
JUnit 5JUnit 5
JUnit 5
 
Spring boot
Spring bootSpring boot
Spring boot
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
PHP 良好實踐 (Best Practice)
PHP 良好實踐 (Best Practice)PHP 良好實踐 (Best Practice)
PHP 良好實踐 (Best Practice)
 

En vedette

SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSADaekwon Kang
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Jinsoo Jung
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책Youmi Bae
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212완수 양
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetectJunyi Song
 

En vedette (7)

SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
Slipp 발표 - GO
Slipp 발표 - GOSlipp 발표 - GO
Slipp 발표 - GO
 

Similaire à 영속성 컨텍스트로 보는 JPA

MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로Dongmin Shin
 
Jlook open api platform-appdevguide
Jlook open api platform-appdevguideJlook open api platform-appdevguide
Jlook open api platform-appdevguideHongSeong Jeon
 
E government framework
E government frameworkE government framework
E government frameworkHyungKuIm
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Younghan Kim
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
vine webdev
vine webdevvine webdev
vine webdevdcfc1997
 
[Study]HeadFirst JSP&servlet chapter5
[Study]HeadFirst JSP&servlet chapter5[Study]HeadFirst JSP&servlet chapter5
[Study]HeadFirst JSP&servlet chapter5Hyeonseok Yang
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 Chanwook Park
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Kim Hunmin
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Younghan Kim
 
아해팀 스터디 Orm은 어떻게 객체를 매핑할까
아해팀 스터디 Orm은 어떻게 객체를 매핑할까아해팀 스터디 Orm은 어떻게 객체를 매핑할까
아해팀 스터디 Orm은 어떻게 객체를 매핑할까Sunghyun Roh
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 
[스프링 스터디 2일차] 서비스 추상화
[스프링 스터디 2일차] 서비스 추상화[스프링 스터디 2일차] 서비스 추상화
[스프링 스터디 2일차] 서비스 추상화AnselmKim
 

Similaire à 영속성 컨텍스트로 보는 JPA (20)

Java JPA
Java JPAJava JPA
Java JPA
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
Jlook open api platform-appdevguide
Jlook open api platform-appdevguideJlook open api platform-appdevguide
Jlook open api platform-appdevguide
 
E government framework
E government frameworkE government framework
E government framework
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
vine webdev
vine webdevvine webdev
vine webdev
 
[Study]HeadFirst JSP&servlet chapter5
[Study]HeadFirst JSP&servlet chapter5[Study]HeadFirst JSP&servlet chapter5
[Study]HeadFirst JSP&servlet chapter5
 
스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기
 
Realm @Android
Realm @Android Realm @Android
Realm @Android
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
Xe hack
Xe hackXe hack
Xe hack
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리
 
아해팀 스터디 Orm은 어떻게 객체를 매핑할까
아해팀 스터디 Orm은 어떻게 객체를 매핑할까아해팀 스터디 Orm은 어떻게 객체를 매핑할까
아해팀 스터디 Orm은 어떻게 객체를 매핑할까
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
[스프링 스터디 2일차] 서비스 추상화
[스프링 스터디 2일차] 서비스 추상화[스프링 스터디 2일차] 서비스 추상화
[스프링 스터디 2일차] 서비스 추상화
 

영속성 컨텍스트로 보는 JPA

Notes de l'éditeur

  1. 인사
  2. 이름, 3년차, 닉네임 질문은 메일로
  3. 2가지 주제 JDBC,xBatis,JPA 비교 JPA에서 가장 중요한 영속성 컨텍스트
  4. 일단 소개
  5. 표준 ORM ORM == RDB와 객체를 매핑 및 사용 (가장 중요) 표준 interface 제공 -> 구현체 Hibernate를 기준으로 발표
  6. 자바 개발자 이해 X 3단계 코드 현업 X
  7. JDBC에 비교 -> Connection, Close, 매핑 불필요 쿼리에 집중 S모전자 Map<> 이야기
  8. 자극적 JPA는 쿼리 작성 X ORM은 테이블과 객체를 매핑이 가장 중요(오해 X)
  9. EntityManager 메소드 간단 설명 update(자동 변경 감지)
  10. Connection, Close, 쿼리 자동 생성 JPA는 CRUD를 편하게 하기 위함 X
  11. 엔티티 설명 객체와 테이블을 매핑하기 위한 클래스 생명주기
  12. 생김새 -> DTO, VO 애노테이션 설명 자세한 설명 X
  13. 4가지 엔티티 상태 new 키워드(비영속) -> 순수 객체 영속성 컨텍스트 간단 설명 저장된 상태 -> 영속 엔티티 (persist) 삭제 상태 -> remove 분리된 상태 -> 준영속 엔티티(detach) 이해 못하면 데이터 손실 위험
  14. 대망에 영속성 컨텍스트 집중!!!
  15. 모두 설명 X
  16. EntityManagerFactory persistence 설정 -> META-INF/persistence.xml -> 자세한 설명 X EntityManager 생성 -> 영속성 컨텍스트 영역 생성 se, spring에서 생성 차이점(간단하게)
  17. 이 부분을 이해해야 뒤에 설명이 잘 이해됨 물리적 X, EntityManager로 접근 JDBC로 동기화 SQL 저장소(쓰기 지연 SQL이 가능), DB갔다 오는 횟수를 줄임 1차 캐시 영역 @ID == 식별자 Entity == 최신화 엔티티 Snapshot == 최초 엔티티
  18. CRUD 코드와 그림
  19. 트랜잭션을 시작 객체 생성 저장 커밋
  20. 1차 캐시 영역을 토대로 쿼리 생성
  21. flush는 Commit되기 전에 항상 호출(뒤에서 설명)
  22. 1차 캐시에 있으면 DB조회 X
  23. 저장 후 반환
  24. update 메소드 X 자동 변경 감지
  25. commit하기 전 flush 비교(최신화 엔티티, 최초 엔티티)
  26. 비교를 통해 update 쿼리 생성 및 저장
  27. 실제 물리적 공간인 DB에 저장
  28. 1차 캐시 먼저 삭제
  29. 쿼리 생성 및 저장
  30. 실제 물리적 DB에 저장
  31. 트랜잭션 단위안에서 동작 flush는 영속성 컨텍스트를 DB에 동기화 commit은 실제로 DB에 저장
  32. 할까 말까 고민 뺄수 없었음 전 내용 이해 물어보기
  33. clear : 모두 제거 -> 변경 사항 적용 안됨 detach : 특정 엔티티 제거 close : EntityManager 종료
  34. username == woniper라고 가정 코드 설명
  35. 다시 조회 문제 내기 -> username에 속성값은 무엇일까?
  36. User1 == lee-kyung-won Entity에 username == woniper 식별자로 조회 후 저장
  37. User1을 Entity영역에 병합(덮어 씌우기)
  38. update
  39. 앞 예제가 update insert도 가능 영속 엔티티로 변환 총 3가지 기능
  40. 이해 못해도 된다!!!
  41. 영한님 책에 잘 설명되어 있다. 관심있음 봐라. A/S도 확실하다
  42. 사이트
  43. 동영상
  44. 오늘 내용에 한해 질문 혹시라도 제가 모르는 질문은 재성이형에게!!