SPRING
2022.05.02 / 16:10

[Spring] Spring Data JPA¶õ ¹«¾ùÀΰ¡?

ÄÚÄÚ·Î
Ãßõ ¼ö 124

[Spring] Spring Data JPA¶õ ¹«¾ùÀΰ¡?

JPA

JPA°¡ ź»ýÇϱâ Àü¿¡´Â iBatis¿Í °°Àº SQL ¸ÅÆÛ¸¦ ÀÌ¿ëÇؼ­ DBÄõ¸®¸¦ ÀÛ¼ºÇß´Ù. ±×·¡¼­ ½Ç¹«¿¡¼­´Â ½ÇÁ¦·Î °³¹ßÇÏ´Â ½Ã°£º¸´Ù SQLÀ» ´Ù·ç´Â ½Ã°£ÀÌ ´õ ¸¹¾Ò´Ù°í ÇÑ´Ù. 

 

'°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ·Á°í ¿Ô´Âµ¥ ¿Ö Å×ÀÌºí ¸ðµ¨¸µ¿¡¸¸ ÁýÁßÇÏ°í ÀÖÁö?'

 

°´Ã¼¸¦ ´Ü¼øÈ÷ Å×ÀÌºí¿¡ ¸ÂÃß¾î µ¥ÀÌÅÍ Àü´Þ ¿ªÇÒ¸¸ ÇÏ´Â °³¹ßÀº ºÐ¸í °´Ã¼ÁöÇâ´äÁö ¾Ê¾Ò´Ù. ±×·¡¼­ ź»ýÇÑ °ÍÀÌ JPA¶ó´Â Àڹ٠ǥÁØORM ±â¼úÀÌ´Ù.

 

Spring Data JPA 

JPA´Â ÀÎÅÍÆäÆäÀ̽º·Î¼­ Àڹ٠ǥÁØ ¸í¼¼¼­ÀÌ´Ù. ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϱâ À§Çؼ­´Â ±¸Çöü°¡ ÇÊ¿äÇÑ µ¥ ´ëÇ¥ÀûÀ¸·Î Hibernate, Eclipse, LinkµîÀÌ ÀÖ´Ù.

 

ÇÏÁö¸¸ Spring¿¡¼­ JPA¸¦ »ç¿ëÇÒ ¶§´Â ÀÌ ±¸ÇöüµéÀ» Á÷Á¢ ´Ù·çÁø ¾Ê´Â´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¥ÀÌÅÍ ¾×¼¼½º °èÃþÀ» ±¸ÇöÇÏ´Â °ÍÀº ²Ï ¿À·§µ¿¾È ¼º°¡½Å ÀÏÀ̾ú´Ù. °£´ÜÇÑ Äõ¸®¸¦ ½ÇÇàÇÏ°í pagination ¹× auditingÀ» ¼öÇàÇÏ·Á¸é ³Ê¹« ¸¹Àº boilerplate Äڵ带 ÀÛ¼ºÇØ¾ß ÇÑ´Ù. Spring Data JPA´Â ½ÇÁ¦·Î ÇÊ¿äÇÑ ¾çÀ¸·Î ³ë·ÂÀ» ÁÙ¿© µ¥ÀÌÅÍ ¾×¼¼½º °èÃþÀÇ ±¸ÇöÀ» Å©°Ô °³¼±ÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ¸¸µé¾îÁ³´Ù.

 

±×·¡¼­ Spring¿¡¼­´Â ±¸ÇöüµéÀ» Á» ´õ ½±°Ô »ç¿ëÇÏ°íÀÚ Ãß»óÈ­½ÃŲ Spring Data JPA¶ó´Â ¸ðµâÀ» ÀÌ¿ëÇÏ¿© JPA ±â¼úÀ» ´Ù·é´Ù.

  • Spring Data JPA  ¡æ Hibernate ¡æ JPA

Ư¡

  1. Spring ¹× JPA±â¹ÝÀÇ Repo ±¸ÃàÀ» À§ÇÑ Á¤±³ÇÑ Áö¿ø
  2. Querydsl Äõ¸® Áö¿ø ¹× ÀÌ¿¡ µû¸¥ ¾ÈÀüÇÑ JPA Äõ¸® ó¸®
  3. µµ¸ÞÀΠŬ·¡½ºÀÇ Åõ¸íÇÑ °¨»ç
  4. pagination Áö¿ø, µ¿Àû Äõ¸® ½ÇÇà, ¸ÂÃãÇü µ¥ÀÌÅÍ ¾×¼¼½º ÄÚµå ÅëÇÕ ±â´É
  5. @Query°¡ ¸í½ÃµÈ Äõ¸®´Â  ºÎÆ®½ºÆ®·¦ ½Ã°£¿¡ À¯È¿¼º °Ë»ç
  6. XML ±â¹Ý ¿£Æ¼Æ¼ ¸ÅÇÎ Áö¿ø
  7. @EnableJpaRepositoriesÀ» Áö¿øÇÏ¿© JavaConfig±â¹Ý ÀúÀå¼Ò ±¸¼º

 

