728x90

๐Ÿ’ปJPA๋ž€?

  • ์ž๋ฐ” ํผ์‹œ์Šคํ„ด์Šค API๋˜๋Š” ์ž๋ฐ” ์ง€์†์„ฑ API(Java Persistence API, JPA)๋Š” ์ž๋ฐ” ํ”Œ๋žซํผ SE์™€ ์ž๋ฐ” ํ”Œ๋žซํผ EE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฐ” API์ด๋‹ค.
  • ํ˜„์žฌ ์ž๋ฐ” ์ง„์˜์˜ ORM ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋‹ค.
  • ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค
  • JPA์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ Hibernate์ด๋‹ค.

  • ๊ณผ๊ฑฐ์˜ ์ž๋ฐ” ํ‘œ์ค€์€ EJB์˜€๋‹ค.๊ทธ๋Ÿฌ๋‚˜ EJB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ์ง€์ €๋ถ„ํ•˜๊ณ  ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค.

 

๐Ÿ‘‰ORM

  • ( Object-relational mapping (๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘))์€๊ฐ์ฒด๋Š” ๊ฐ์ฒด๋Œ€๋กœ ์„ค๊ณ„ํ•˜๊ณ , ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Œ€๋กœ ์„ค๊ณ„ํ•œ๋‹ค.
  • ORM ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ค‘๊ฐ„์—์„œ ๋งคํ•‘ํ•ด์ฃผ๊ณ  ๋Œ€์ค‘์ ์ธ ์–ธ์–ด์—๋Š” ๋Œ€๋ถ€๋ถ„ ORM ๊ธฐ์ˆ ์ด ์กด์žฌํ•œ๋‹ค.
  • ORM์€ ๊ฐ์ฒด์™€ RDB ๋‘ ๊ธฐ๋‘ฅ ์œ„์— ์žˆ๋Š” ๊ธฐ์ˆ  ์ด๋‹ค.


 

๐Ÿ’ปJPA ํŠน์ง•

  • ์ž๋ฐ” ๊ฐ์ฒด์™€ DB ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ๋งคํ•‘ ์„ค์ •์„ ํ†ตํ•ด SQL์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต JDBC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ฝ”๋“œ๊ฐ€ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๋ฐ˜๋ณต๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    DB์ปค๋„ฅ์…˜์„ ๊ตฌํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ž๋ฐ” ๊ฐ์ฒด์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 
     ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ ์€ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…์ด ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝ์ด ๋œ๋‹ค๋ฉด ๊ด€๋ จ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ธ๋ฐ JPA๋Š” ๋งคํ•‘ ์„ค์ •๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 
    ๋˜ํ•œ ์‹คํ–‰ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž๋ฐ” ๊ฐ์ฒด์— ์„ค์ •ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ JPA๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” JPQL(Java Persistence Query Language)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • JPA๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ง€์—ฐ ๋กœ๋”ฉ์ด๋‚˜ ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ๋ช‡๊ฐ€์ง€ ๊ธฐ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๊ฒƒ์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด SQL์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž˜๋ชป์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” JPA๋Š” ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“–JPA๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

1. SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ

2. ์ƒ์‚ฐ์„ฑ

  • JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งˆ์น˜ Java Collection์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์—ˆ๋‹ค ๋นผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.
  • ๊ฐ„๋‹จํ•œ CRUD
  • ์ €์žฅ: em.persist(member)
  • ์กฐํšŒ: Member member = em.find(memberId)
  • ์ˆ˜์ •: member.setName("๋ณ€๊ฒฝํ•  ์ด๋ฆ„")
  • ์‚ญ์ œ: em.remove(member)
  • ํŠนํžˆ, ์ˆ˜์ •์ด ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๋‹ค.๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๊ทธ๋ƒฅ ์•Œ์•„์„œ DB์— UPDATE Query๊ฐ€ ๋‚˜๊ฐ„๋‹ค
           

3. ์œ ์ง€๋ณด์ˆ˜

  • ๊ธฐ์กด: ํ•„๋“œ ๋ณ€๊ฒฝ ์‹œ ๋ชจ๋“  SQL์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • JPA: ํ•„๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. SQL์€ JPA๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋Œˆ ๊ฒƒ์ด ์—†๋‹ค.


๐Ÿ™‰REFERENCE

 

 

 

 

 

728x90