[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 2. PersistenceContext (์˜์†์„ฑ ์ปจํ…์ŠคํŠธ)

2023. 2. 24. 16:28ยทSpring/Spring JPA ๊ธฐ๋ณธ

 

PersistenceContext (์˜์†์„ฑ ์ปจํ…์ŠคํŠธ)

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋Š” ๋œป์ด๋‹ค.

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๊ฐ€์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

 

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

 

public Long save(Member member) {
    em.persist(member);
    return member.getId();
}

EntityManager.persist(member) : ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•ด ํšŒ์› ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค๋Š” ์˜๋ฏธ!


์‹ค์ œ๋กœ๋Š” DB์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ Entity๋ฅผ ์˜์†ํ™”ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.


์ •ํ™•ํžˆ ๋งํ•˜๋ฉด persist() ์‹œ์ ์—๋Š” Entity๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


EntityManager๋ฅผ ํ†ตํ•ด์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค.

 

 

 

 

 


EntityManager๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด 1:1๋กœ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

 

 

 

 

 

์—”ํ‹ฐํ‹ฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

 
๋น„์˜์† (new/transient)

 

    //๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ์ƒํƒœ(๋น„์˜์†)
    Member member = new Member();
member.setId("member1");
        member.setUsername("ํšŒ์›1");

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ „ํ˜€ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์ƒˆ๋กœ์šด ์ƒํƒœ

 

JPA ์™€ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์ƒํƒœ - ๋น„์˜์† ์ƒํƒœ 

 

 

์˜์† (managed)

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๊ด€๋ฆฌ๋˜๋Š” ์ƒํƒœ 

 

// ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•œ ์ƒํƒœ(์˜์†)
 em.persist(member);

 

member ๊ฐ์ฒด๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•œ ์ƒํƒœ 

 

์•„์ง DB์— ์ €์žฅ๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค 

 

DB๋Š” ์ดํ›„์— ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ํ•ด์•ผ ์ €์žฅ๋œ๋‹ค 

 

 

์ค€์˜์†(detached)

//ํšŒ์› ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ„๋ฆฌ, ์ค€์˜์† ์ƒํƒœ
em.detach(member);

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค๊ฐ€ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ 

 

์˜์† -> ์ค€์˜์† 

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ๋ชปํ•จ 

 

 

์˜์† ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๋ฐฉ๋ฒ• 

 

1. 

em.persist(member) 

 

 

2.

em.find(member)

 

์กฐํšŒํ–ˆ๋Š”๋ฐ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ(1์ฐจ ์บ์‹œ)์— ์—†๋‹ค

 

-> DB์—์„œ ์กฐํšŒํ•ด์„œ 1์ฐจ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค . 

 

1์ฐจ ์บ์‹œ(์˜์† ์ปจํ…์ŠคํŠธ)์— ์˜ฌ๋ผ๊ฐ„ ์ƒํƒœ == ์˜์† ์ƒํƒœ == JPA๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ƒํƒœ

 

 

 

 

์ค€์˜์† ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

 

em.detach(entity)

ํŠน์ • ์—”ํ‹ฐํ‹ฐ๋งŒ ์ค€์˜์† ์ƒํƒœ๋กœ ์ „ํ™˜

 

em.clear()

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”

 

em.close()

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์ข…๋ฃŒ

 

 

 

 

์‚ญ์ œ(removed)

//๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•œ ์ƒํƒœ(์‚ญ์ œ)
em.remove(member);

 

์‚ญ์ œ๋œ ์ƒํƒœ 

 

 

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ์ด์ 

 

1์ฐจ ์บ์‹œ

 

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ž‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์— ์ค‘๊ฐ„ ๊ณ„์ธต์ด ์žˆ์Œ

 

 

DB๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์ „์— 1์ฐจ ์บ์‹œ๋ฅผ ๋จผ์ € ์กฐํšŒํ•œ๋‹ค .  

 

1์ฐจ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด DB๋ฅผ ์กฐํšŒํ•œ๋‹ค -> ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ 1์ฐจ ์บ์‹œ์— ์ €์žฅ -> ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ 

 

 

 

์˜์† ์—”ํ‹ฐํ‹ฐ์˜ ๋™์ผ์„ฑ ๋ณด์žฅ

Member a = em.find(Member.class, "member1");
Member b = em.find(Member.class, "member1");
System.out.println(a == b); //๋™์ผ์„ฑ ๋น„๊ต true

 

 

 

์—”ํ‹ฐํ‹ฐ ๋“ฑ๋ก ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋Š” ์“ฐ๊ธฐ ์ง€์—ฐ

 

transaction.begin(); // [ํŠธ๋žœ์žญ์…˜] ์‹œ์ž‘

 

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. 

 

        em.persist(memberA);
        em.persist(memberB);
//์—ฌ๊ธฐ๊นŒ์ง€ INSERT SQL์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค.
//์ปค๋ฐ‹ํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— INSERT SQL์„ ๋ณด๋‚ธ๋‹ค.
        transaction.commit(); // [ํŠธ๋žœ์žญ์…˜] ์ปค๋ฐ‹

 

์ปค๋ฐ‹ํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ธ๋‹ค

 

 

memberB๊ฐ€ 1์ฐจ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ  ๋™์‹œ์— 

 

SQL ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์“ฐ๊ธฐ ์ง€์—ฐ SQL ์ €์žฅ์†Œ์— ์Œ“์•„๋‘”๋‹ค . 

 

์ด ์Œ“์•„๋‘” ์ฟผ๋ฆฌ๋“ค์€ ์–ธ์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „์†ก๋ ๊นŒ?

 

 

transaction.commit(); ํ•˜๋Š” ์‹œ์ ์—

 

์“ฐ๊ธฐ ์ง€์—ฐ SQL ์ €์žฅ์†Œ์— ์Œ“์—ฌ์žˆ๋˜ ์ฟผ๋ฆฌ๋“ค์ด flush๊ฐ€ ๋˜๋ฉด์„œ DB์— ์ „์†ก๋œ๋‹ค . 

 

 

 

์—”ํ‹ฐํ‹ฐ ์ˆ˜์ •โ€จ,๋ณ€๊ฒฝ ๊ฐ์ง€(dirty checking)

 

// ์˜์† ์—”ํ‹ฐํ‹ฐ ์กฐํšŒ
Member memberA = em.find(Member.class, "memberA");

 

 ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๋ฉค๋ฒ„๋ฅผ ์กฐํšŒํ•œ๋‹ค . 

 

// ์˜์† ์—”ํ‹ฐํ‹ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ •
memberA.setUsername("hi");
        memberA.setAge(10);

 

์กฐํšŒํ•œ ๋ฉค๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค 

 

//em.update(member) ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ?

 

์ž๋ฐ”์˜ ์ปฌ๋ ‰์…˜์—์„œ๋Š” ๊ฐ’์„ ๊บผ๋‚ด๊ณ  ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ

 

๊ทธ ๋‹ค์Œ ๋‹ค์‹œ ์ปฌ๋ ‰์…˜์— ์ง‘์–ด ๋„ฃ์ง€ ์•Š๋Š”๋‹ค 

 

JPA๋„ ๋˜‘๊ฐ™๋‹ค 

 

 

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค commit ํ•˜๋Š” ์‹œ์ ์— ๋‚ด๋ถ€์ ์œผ๋กœ flush() ๊ฐ€ ํ˜ธ์ถœ์ด ๋œ๋‹ค .

 

2. ์—”ํ‹ฐํ‹ฐ์™€ ์Šค๋ƒ…์ƒท์„ ๋น„๊ตํ•œ๋‹ค . 

 

์Šค๋ƒ…์ƒท : ์ตœ์ดˆ ์ƒํƒœ(์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๋“ค์–ด์˜จ ์‹œ์ )

 

memberA.setUsername("hi");
        memberA.setAge(10);

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ์กฐํšŒํ•œ ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 

 

์—”ํ‹ฐํ‹ฐ์™€ ์Šค๋ƒ…์ƒท์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ 

 

3. -> UPDATE ์ฟผ๋ฆฌ๋ฅผ ์“ฐ๊ธฐ ์ง€์—ฐ SQL ์ €์žฅ์†Œ์— ๋งŒ๋“ค์–ด๋‘”๋‹ค . 

 

 

 

 

flush(ํ”Œ๋Ÿฌ์‹œ)

 

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€๊ฒฝ๋‚ด์šฉ์„โ€จ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋น„์šฐ์ง€ ์•Š์Œ

 

flush()๋ฅผ ํ•˜๋ฉด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์žˆ๋Š” 1์ฐจ ์บ์‹œ๊ฐ€ ์ง€์›Œ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹˜ 

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€๊ฒฝ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋™๊ธฐํ™”

 

๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 

 

์—”ํ‹ฐํ‹ฐ ์ˆ˜์ •,๋ณ€๊ฒฝ ๊ฐ์ง€(dirty checking) -> 

 

์“ฐ๊ธฐ ์ง€์—ฐ SQL ์ €์žฅ์†Œ์— ์Œ“์ธ SQL (๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ ์ฟผ๋ฆฌ) ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ณผ์ • 

 

์ด ์ฟผ๋ฆฌ๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „์†ก โ€จ 

 

ํŠธ๋žœ์žญ์…˜์ด๋ผ๋Š” ์ž‘์—… ๋‹จ์œ„๊ฐ€ ์ค‘์š” -> ์ปค๋ฐ‹ ์ง์ „์—๋งŒ ๋™๊ธฐํ™” ํ•˜๋ฉด ๋จ

 

 

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผโ€จ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•

 

  • em.flush() - ์ง์ ‘ ํ˜ธ์ถœ
  • ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ - ํ”Œ๋Ÿฌ์‹œ ์ž๋™ ํ˜ธ์ถœ
  • JPQL ์ฟผ๋ฆฌ ์‹คํ–‰ - ํ”Œ๋Ÿฌ์‹œ ์ž๋™ ํ˜ธ์ถœ

 

 



 

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

 

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

JPA๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜, ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด JPA์˜ ๊ธฐ๋ณธ ์ด๋ก ์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ํ•™์Šตํ•ด์„œ ์ดˆ๋ณด์ž๋„ ์‹ค๋ฌด์—์„œ ์ž์‹ ์žˆ๊ฒŒ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ

www.inflearn.com

 

 

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ

'Spring > Spring JPA ๊ธฐ๋ณธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 5. ๋‹ค๋Œ€์ผ[N:1] / ์ผ๋Œ€๋‹ค[1:N] / ์ผ๋Œ€์ผ[1:1] / ๋‹ค๋Œ€๋‹ค[N:M]  (0) 2023.02.27
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 4. ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘  (0) 2023.02.26
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 3. ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘  (0) 2023.02.25
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 1. JPA ๊ตฌ๋™ ๋ฐฉ์‹  (0) 2023.02.24
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 0. SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ ๋ฌธ์ œ์  / ORM ์ด๋ž€ ?  (0) 2023.02.23
'Spring/Spring JPA ๊ธฐ๋ณธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 4. ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 3. ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 1. JPA ๊ตฌ๋™ ๋ฐฉ์‹
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 0. SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ ๋ฌธ์ œ์  / ORM ์ด๋ž€ ?
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 2. PersistenceContext (์˜์†์„ฑ ์ปจํ…์ŠคํŠธ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”