Hiberante vs Spring Data JPA

Hibernate¿Í Spring Data JPA´Â Å« Â÷ÀÌ°¡ ¾ø´Âµ¥ ¿Ö ±»ÀÌ Spring Data JPA¸¦ »ç¿ëÇØ¾ß ÇÒ±î?

 

1.±¸Çöü ±³Ã¼ ¿ëÀ̼º

Hibernate¿Ü¿¡ ´Ù¸¥ ±¸Çöü·Î ½±°Ô ±³Ã¼Çϱâ À§ÇÔÀÌ´Ù. Hibernate¿¡ ´ëÇÑ ÀÇÁ¸¼ºÀ» ³·Ãß°í ¸¸¾à »õ·Ó°Ô ÁÁÀº ±¸Çöü°¡ ³ª¿Â´Ù¸é Spring Data JPA´Â ÇØ´ç ±¸Çöü·Î ½±°Ô ±³Ã¼ÇÒ ¼ö ÀÖ´Ù. 

  • ½ÇÁ¦ ¿¹½Ã·Î´Â ÀÚ¹Ù Redis Ŭ¶óÀ̾ðÆ®°¡ Jedis¿¡¼­ Lettuce·Î ´ë¼¼°¡ ³Ñ¾î°¥ ¶§ Spring Data Redis¸¦ »ç¿ëÇÏ´ø »ç¶÷µéÀº ½±°Ô ±³Ã¼¸¦ Çß´Ù.

 

2. ÀúÀå¼Ò ±³Ã¼ ¿ëÀ̼º

À§¿Í ¸¶Âù°¡Áö·Î ÀÇÁ¸¼ºÀ» ³·Ãß°í °ü°èÇü DB ¿Ü¿¡ ´Ù¸¥ ÀúÀå¼Ò·Î ½±°Ô ±³Ã¼Çϱâ À§ÇÔÀÌ´Ù. ¼­ºñ½º Ãʱ⿡´Â °ü°èÇü DB·Î ¸ðµç ±â´ÉÀ» ó¸®ÇßÁö¸¸, Á¡Á¡ Æ®·¡ÇÈÀÌ ¸¹¾ÆÁ® °ü°èÇü DB·Î´Â µµÀúÈ÷ °¨´çÀÌ ¾ÈµÉ ¶§°¡ ¿Ã ¼öµµ ÀÖ´Ù. À̶§  MongoDB·Î ±³Ã¼°¡ ÇÊ¿äÇÏ´Ù¸é °³¹ßÀÚ´Â Spring Data JPA¿¡¼­ Spring Data MongoDB·Î ÀÇÁ¸¼º¸¸ ±³Ã¼ÇÏ¸é µÈ´Ù.

 

 ¡æ Spring DataÀÇ ÇÏÀ§ ÇÁ·ÎÁ§Æ®µé(Spring Data JPA, Spring Data Redis, Spring Data MongoDB µîµî)Àº ±âº»ÀûÀÎ CRUDÀÇ ÀÎÅÍÆäÀ̽º(save(), findAll, findOne() µî)°¡ °°´Ù. ±×·¯´Ù º¸´Ï ÀúÀå¼Ò°¡ ±³Ã¼µÇ¾îµµ ±âº»ÀûÀÎ ±â´ÉÀº º¯°æÇÒ °ÍÀÌ ¾ø±â ¶§¹®¿¡ SpringÆÀ¿¡¼­´Â Hibernate¸¦ Á÷Á¢ ¾²´Â °Íº¸´Ù Spring Data ÇÁ·ÎÁ§Æ®¸¦ ±ÇÀåÇÑ´Ù.

 


¡ØÂü°í

https://spring.io/projects/spring-data-jpa

½ºÇÁ¸µ ºÎÆ®¿Í AWS·Î È¥ÀÚ ±¸ÇöÇÏ´Â À¥ ¼­ºñ½º - À̵¿¿í