멋사 Backend Plus 17일차 🦁

μ‹ μž¬μ›Β·2023λ…„ 11μ›” 14일

μ˜€λŠ˜μ€ κ°•μ‚¬λ‹˜κ»˜μ„œ μΈν…”λ¦¬μ œμ΄λ₯Ό λ‹€μš΄λ‘œλ“œ ν•˜κ³  μ‚¬μš©ν•˜μ‹œλ©΄μ„œ 많이 λ²„λ²…μ΄μ…”μ„œ 무슨 μˆ˜μ—…μ„ ν–ˆλŠ”μ§€λ„ 기얡이 μ•ˆλ‚œλ‹€.

(이전 κΉŒμ§€ μˆ˜μ—…ν•˜λŠ” 1λ‹¬λ™μ•ˆ 이클립슀λ₯Ό μ‚¬μš©ν•˜μ‹¬)
(λ‚˜λŠ” 이클립슀λ₯Ό λŒ€ν•™κ΅ μˆ˜μ—…λ•Œ λͺ‡κ°œμ›” μ“°κ³  μΈν…”λ¦¬μ œμ΄λ₯Ό 2년정도 μ“΄ 것 κ°™λ‹€)

큰 μ£Όμ œλŠ” JPA 와 Spring Data JPA, Spring Security λ₯Ό 이 3개의 파트λ₯Ό 였늘 내일 λλ‚Έλ‹€λŠ”κ²Œ 말이 μ•ˆλ˜μ„œ μ§€κΈˆλΆ€ν„° μ •λ¦¬ν•˜λŠ” 것은 개인적으둜 κ³΅λΆ€ν•œ λ‚΄μš©μ΄λ‹€.


κΉ€μ˜ν•œλ‹˜μ˜ μžλ°” ORM ν‘œμ€€ JPA κ°•μ’Œλ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

JPAλ₯Ό κ³΅λΆ€ν•˜λ©΄ κ°€μž₯ μ€‘μš”ν•œ 2κ°€μ§€

객체와 κ΄€κ³„ν˜• 데이터 베이슀 λ§€ν•‘ν•˜κΈ° (ORM)

  • ν…Œμ΄λΈ” 섀계 κ΄€λ ¨

μ˜μ†μ„± μ»¨ν…μŠ€νŠΈ λž€ ?

  • μ˜μ†μ„± μ»¨ν…μŠ€νŠΈλž€ μ—”ν‹°ν‹°λ₯Ό 영ꡬ μ €μž₯ν•˜λŠ” ν™˜κ²½μœΌλ‘œ 해석 ν• μˆ˜ 있으며,
    EntityManger.persist(member) 이 둜직의 μ˜λ―ΈλŠ” DB에 μ €μž₯ν•œλ‹€λŠ” 것이 μ•„λ‹ˆλΌ, member 객체λ₯Ό μ˜μ†μ„± μ»¨ν…μŠ€νŠΈλΌλŠ” 곳에 μ €μž₯ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

➑ 즉 EntityMangerλ₯Ό ν†΅ν•΄μ„œ μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ— μ ‘κ·Όν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ—”ν‹°ν‹°μ˜ 생λͺ…μ£ΌκΈ°μ—λŠ” 4κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

1.λΉ„μ˜μ† : μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ™€ μ „ν˜€ κ΄€κ³„μ—†λŠ” μƒˆλ‘œμš΄ μƒνƒœ
μ½”λ“œμ™€ 같이 객체λ₯Ό μƒμ„±ν•˜κ³  ν•„λ“œλ§Œ ν• λ‹Ήν•œ μƒνƒœ, JPAλž‘ μ „ν˜€ κ΄€κ³„μ—†λŠ” μƒνƒœ

Member member = new Member();
member.setName("홍길동");
member.setAge(24);

2.μ˜μ† : μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ—μ„œ "관리" λ˜λŠ” μƒνƒœ

Member member = new Member();
member.setName("홍길동");
member.setAge(24);

// emfλŠ” μ—”ν‹°ν‹°λ§€λ‹ˆμ €νŒ©ν† λ¦¬
EntityManger em = emf.createEntityManager();
em.getTransaction().begin();

// 객체λ₯Ό μ˜μ†ν•œ μƒνƒœ
em.persist(member);

3.μ€€μ˜μ† : μ˜μ†μ„± μ»¨ν…νŠΈμŠ€μ— μ €μž₯λ˜μ—ˆλ‹€κ°€ λΆ„λ¦¬λœ μƒνƒœ

// μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ—μ„œ μ§€μš°λŠ” 것, DB X
em.detach(member)

4.μ‚­μ œ : μ‚­μ œλœ μƒνƒœ

// 객체λ₯Ό μ‚­μ œ 
em.remove()

➑ μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ˜ 이점 : μžλ°” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λž‘ DB 쀑간에 μžˆλ‹€κ³  생각 ν•˜λ©΄ νŽΈν• κ²ƒ κ°™λ‹€. μ˜μ†μ„± μ»¨ν…μŠ€νŠΈκ°€ μ‘΄μž¬ν•¨μœΌλ‘œμ¨ 버퍼λ₯Ό ν• μˆ˜μžˆκ³  캐싱을 ν• μˆ˜ μžˆλŠ” 이점이 μžˆμŠ΅λ‹ˆλ‹€.

였늘 마무리

2λ‹¬μ˜ 멋사 λ°±μ—”λ“œ 심화 κ³Όμ •μ΄μ§€λ§Œ, ν•œλ‹¬λ™μ•ˆ μ§„ν–‰ν•˜λ©΄μ„œ 특히 였늘 κ°•μ˜μ— λŒ€ν•΄ 아쉬움이 많이 λ‚¨λŠ”κ²ƒκ°™λ‹€.
κ²½λ ₯μžˆλŠ” κ°•μ‚¬μ§€λ§Œ, κ·Έλ ‡λ‹€κ³  μˆ˜κ°•μƒλ“€μ—κ²Œ μ„€λͺ…을 μž˜ν•˜λŠ”κ²ƒ κ°™μ§€λŠ” μ•Šλ‹€.

이번주 κΈˆμš”μΌμ— μžˆλŠ” νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ μžκΈ°μ£Όλ„λ‘œ κΈ°μˆ μ„ 써가며 λ°°μš°λŠ”κ²Œ μ§€κΈˆ κ°€μž₯ ν˜„μ‹€μ μΈ 방법인것 κ°™λ‹€.

0개의 λŒ“κΈ€