°£Æí°áÁ¦, ½Å¿ëÄ«µå û±¸ÇÒÀÎ
ÀÎÅÍÆÄÅ© ·Ôµ¥Ä«µå 5% (42,750¿ø)
(ÃÖ´ëÇÒÀÎ 10¸¸¿ø / Àü¿ù½ÇÀû 40¸¸¿ø)
ºÏÇǴϾð ·Ôµ¥Ä«µå 30% (31,500¿ø)
(ÃÖ´ëÇÒÀÎ 3¸¸¿ø / 3¸¸¿ø ÀÌ»ó °áÁ¦)
NH¼îÇÎ&ÀÎÅÍÆÄÅ©Ä«µå 20% (36,000¿ø)
(ÃÖ´ëÇÒÀÎ 4¸¸¿ø / 2¸¸¿ø ÀÌ»ó °áÁ¦)
Close

½ºÇÁ¸µ ºÎÆ® JPA ¸ð¹ü »ç·Ê : ½ºÇÁ¸µ ºÎÆ® ±â¹Ý ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ÀÇ JPA ¼º´É ÃÖÀûÈ­

¿øÁ¦ : Spring Boot Persistence Best Practices: Optimize Java Persistence Performance in Spring Boot Applications
¼Òµæ°øÁ¦

2013³â 9¿ù 9ÀÏ ÀÌÈÄ ´©Àû¼öÄ¡ÀÔ´Ï´Ù.

ÆǸÅÁö¼ö 329
?
ÆǸÅÁö¼ö¶õ?
»çÀÌÆ®ÀÇ ÆǸŷ®¿¡ ±â¹ÝÇÏ¿© ÆǸŷ® ÃßÀ̸¦ ¹Ý¿µÇÑ ÀÎÅÍÆÄÅ© µµ¼­¿¡¼­ÀÇ µ¶¸³ÀûÀÎ ÆǸŠÁö¼öÀÔ´Ï´Ù. ÇöÀç °¡Àå Àß Æȸ®´Â »óÇ°¿¡ °¡ÁßÄ¡¸¦ µÎ¾ú±â ¶§¹®¿¡ ½ÇÁ¦ ´©Àû ÆǸŷ®°ú´Â ´Ù¼Ò Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÆǸŷ® ¿Ü¿¡µµ ´Ù¾çÇÑ °¡ÁßÄ¡·Î ±¸¼ºµÇ¾î ÃÖ±ÙÀÇ À̽´µµ¼­ È®Àνà À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇØ´ç Áö¼ö´Â ¸ÅÀÏ °»½ÅµË´Ï´Ù.
Close
°øÀ¯Çϱâ
Á¤°¡

50,000¿ø

  • 45,000¿ø (10%ÇÒÀÎ)

    2,500P (5%Àû¸³)

ÇÒÀÎÇýÅÃ
Àû¸³ÇýÅÃ
  • S-Point Àû¸³Àº ¸¶ÀÌÆäÀÌÁö¿¡¼­ Á÷Á¢ ±¸¸ÅÈ®Á¤ÇϽŠ°æ¿ì¸¸ Àû¸³ µË´Ï´Ù.
Ãß°¡ÇýÅÃ
¹è¼ÛÁ¤º¸
  • 5/3(±Ý) À̳» ¹ß¼Û ¿¹Á¤  (¼­¿ï½Ã °­³²±¸ »ï¼º·Î 512)
  • ¹«·á¹è¼Û
ÁÖ¹®¼ö·®
°¨¼Ò Áõ°¡
  • À̺¥Æ®/±âȹÀü

  • ¿¬°üµµ¼­

  • »óÇ°±Ç

AD

Ã¥¼Ò°³

Ãֱ٠Ŭ¶ó¿ìµå ³×ÀÌƼºê(cloud-native) ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà¿¡ ¸¹ÀÌ È°¿ëµÇ´Â ½ºÇÁ¸µ ºÎÆ®(Spring Boot) ±â¹Ý¿¡¼­, µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú·Î Àα⸦ ²ø°í ÀÖ´Â °ÍÀÌ ¹Ù·Î JPA(Java Persistence API)´Ù. ±×·¯³ª JPA´Â Àͼ÷ÇÏ´ø ±âÁ¸ÀÇ ¹æ½Ä°ú´Â ´Þ¸® ³»ºÎÀûÀΠó¸® ¸ÞÄ¿´ÏÁòÀ» ¾î´À Á¤µµ ÀÌÇØÇØ¾ß ¾î·Á¿ò ¾øÀÌ È°¿ëÇÒ ¼ö ÀÖ´Ù. ƯÈ÷, À߸ø ¼³°èµÈ ¿¬°ü°ü°è(association) µîÀº ¼º´É¿¡ ¸¹Àº ¿µÇâÀ» Áֱ⵵ ÇÑ´Ù.
ÀÌ Ã¥Àº JPAÀÇ ´Ù¾çÇÑ Ãø¸é, ƯÈ÷ ¼º´É°ú °ü·ÃµÈ À̽´¿Í À̸¦ ÇØ°áÇÏ´Â 120°³ ÀÌ»óÀÇ ¸ð¹ü »ç·Ê¸¦ ´Ù·é´Ù. ½Ç¿ëÀûÀÎ ·¹½ÃÇǸ¦ Áß½ÉÀ¸·Î ±¸¼ºµÇ°í, °¢ ·¹½ÃÇÇ´Â ¼º´É °ü·Ã »ç·Ê¸¦ ÁßÁ¡ÀûÀ¸·Î ´Ù·ç°í ÀÖÀ¸¸ç, ¿©·¯ ½ºÅ¸ÀÏ(¼ø¼ö ÇÏÀ̹ö³×ÀÌÆ® »ç¿ë, ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA µî)·Î ÀÛ¼ºµÈ ¿ÂÀüÇÑ ¸¹Àº ¿¹Á¦¸¦ Á¦°øÇÏ°í ÀÖ´Ù.

¡ß ½ºÇÁ¸µ, ½ºÇÁ¸µ ºÎÆ®, ÇÏÀ̹ö³×ÀÌÆ®¸¦ »ç¿ëÇØ ÀÚ¹Ù¿¡¼­ µ¥ÀÌÅÍ À¯ÁöÇÏ´Â ¹æ¹ý
¡ß ´õƼ Æ®·¡Å· È°¼ºÈ­ ¹æ¹ý
¡ß ´Ù´ë´Ù ¿¬°ü°ü°è¸¦ È¿À²ÀûÀ¸·Î ±¸¼ºÇÏ°í List¿Í Set ¼±ÅÃÀ» °áÁ¤ÇÏ´Â ¹æ¹ý
¡ß MySQLÀ» ÅëÇÑ µ¥ÀÌÅÍ ½ºÆ®¸®¹Ö ¹æ¹ý
¡ß ´ÜÀÏ SELECT·Î ºÎ¸ð Ãø°ú ¿¬°ü°ü°è¸¦ È¿À²ÀûÀ¸·Î °¡Á®¿À´Â ¹æ¹ý
¡ß Æ÷Å©(fork)/Á¶ÀÎ(join) ÇÁ·¹ÀÓ¿öÅ©¸¦ ÅëÇÑ ¹èÄ¡ ÆÄÀÏ Ã³¸® ¹æ¹ý
¡ß Ä÷º¼Ç ¹× Ä¿³Ø¼Ç ÀÛ¾÷ ¹æ¹ý
¡ß Äõ¸®, Àá±Ý, ½ºÅ°¸¶, ÇÏÀ̹ö³×ÀÌÆ® ŸÀÔ¿¡ ´ëÇÑ Ã³¸® ¹æ¹ý

ÃâÆÇ»ç ¼­Æò

¢Â ¿Å±äÀÌÀÇ ¸» ¢Â

½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©, ƯÈ÷ Ãֱ٠Ŭ¶ó¿ìµå ³×ÀÌƼºê(cloud-native) ±â¹Ý ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà¿¡ ¸¹ÀÌ »ç¿ëµÇ´Â ½ºÇÁ¸µ ºÎÆ® ±â¹Ý¿¡¼­ µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú·Î Àα⸦ ²ø°í ÀÖ´Â °ÍÀÌ ¹Ù·Î JPA(Java Persistence API)´Ù. °³º° µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¸¶´Ù ³×ÀÌƼºê(native) Äõ¸®¸¦ ÀÛ¼ºÇØ¾ß ÇÏ´Â MyBatis³ª Äڵ忡 Á÷Á¢ Äõ¸®¸¦ ÀÛ¼ºÇÏ´Â JDBC ±â¹Ý °³¹ßÀº DBMS ´ë»óÀ» È®´ëÇϱⰡ ½±Áö ¾ÊÁö¸¸, JPAÀÇ °æ¿ì °£´ÜÇÑ ¼³Á¤ º¯°æ¸¸À¸·Î ¿©·¯ DBMS¿Í ¹öÀüÀ» ¼Õ½±°Ô Áö¿øÇϴ Ư¡À» °®´Â´Ù. ¹«¾ùº¸´Ùµµ SQL Áß½ÉÀÌ ¾Æ´Ñ °´Ã¼ÁöÇâÀû ¼³°è ¹× °³¹ß ¹æ½ÄÀ» Áö¿øÇÑ´Ù.
±×·¯³ª JPA´Â ±âÁ¸¿¡ Àͼ÷ÇÏ´ø ¹æ½ÄÀ̳ª Á÷°üÀûÀÎ ´Ù¸¥ µ¥ÀÌÅÍ ¾×¼¼½º ±â¼ú°ú´Â ´Þ¸® ³»ºÎÀûÀΠó¸® ¸ÞÄ¿´ÏÁòÀ» ¾î´À Á¤µµ ¾Ë°í µ¿ÀÛ ¹æ½ÄÀ» ÀÌÇØÇØ¾ß ¾î·Á¿ò ¾øÀÌ È°¿ëÇÒ ¼ö ÀÖ´Ù. Áï, ÇнÀ °î¼±(learning curve)ÀÌ °¡Æĸ£´Ù. ƯÈ÷ À߸ø ¼³°èµÈ ¿£ÅÍƼ(entity)´Â ¼º´É¿¡ ¸¹Àº ¿µÇâÀ» Áֱ⵵ ÇÏ°í, Á¤È®ÇÏ°Ô ¼³Á¤µÇÁö ¾ÊÀº ¿¬°ü°ü°è(association)´Â ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â µîÀÇ ³­Ç×À» °Þ´Â °æ¿ì°¡ ¸¹´Ù.
ÀÌ Ã¥Àº JPA¿¡ ´ëÇÑ ´Ù¾çÇÑ Ãø¸é, ƯÈ÷ ¼º´É°ú °ü·ÃµÈ À̽´¿Í ÀÌ¿¡ ´ëÇÑ ÇØ°á ¹æ¹ýÀ» ´Ù·é´Ù. ´Ù¸¸ JPAÀÇ ±âÃʸ¦ ´Ù·çÁö ¾Ê°í JPA »ç¿ë¿¡ ´ëÇÑ ±âº» Áö½ÄÀ» °®°í ÀÖ¾î¾ß º¼ ¼ö ÀÖ´Â ¼öÁØÀ¸·Î, JPA¸¦ ÀÌ¹Ì »ç¿ëÇÏ°í ÀÖ´Â °³¹ßÀÚ¸¦ À§ÇÑ ·¹½ÃÇÇ(recipe)¿Í ¸ð¹ü »ç·Ê(best practices)¸¦ ¸ð¾Ò´Ù. ½Ç¿ëÀûÀÎ ·¹½ÃÇǸ¦ Áß½ÉÀ¸·Î ±¸¼ºµÇ°í, °¢ ·¹½ÃÇÇ´Â ¼º´É »ç·Ê ¶Ç´Â ¼º´É °ü·Ã »ç·Ê¸¦ ÁßÁ¡ÀûÀ¸·Î ´Ù·ç°í ÀÖÀ¸¸ç ¿©·¯ ½ºÅ¸ÀÏ(¼ø¼ö ÇÏÀ̹ö³×ÀÌÆ® »ç¿ë, ½ºÇÁ¸µ µ¥ÀÌÅÍ JPA µî)·Î ÀÛ¼ºµÈ ¿ÂÀüÇÑ ¸¹Àº ¿¹Á¦¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù.

̵̧ȍ


°£´ÜÈ÷ ¸»ÇØ ÀÌ Ã¥Àº ½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÚ¹Ù ¿µ¼Ó¼º(Persistence) ¼º´É¿¡ ´ëÇÑ ¸ð¹ü »ç·Ê ¸ðÀ½ÁýÀÌ´Ù. ¸ð¹ü »ç·Ê´Â 120°³ ÀÌ»óÀÇ Ç׸ñÀ» ÅëÇØ Á¦°øµÇ¸ç, ´ÙÀ½°ú °°ÀÌ 3°¡Áö ¹üÁÖ·Î ºÐ·ùµÈ´Ù.
ù°, ¿£ÅÍƼ Á¤ÀÇ, °ü°è ¸ÅÇÎ, Äõ¸® ÀÛ¼º, µ¥ÀÌÅÍ °¡Á®¿À±â, ½Äº°ÀÚ(identifier) »ý¼º±â(generator) ¼±Åà µî¿¡ ´ëÇÑ ¸ð¹ü »ç·Ê¸¦ ´Ù·é´Ù. ÁÖ·Î ½ºÇÁ¸µ ºÎÆ® ±âº» Á¦°ø ¾ÆƼÆÑÆ®(artifact)·Î µµ¿òÀ» ¹ÞÀ» ¼ö ¾ø´Â ¿µ¿ª°ú ¼öÁ¤ÀÌ ¾î·Æ°í µµ¸ÞÀÎ ¸ðµ¨¿¡ »ó´çÇÑ º¯°æÀ» ÇÊ¿ä·Î ÇÏ´Â ½É°¢ÇÑ ¼º´É ÀúÇÏ ¹æÁö¸¦ ´Ù·é´Ù.
µÑ°, ½ºÇÁ¸µ ºÎÆ® Áö¿ø ±â´É(´õ Á¤È®ÇÏ°Ô´Â ½ºÇÁ¸µ µ¥ÀÌÅÍ) »ç¿ëÀ» À§ÇÑ ¸ð¹ü »ç·Ê¸¦ ´Ù·é´Ù. ±âº» Áö¿ø ±â´ÉÀÇ ¹¦Ã¥À» È°¿ëÇÏ´Ù º¸¸é ¼º´ÉÀÌ ÀúÇ쵃 ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î OSIV(Open Session in View), ¿ÀÇÁ¼Â ÆäÀÌÁö³×À̼Ç(offset pagination), Ä¿¹Ô ÈÄ ÈÄÅ©(post-commits hook), @Transactional¿¡ ´ëÇÑ ¿ÀÇØ´Â ´Ù·ç´Â ÁÖÁ¦ Áß ÀϺο¡ ºÒ°úÇÏ´Ù. ¿©·¯ºÐÀº ÀÌ ¹üÀ§ Ç׸ñµé¿¡ ¶Ù¾îµé Áغñ°¡ µÅ ÀÖ°í Èï¹Ì¸¦ ´À³¥ °ÍÀ̶ó È®½ÅÇÑ´Ù.
¼Â°, ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼º´ÉÀ» À¯ÁöÇÒ ¼ö ÀÖ´Â ¸î °¡Áö ÇÏÀ̹ö³×ÀÌÆ® ±â´ÉÀ» ÀÚ¼¼È÷ ¾Ë¾Æº»´Ù. ±âº»ÀûÀ¸·Î ½ºÇÁ¸µ µ¥ÀÌÅÍ´Â ¿µ¼Ó¼º °ø±ÞÀÚ·Î, ÇÏÀ̹ö³×ÀÌÆ®¸¦ »ç¿ëÇϱ⿡ ½ºÇÁ¸µ µ¥ÀÌÅ͸¦ ÅëÇØ ÇÏÀ̹ö³×ÀÌÆ®¸¦ È°¿ëÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó ÇÏÀ̹ö³×ÀÌÆ® ÀÚü·Îµµ È°¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÀ̹ö³×ÀÌÆ® ÇÁ·Ï½Ã(proxy)¸¦ ÅëÇÑ ÀÚ½Ä Ãø ºÎ¸ð ¿¬°ü°ü°è ä¿ì±â(populating), ´õƼ Æ®·¡Å·(Dirty Tracking), Ä¿³Ø¼Ç(connection) ȹµæ Áö¿¬, Áö¿¬ ·Îµù(lazy loading) ¼Ó¼º, ÀÚ¿¬Å°(natural key) »ç¿ë°ú °°Àº ÁÁÀº ±â´ÉÀº ´Ù·ç´Â Ç׸ñ Áß ÀϺο¡ ºÒ°úÇÏ´Ù.
ÀÌ Ã¥ÀÇ ÀüÁ¦ Á¶°ÇÀº ¸Å¿ì ¸íÈ®ÇÏ´Ù. IDE(¿¹: NetBeans, Eclipse, IntelliJ IDEA, Visual Studio µî), MySQL ¹× PostgreSQLÀÌ ÇÊ¿äÇÏ´Ù. ¼±ÅÃÀûÀ¸·Î ´Ù¸¥ µ¥ÀÌÅͺ£À̽º º¥´õ(¿¹: ¿À¶óŬ, SQL ¼­¹ö µî)¸¦ ¼³Ä¡Çϰųª »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¸ñÂ÷

1Àå. ¿¬°ü°ü°è
__Ç׸ñ 1: @OneToMany ¿¬°ü°ü°è¸¦ È¿°úÀûÀ¸·Î ±¸¼ºÇÏ´Â ¹æ¹ý
____Ç×»ó ºÎ¸ð Ãø¿¡¼­ ÀÚ½Ä ÃøÀ¸·Î ÀüÀ̸¦ »ç¿ë
____ºÎ¸ð Ãø¿¡ mappedBy ÁöÁ¤
____ºÎ¸ð Ãø¿¡ orphanRemoval ÁöÁ¤
____¿¬°ü°ü°èÀÇ ¾çÃøÀ» µ¿±âÈ­ »óÅ·ΠÀ¯Áö
____equals()¿Í hashCode() ¿À¹ö¶óÀ̵ù
____¿¬°ü°ü°è ¾çÃø¿¡¼­ Áö¿¬ ·Îµù »ç¿ë
____toString() ¿À¹ö¶óÀ̵ù ¹æ¹ý¿¡ ÁÖÀÇ
____@JoinColumnÀ» »ç¿ëÇØ Á¶ÀÎ Ä®·³ ÁöÁ¤
____Author ¹× Book »ùÇà ÄÚµå
__Ç׸ñ 2: ´Ü¹æÇâ @OneToMany ¿¬°ü°ü°è¸¦ ÇÇÇØ¾ß ÇÏ´Â ÀÌÀ¯
____ÀϹÝÀûÀÎ ´Ü¹æÇâ @OneToMany
____@OrderColumn »ç¿ë
____@JoinColumn »ç¿ë
__Ç׸ñ 3: ´Ü¹æÇâ @ManyToOneÀÇ È¿À²¼º
____ƯÁ¤ ÀúÀÚ¿¡°Ô »õ µµ¼­ Ãß°¡
____ÀúÀÚÀÇ ¸ðµç µµ¼­ °¡Á®¿À±â
____ÀúÀÚÀÇ µµ¼­ ÆäÀÌ¡ ó¸®
____ÀúÀÚÀÇ ¸ðµç µµ¼­ °¡Á®¿À±â¿Í »õ·Î¿î µµ¼­ Ãß°¡
____ÀúÀÚÀÇ ¸ðµç µµ¼­ °¡Á®¿À±â¿Í µµ¼­ »èÁ¦
__Ç׸ñ 4: @ManyToMany ¿¬°ü°ü°è¸¦ È¿°úÀûÀ¸·Î ±¸¼ºÇÏ´Â ¹æ¹ý
____°ü°èÀÇ ¿À³Ê ¼±ÅÃ
____Ç×»ó List°¡ ¾Æ´Ñ Set »ç¿ë
____¿¬°ü°ü°èÀÇ ¾çÃø µ¿±âÈ­ »óÅ À¯Áö
____CascadeType.ALL ¹× CascadeType.REMOVE »ç¿ëÇÏÁö ¾Ê±â
____Á¶ÀÎ Å×ÀÌºí ¼³Á¤
____¿¬°ü°ü°è ¾çÃø¿¡¼­ Áö¿¬ ·Îµù »ç¿ë
____equals() ¹× hashCode() ¿À¹ö¶óÀ̵ù
____toString() ¿À¹ö¶óÀ̵ù ¹æ¹ý¿¡ ÁÖÀÇ
____Author ¹× Book »ùÇà ÄÚµå
__Ç׸ñ 5: @ManyToMany¿¡¼­ SetÀÌ Listº¸´Ù ³ªÀº ÀÌÀ¯
____List »ç¿ë
____Set »ç¿ë
__Ç׸ñ 6: CascadeType.REMOVE ¹× orphanRemoval=true¸¦ »ç¿ëÇØ ÇÏÀ§ ¿£ÅÍƼ Á¦°Å¸¦ ÇÇÇØ¾ß ÇÏ´Â ÀÌÀ¯¿Í ½Ã±â
____¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡ ÀÌ¹Ì ·ÎµåµÈ ÀúÀÚ »èÁ¦
____ÇϳªÀÇ ÀúÀÚ¸¸ ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡ ·ÎµåµÈ °æ¿ì
____¿©·¯ ÀúÀÚ°¡ ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡ ·ÎµåµÈ °æ¿ì
____ÇÑ ÀúÀÚ¿Í °ü·Ã µµ¼­µéÀÌ ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡ ·ÎµåµÈ °æ¿ì
____»èÁ¦ÇØ¾ß ÇÒ ÀúÀÚ¿Í µµ¼­°¡ ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡ ·ÎµåµÇÁö ¾ÊÀº °æ¿ì »èÁ¦
__Ç׸ñ 7: JPA ¿£ÅÍƼ ±×·¡ÇÁ¸¦ ÅëÇØ ¿¬°ü°ü°è¸¦ °¡Á®¿À´Â ¹æ¹ý
____NamedEntityGraph·Î ¿£ÅÍƼ ±×·¡ÇÁ Á¤ÀÇ
____Äõ¸® ¸Þ¼­µå ¿À¹ö¶óÀ̵ù
____Äõ¸® ºô´õ ¸ÞÄ¿´ÏÁò »ç¿ë
____Specification »ç¿ë
____@Query ¹× JPQL »ç¿ë
____¾ÖµåȤ ¿£ÅÍƼ ±×·¡ÇÁ
____EntityManager¸¦ ÅëÇÑ ¿£ÅÍƼ ±×·¡ÇÁ Á¤ÀÇ
__Ç׸ñ 8: JPA ¿£ÅÍƼ ¼­ºê±×·¡ÇÁ¸¦ ÅëÇØ ¿¬°ü°ü°è¸¦ °¡Á®¿À´Â ¹æ¹ý
____@NamedEntityGraph ¹× @NamedSubgraph »ç¿ë
____¾ÖµåȤ ¿£ÅÍƼ ±×·¡ÇÁ¿¡¼­ Á¡ ³ëÅ×À̼Ç(.) »ç¿ë
____EntityManager¸¦ ÅëÇÑ ¿£ÅÍƼ ¼­ºê±×·¡ÇÁ Á¤ÀÇ
__Ç׸ñ 9: ¿£ÅÍƼ ±×·¡ÇÁ ¹× ±âº» ¼Ó¼º ó¸® ¹æ¹ý
__Ç׸ñ 10: ÇÏÀ̹ö³×ÀÌÆ® @Where ¾î³ëÅ×À̼ÇÀ» ÅëÇÑ ¿¬°ü°ü°è ÇÊÅ͸µ ó¸®
__Ç׸ñ 11: @MapsId¸¦ ÅëÇÑ ´Ü¹æÇâ/¾ç¹æÇâ @OneToOne ÃÖÀûÈ­ ¹æ¹ý
____ÀϹÝÀûÀÎ ´Ü¹æÇâ @OneToOne
____ÀϹÝÀûÀÎ ¾ç¹æÇâ @OneToOne
____@OneToOneÀ» ±¸¿øÇÏ´Â @MapsId
__Ç׸ñ 12: ´Ü ÇϳªÀÇ ¿¬°ü°ü°è¸¸ NullÀÌ ¾Æ´ÑÁö È®ÀÎÇÏ´Â ¹æ¹ý
____Å×½ºÆ® È®ÀÎ

2Àå. ¿£ÅÍƼ
__Ç׸ñ 13: ¿£ÅÍƼÀÇ Ç÷ç¾ðÆ® API ½ºÅ¸ÀÏ Àû¿ë ¹æ¹ý
____¿£ÅÍƼ ¼¼Å͸¦ ÅëÇÑ Ç÷ç¾ðÆ® ½ºÅ¸ÀÏ
____º°µµ ¸Þ¼­µå¸¦ ÅëÇÑ Ç÷ç¾ðÆ® ½ºÅ¸ÀÏ
__Ç׸ñ 14: ÇÏÀ̹ö³×ÀÌÆ® ÇÁ·Ï½Ã¸¦ ÅëÇÑ ÀÚ½Ä Ãø¿¡¼­ ºÎ¸ð ¿¬°ü°ü°è ä¿ì±â
____findById() »ç¿ë
____getOne() »ç¿ë
__Ç׸ñ 15: ¿µ¼Ó¼º ·¹À̾¼­ ÀÚ¹Ù 8 Optional »ç¿ë ¹æ¹ý
____¿£ÅÍƼ¿¡¼­ÀÇ Optional
____¸®Æ÷ÁöÅ͸®¿¡¼­ÀÇ Optional
__Ç׸ñ 16: ºÒº¯ ¿£ÅÍƼ ÀÛ¼º ¹æ¹ý
__Ç׸ñ 17: ¿£ÅÍƼ º¹Á¦ ¹æ¹ý
____ºÎ¸ð º¹Á¦¿Í µµ¼­¿¡ ´ëÇÑ ¿¬°ü°ü°è ÁöÁ¤
____ºÎ¸ð ¹× µµ¼­ º¹Á¦
____Çϳª·Î ó¸®
__Ç׸ñ 18: ´õƼ Æ®·¡Å·À» È°¼ºÈ­ÇÏ´Â ÀÌÀ¯¿Í ¹æ¹ý
__Ç׸ñ 19: ºÒ¸®¾ðÀ» Yes/No·Î ¸ÅÇÎÇÏ´Â ¹æ¹ý
__Ç׸ñ 20: ¾Ö±×¸®°ÅÆ® ·çÆ®·ÎºÎÅÍ ÃÖÀûÀÇ µµ¸ÞÀÎ À̺¥Æ® ¹ßÇà
____µ¿±â½Ä ½ÇÇà
____ºñµ¿±â½Ä ½ÇÇà

3Àå. ÆäÄ¡
__Ç׸ñ 21: ´ÙÀÌ·ºÆ® ÆäÄ¡ »ç¿ë ¹æ¹ý
____½ºÇÁ¸µ µ¥ÀÌÅ͸¦ ÅëÇÑ ´ÙÀÌ·ºÆ® ÆäÄ¡
____EntityManager¸¦ ÅëÇÑ ´ÙÀÌ·ºÆ® ÆäÄ¡
____ÇÏÀ̹ö³×ÀÌÆ® SessionÀ» ÅëÇÑ ´ÙÀÌ·ºÆ® ÆäÄ¡
____´ÙÀÌ·ºÆ® ÆäÄ¡ ¹× ¼¼¼Ç ¼öÁØ ¹Ýº¹ Àбâ
____ID·Î ¿©·¯ ¿£ÅÍƼ ´ÙÀÌ·ºÆ® ÆäÄ¡
__Ç׸ñ 22: ¹Ì·¡ ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡¼­ µ¥ÀÌÅͺ£À̽º º¯°æ »çÇ× ÀüÆĸ¦ À§ÇÑ Àбâ Àü¿ë ¿£ÅÍƼÀÇ »ç¿ë ÀÌÀ¯
____Àбâ-¾²±â ¸ðµå·Î Author ·Îµå
____Àбâ Àü¿ë ¸ðµå·Î Author ·Îµå
____Author ¼öÁ¤
__Ç׸ñ 23: ÇÏÀ̹ö³×ÀÌÆ® Bytecode Enhancement¸¦ ÅëÇÑ ¿£ÅÍƼ ¼Ó¼º Áö¿¬ ·Îµù ¹æ¹ý
____¼Ó¼º¿¡ ´ëÇÑ Áö¿¬ ·Îµù È°¼ºÈ­
____¼Ó¼º Áö¿¬ ·Îµù°ú N+1
____¼Ó¼º Áö¿¬ ·Îµù°ú Áö¿¬ ÃʱâÈ­ ¿¹¿Ü
____Áö¿¬ ·Îµå ¼Ó¼º¿¡ ´ëÇÑ ¸í½ÃÀû ±âº»°ª ÁöÁ¤
____Ä¿½ºÅÒ Jackson ÇÊÅÍ Á¦°ø
__Ç׸ñ 24: ¼­ºê¿£ÅÍƼ¸¦ ÅëÇÑ ¿£ÅÍƼ ¼Ó¼º Áö¿¬ ·Îµù ¹æ¹ý
__Ç׸ñ 25: ½ºÇÁ¸µ ÇÁ·ÎÁ§¼ÇÀ» ÅëÇÑ DTO °¡Á®¿À±â
____JPA ³×ÀÓµå (³×ÀÌƼºê) Äõ¸® ¹× ½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç °áÇÕ »ç¿ë
____Ŭ·¡½º ±â¹Ý ÇÁ·ÎÁ§¼Ç
____½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç Àç»ç¿ë ¹æ¹ý
____µ¿Àû ½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç »ç¿ë ¹æ¹ý
__Ç׸ñ 26: ½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç¿¡¼­ ¿£ÅÍƼ¸¦ Ãß°¡ÇÏ´Â ¹æ¹ý
____±¸Ã¼È­µÈ ¿¬°ü°ü°è
____±¸Ã¼È­µÇÁö ¾ÊÀº ¿¬°ü°ü°è
__Ç׸ñ 27: ¿£ÅÍƼÀÇ ÀϺΠ¶Ç´Â ¿ÜºÎ °¡»ó ¼Ó¼ºÀ» ÅëÇÑ ½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç º¸¿Ï ¹æ¹ý
__Ç׸ñ 28: *-to-One ¿¬°ü°ü°è¸¦ Æ÷ÇÔÇÏ´Â ½ºÇÁ¸µ ÇÁ·ÎÁ§¼ÇÀÇ È¿À²Àû ·Îµù ¹æ¹ý
____ÁßøµÈ ´ÝÈù ÇÁ·ÎÁ§¼Ç »ç¿ë
____´Ü¼ø ´ÝÈù ÇÁ·ÎÁ§¼Ç »ç¿ë
____´Ü¼ø ¿­¸° ÇÁ·ÎÁ§¼Ç »ç¿ë
__Ç׸ñ 29: ¿¬°üµÈ Ä÷º¼ÇÀ» Æ÷ÇÔÇÏ´Â ½ºÇÁ¸µ ÇÁ·ÎÁ§¼Ç ÁÖÀÇ »çÇ×
____ÁßøµÈ ´ÝÈù ÇÁ·ÎÁ§¼Ç »ç¿ë
____´Ü¼ø ´ÝÈù ÇÁ·ÎÁ§¼Ç »ç¿ë
____DTO¿¡¼­ List¡´Object[]¡µ º¯È¯
__Ç׸ñ 30: ½ºÇÁ¸µ ÇÁ·ÎÁ§¼ÇÀ» ÅëÇÑ ¸ðµç ¼Ó¼º °¡Á®¿À´Â ¹æ¹ý
____Äõ¸® ºô´õ ¸ÞÄ¿´ÏÁò »ç¿ë
____JPQL ¹× @Query »ç¿ë
____¸í½ÃÀû Ä®·³ ¸ñ·Ï ¹× @Query¿Í ÇÔ²² JPQL »ç¿ë
____³×ÀÌƼºê Äõ¸®¿Í @Query »ç¿ë
__Ç׸ñ 31: »ý¼ºÀÚ Ç¥Çö½ÄÀ» ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 32: »ý¼ºÀÚ Ç¥Çö½ÄÀ» ÅëÇØ DTO¿¡¼­ ¿£ÅÍƼ¸¦ °¡Á®¿ÀÁö ¸»¾Æ¾ß ÇÏ´Â ÀÌÀ¯
__Ç׸ñ 33: JPA TupleÀ» ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 34: @SqlResultSetMapping ¹× @NamedNativeQuery¸¦ ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
____½ºÄ®¶ó ¸ÅÇÎ
____»ý¼ºÀÚ ¸ÅÇÎ
____¿£ÅÍƼ ¸ÅÇÎ
__Ç׸ñ 35: ResultTransformer¸¦ ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 36: Ä¿½ºÅÒ ResultTransformer¸¦ ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 37: @Subselect¸¦ ÅëÇØ ¿£ÅÍƼ¸¦ Äõ¸®¿¡ ¸ÅÇÎÇÏ´Â ¹æ¹ý
__Ç׸ñ 38: Blaze-Persistence ¿£ÅÍƼ ºä¸¦ ÅëÇØ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 39: ´ÜÀÏ SELECT·Î ºÎ¸ð¿Í ¿¬°ü°ü°è¸¦ È¿À²ÀûÀ¸·Î °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 40: JOIN°ú JOIN FETCH °áÁ¤ ¹æ¹ý
____ÁÖ¾îÁø °¡°Ýº¸´Ù ºñ½Ñ Àú¼­¸¦ Àú¼úÇÑ ¸ðµç ÀúÀÚ °¡Á®¿À±â
____¸ðµç Àú¼­¿Í ÀúÀÚ °¡Á®¿À±â
__Ç׸ñ 41: ¸ðµç ¿ÞÂÊ ¿£ÅÍƼ¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 42: °ü·Ã ¾ø´Â ¿£ÅÍƼ·ÎºÎÅÍ DTO¸¦ °¡Á®¿À´Â ¹æ¹ý
__Ç׸ñ 43: JOIN¹® ÀÛ¼º ¹æ¹ý
____INNER JOIN
____LEFT JOIN
____RIGHT JOIN
____CROSS JOIN
____FULL JOIN
____MySQL¿¡¼­ FULL JOIN ½Ã¹Ä·¹À̼Ç
__Ç׸ñ 44: JOIN ÆäÀÌÁö³×ÀÌ¼Ç ¹æ¹ý
____DENSE_RANK() À©µµ¿ì ÇÔ¼ö ÇØ°á ¹æ¾È
____Ç׸ñ 45: °á°ú ¼¼Æ®¸¦ ½ºÆ®¸²ÇÏ´Â ¹æ¹ý(MySQL) ¹× Streamable À¯Æ¿¸®Æ¼ÀÇ »ç¿ë ¹æ¹ý
____°á°ú ¼¼Æ® ½ºÆ®¸®¹Ö(MySQL)
____Streamable À¯Æ¿¸®Æ¼¿Í ½ºÆ®¸µ È¥µ¿ÇÏÁö ¾Ê±â
____Çʿ亸´Ù ´õ ¸¹Àº ¿­À» °¡Á®¿Í map()À» ÅëÇØ ÀϺΠ»èÁ¦ÇÏÁö ¾Ê±â
____Çʿ亸´Ù ´õ ¸¹Àº ÇàÀ» °¡Á®¿Í filter()À» ÅëÇØ ÀϺΠ»èÁ¦ÇÏÁö ¾Ê±â
____and()¸¦ ÅëÇÑ Streamable °áÇÕ¿¡ ÁÖÀÇ
____Ä¿½ºÅÒ Streamable ·¡ÆÛ Å¸ÀÔÀ» ¹ÝȯÇÏ´Â ¹æ¹ý

4Àå. ¹èÄ¡ ó¸®
__Ç׸ñ 46: ½ºÇÁ¸µ ºÎÆ® ½ºÅ¸ÀÏ ¹èÄ¡ µî·Ï ¹æ¹ý
____¹èÄ¡ ó¸® È°¼ºÈ­ ¹× JDBC URL ¼³Á¤
____¹èÄ¡ µî·ÏÀ» À§ÇÑ ¿£ÅÍƼ Áغñ
____³»Àå saveAll(Iterable¡´S¡µ entities) ´ÜÁ¡ È®ÀÎ ¹× ¹æÁö
____¿Ã¹Ù¸¥ ¹æ¹ýÀÇ Ä¿½ºÅÒ ±¸Çö
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 47: ºÎ¸ð-ÀÚ½Ä °ü°è ¹èÄ¡ µî·Ï ÃÖÀûÈ­ ¹æ¹ý
____¹èÄ¡ ¼ø¼­ ÁöÁ¤
____Ç׸ñ 48: ¼¼¼Ç ¼öÁØ¿¡¼­ ¹èÄ¡ Å©±â Á¦¾î ¹æ¹ý
____Ç׸ñ 49: Æ÷Å©/Á¶ÀÎ JDBC ¹èÄ¡ ó¸® ¹æ¹ý
____Æ÷Å©/Á¶ÀÎ ¹èó ó¸®
__Ç׸ñ 50: CompletableFuture¸¦ ÅëÇÑ ¿£ÅÍƼ ¹èÄ¡ ó¸®
__Ç׸ñ 51: ¹èÄ¡ ¾÷µ¥ÀÌÆ®¿¡ ´ëÇÑ È¿À²ÀûÀΠó¸® ¹æ¹ý
____¹öÀüÀÌ ÁöÁ¤µÈ ¿£ÅÍƼ
____ºÎ¸ð-ÀÚ½Ä °ü°èÀÇ ¹èÄ¡ ¾÷µ¥ÀÌÆ®
____¹úÅ© ¾÷µ¥ÀÌÆ®
__Ç׸ñ 52: È¿À²ÀûÀ¸·Î ¹èÄ¡ »èÁ¦ÇÏ´Â ¹æ¹ý(¿¬°ü°ü°è ¾øÀÌ)
____deleteAllInBatch() ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteInBatch(Iterable¡´T¡µ entities) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteAll() ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____delete(T entity) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
__Ç׸ñ 53: È¿À²ÀûÀ¸·Î ¹èÄ¡ »èÁ¦ÇÏ´Â ¹æ¹ý(¿¬°ü°ü°è¿Í ÇÔ²²)
____orphanRemoval=true »ç¿ë
____deleteAllInBatch() ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteInBatch(Iterable¡´T¡µ entities) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteAll(Iterable¡´? extends T¡µ entities)¿Í delete(T entity) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____SQL, ON DELETE CASCADE »ç¿ë
____deleteAllInBatch() ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteInBatch(Iterable¡´T¡µ entities) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
____deleteAll(Iterable¡´? extends T¡µ entities)¿Í delete(T entity) ³»Àå ¸Þ¼­µå¸¦ ÅëÇÑ »èÁ¦
__Ç׸ñ 54: ¹èÄ¡·Î ¿¬°ü°ü°è °¡Á®¿À´Â ¹æ¹ý
____Ä÷º¼Ç ¼öÁØ¿¡¼­ÀÇ @BatchSize
____Ŭ·¡½º/¿£ÅÍƼ ¼öÁØ¿¡¼­ÀÇ @BatchSize
__Ç׸ñ 55: ¹èÄ¡ µî·Ï¿¡¼­ PostgreSQL (BIG)SERIALÀ» ÇÇÇØ¾ß ÇÏ´Â ÀÌÀ¯
____½Äº°ÀÚ °¡Á®¿À±â ÇÁ·Î¼¼½º ÃÖÀûÈ­
____reWriteBatchedInserts¸¦ ÅëÇÑ ¹èÄ¡ ÃÖÀûÈ­

5Àå. Ä÷º¼Ç
__Ç׸ñ 56: @ElementCollection Ä÷º¼Ç JOIN FETCH ¹æ¹ý
__Ç׸ñ 57: @ElementCollection¿¡ ´ëÇÑ DTO ¹æ¹ý
__Ç׸ñ 58: @ElementCollection°ú @OrderColumnÀ» ÇÔ²² »ç¿ëÇØ¾ß ÇÏ´Â ÀÌÀ¯¿Í ½Ã±â
____@OrderColumnÀ» ÅëÇÑ @ElementCollection ÃÖÀûÈ­
__Ç׸ñ 59: ¿£ÅÍƼ Ä÷º¼Ç º´ÇÕ ¹æ¹ý
____Detached Ä÷º¼Ç º´ÇÕ
____Å×½ºÆ® È®ÀÎ

6Àå. Ä¿³Ø¼Ç°ú Æ®·£Àè¼Ç
__Ç׸ñ 60: ½ÇÁ¦ ÇÊ¿ä ½ÃÁ¡±îÁö Ä¿³Ø¼Ç ȹµæ Áö¿¬ ¹æ¹ý
__Ç׸ñ 61: @Transactional(readOnly=true)ÀÇ ½ÇÁ¦ ÀÛµ¿ ¹æ½Ä
__Ç׸ñ 62: ½ºÇÁ¸µÀÌ @TransactionalÀ» ¹«½ÃÇÏ´Â ÀÌÀ¯
__Ç׸ñ 63: Æ®·£Àè¼Ç ŸÀӾƿô ¼³Á¤ ¹× ·Ñ¹éÀÌ ¿¹»ó´ë·Î ÀÛµ¿ÇÏ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ý
____Æ®·£Àè¼Ç ¹× Äõ¸® ŸÀӾƿô ¼³Á¤
____Æ®·£Àè¼ÇÀÌ ·Ñ¹éµÆ´ÂÁö È®ÀÎ
__Ç׸ñ 64: ¸®Æ÷ÁöÅ͸® ÀÎÅÍÆäÀ̽º¿¡¼­ @TransactionalÀ» »ç¿ëÇÏ´Â ÀÌÀ¯¿Í ¹æ¹ý
____ÀÎÅÍÆäÀ̽º ¸®Æ÷ÁöÅ͸®ÀÇ Äõ¸® ¸Þ¼­µå´Â ±âº»ÀûÀ¸·Î Æ®·£Àè¼Ç ÄÜÅؽºÆ®¿¡¼­ ½ÇÇàµÇ´Â°¡?
____±×·³ ÇØ¾ß ÇÒ ÀÏÀº ¼­ºñ½º ¸Þ¼­µå ¼öÁØ¿¡¼­ @TransactionalÀ» Ãß°¡ÇÏ´Â °Í»ÓÀΰ¡?
____±×·³ ÀϹÝÀû ÇØ´ç ¹æ¹ýÀ¸·Î Ç×»ó ÃæºÐÇÑ°¡?
____¾Ë¾Ò´Ù. ¸®Æ÷ÁöÅ͸® ÀÎÅÍÆäÀ̽º·Î @TransactionalÀ» À̵¿ÇÏÀÚ
____±×·¯³ª ¼­ºñ½º ¸Þ¼­µå¿¡¼­ ´õ ¸¹Àº Äõ¸® ¸Þ¼­µå¸¦ È£ÃâÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ACID¸¦ ÀÒ°Ô µÉ±î?
____±×·³ Ä¿³Ø¼Ç ȹµæÀ» Áö¿¬ÇÏ¸é ¸®Æ÷ÁöÅ͸® ÀÎÅÍÆäÀ̽º¿¡ @TransactionalÀ» »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇ´Â°¡?
____°£´ÜÇÏ°í ÀϹÝÀûÀÎ 3°¡Áö ½Ã³ª¸®¿À

7Àå. ½Äº°ÀÚ
__Ç׸ñ 65: MySQL¿¡¼­ ÇÏÀ̹ö³×ÀÌÆ® 5 AUTO »ý¼ºÀÚ Å¸ÀÔÀ» ÇÇÇØ¾ß ÇÏ´Â ÀÌÀ¯
__Ç׸ñ 66: hi/lo ¾Ë°í¸®µëÀ» ÅëÇÑ ½ÃÄö½º ½Äº°ÀÚ »ý¼º ÃÖÀûÈ­ ¹æ¹ý
____¿ÜºÎ ½Ã½ºÅÛ Ã³¸®
__Ç׸ñ 67: Pooled(-lo) ¾Ë°í¸®µëÀ» ÅëÇÑ ½ÃÄö½º ½Äº°ÀÚ »ý¼º ÃÖÀûÈ­ ¹æ¹ý
____Pooled ¾Ë°í¸®µë
____Pooled-Lo ¾Ë°í¸®µë
__Ç׸ñ 68: equals() ¹× hashCode()¸¦ ¿Ã¹Ù·Î ¿À¹ö¶óÀ̵åÇÏ´Â ¹æ¹ý
____´ÜÀ§ Å×½ºÆ® ±¸¼º
____equals() ¹× hashCode() ¿À¹ö¶óÀ̵ùÀ» À§ÇÑ ÃÖÀûÀÇ Á¢±Ù ¹æ¹ý
____ÇÇÇØ¾ß ÇÒ equals() ¹× hashCode() ¿À¹ö¶óÀ̵ù ¹æ¹ý
__Ç׸ñ 69: ½ºÇÁ¸µ ½ºÅ¸ÀÏ·Î ÇÏÀ̹ö³×ÀÌÆ® @NaturalId¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
____Å×½ºÆ® È®ÀÎ
____º¹ÇÕ ÀÚ¿¬ ID
__Ç׸ñ 70: ÇÏÀ̹ö³×ÀÌÆ® @NaturalId »ç¿ë ¹× ¿£ÅÍƼ ½Äº°ÀÚ Á¶È¸ »ý·« ¹æ¹ý
____@NaturalIdCache ´Üµ¶À¸·Î »ç¿ë
____@NaturalIdCache ¹× @Cache »ç¿ë
__Ç׸ñ 71: @NaturalId Ä®·³ ÂüÁ¶ ¿¬°ü°ü°è Á¤ÀÇ ¹æ¹ý
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 72: ÀÚµ¿ »ý¼º Å°¸¦ ¾ò´Â ¹æ¹ý
____getId()¸¦ ÅëÇÑ ÀÚµ¿ »ý¼º Å° °¡Á®¿À±â
____JdbcTemplateÀ» ÅëÇÑ ÀÚµ¿ »ý¼º Å° °¡Á®¿À±â
____SimpleJdbcInsert¸¦ ÅëÇÑ ÀÚµ¿ »ý¼º Å° °¡Á®¿À±â
__Ç׸ñ 73: Ä¿½ºÅÒ ½ÃÄö½º ID¸¦ »ý¼ºÇÏ´Â ¹æ¹ý
__Ç׸ñ 74: º¹ÇÕ ±âº»Å°¸¦ È¿À²ÀûÀ¸·Î ±¸ÇöÇÏ´Â ¹æ¹ý
____@Embeddable ¹× @EmbeddedId¸¦ »ç¿ëÇÑ º¹ÇÕÅ°
____@IdClass¸¦ »ç¿ëÇÑ º¹ÇÕÅ°
____UUID´Â ¾î¶³±î?
____GenerationType.AUTO¸¦ ÅëÇÑ UUID »ý¼º
____Á÷Á¢ ÇÒ´çµÇ´Â UUID
____ÇÏÀ̹ö³×ÀÌÆ® uuid2
__Ç׸ñ 75: º¹ÇÕÅ°¿¡¼­ °ü°è¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ý
____Å×½ºÆ® È®ÀÎ
____Publisher ÀúÀå
____2¸íÀÇ Author ÀúÀå
____À̸§À¸·ÎAuthor Á¶È¸
____AuthorÀÇ Book »èÁ¦
____Author »èÁ¦
__Ç׸ñ 76: ¿¬°á Å×ÀÌºí¿¡ ´ëÇÑ ¿£ÅÍƼ »ç¿ë ¹æ¹ý
____¿¬°á Å×ÀÌºí¿¡ ´ëÇÑ º¹ÇÕ ±âº»Å° Á¤ÀÇ
____¿¬°á Å×ÀÌºí¿¡ ´ëÇÑ ¿£ÅÍƼ Á¤ÀÇ
____Author¿Í Book ¿¬°á

8Àå. »êÃâ ¼Ó¼º
__Ç׸ñ 77: »êÃâµÈ ºñ¿µ¼Ó ¼Ó¼º ¸ÅÇÎ ¹æ¹ý
____JPA ºü¸¥ Á¢±Ù
____JPA @PostLoad
____ÇÏÀ̹ö³×ÀÌÆ® @Formula
__Ç׸ñ 78: @Generated¸¦ ÅëÇÑ »êÃâµÈ ¿µ¼Ó ¼Ó¼º ¸ÅÇÎ ¹æ¹ý
____ÇÏÀ̹ö³×ÀÌÆ® @Generated
____columnDefinition Ç׸ñÀ» ÅëÇÑ °ø½Ä
____CREATE TABLEÀ» ÅëÇÑ °ø½Ä
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 79: JPQL Äõ¸®¿¡¼­ ¿©·¯ ÆĶó¹ÌÅÍ¿Í ÇÔ²² SQL ÇÔ¼ö »ç¿ë ¹æ¹ý
____SELECT ºÎºÐÀÇ ÇÔ¼ö
____WHERE ºÎºÐÀÇ ÇÔ¼ö
__Ç׸ñ 80: @JoinFormula¸¦ ÅëÇØ @ManyToOne °ü°è¸¦ SQL Äõ¸®¿¡ ¸ÅÇÎÇÏ´Â ¹æ¹ý


9Àå. ¸ð´ÏÅ͸µ
__Ç׸ñ 81: SQL¹® Ä«¿îÆ® ¹× ¾î¼³¼Ç »ç¿ë ÀÌÀ¯¿Í ¹æ¹ý
__Ç׸ñ 82: ÇÁ¸®Æä¾îµå ½ºÅ×ÀÌÆ®¸ÕÆ® ¹ÙÀεù ¹× ÃßÃâ ÆĶó¹ÌÅÍ ·Î±ë ¹æ¹ý
____TRACE
____Log4j 2
____MySQL°ú profileSQL=true
__Ç׸ñ 83: Äõ¸® »ó¼¼ Á¤º¸ ·Î±ë ¹æ¹ý
____DataSource-Proxy »ç¿ë
____log4jdbc »ç¿ë
____P6spy »ç¿ë
__Ç׸ñ 84: ÀÓ°èÄ¡¸¦ »ç¿ëÇÑ ´À¸° Äõ¸® ·Î±× ¹æ¹ý
__Ç׸ñ 85: Æ®·£Àè¼Ç ¹× Äõ¸® ¸Þ¼­µå »ó¼¼ ·Î±ë
____Æ®·£Àè¼Ç »ó¼¼ ·Î±ë
____Æ®·£Àè¼Ç ÄݹéÀ» ÅëÇÑ Á¦¾î±Ç È®º¸
____Äõ¸® ¸Þ¼­µå ½ÇÇà ½Ã°£ ·Î±ë

10Àå. DataSource ¹× Ä¿³Ø¼Ç Ç® ¼³Á¤
__Ç׸ñ 86: HikariCP ¼³Á¤ Ä¿½ºÅ͸¶ÀÌ¡ ¹æ¹ý
____application.properties¸¦ ÅëÇÑ HikariCP Æĸ®¹ÌÅÍ ÃÖÀûÈ­
____application.properties ¹× DataSourceBuilder¸¦ ÅëÇÑ HikariCP Æĸ®¹ÌÅÍ ÃÖÀûÈ­
____DataSourceBuilder¸¦ ÅëÇÑ HikariCP ÆĶó¹ÌÅÍ ÃÖÀûÈ­
____´Ù¸¥ Ä¿³Ø¼Ç Ç® ÃÖÀûÈ­
__Ç׸ñ 87: 2°³ÀÇ Ä¿³Ø¼Ç Ç®À» °®´Â 2°³ÀÇ µ¥ÀÌÅÍ ¼Ò½º ±¸¼º ¹æ¹ý
____Å×½ºÆ® È®ÀÎ

11Àå. °¨»ç
__Ç׸ñ 88: »ý¼º ¹× ¼öÁ¤ ½Ã°£°ú ¿£ÅÍƼ »ç¿ëÀÚ ÃßÀû ¹æ¹ý
____½ºÇÁ¸µ µ¥ÀÌÅÍ °¨»ç ±â´É È°¿ë
____ÇÏÀ̹ö³×ÀÌÆ® Áö¿ø ±â´É È°¿ë
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 89: ÇÏÀ̹ö³×ÀÌÆ® Envers °¨»ç È°¼ºÈ­ ¹æ¹ý
____¿£ÅÍƼ °¨»ç
____½ºÅ°¸¶ »ý¼º
____¿£ÅÍƼ ½º³À¼ô Äõ¸®
____ValidityAuditStrategy °¨»ç ·Î±ë Àü·«
__Ç׸ñ 90: ¿µ¼Ó¼º ÄÜÅؽºÆ®¸¦ È®ÀÎÇÏ´Â ¹æ¹ý
__Ç׸ñ 91: Å×ÀÌºí ¸ÞŸµ¥ÀÌÅÍ ÃßÃâ ¹æ¹ý

12Àå. ½ºÅ°¸¶
__Ç׸ñ 92: ½ºÇÁ¸µ ºÎÆ®¿¡¼­ Flyway ¼³Á¤ ¹æ¹ý
____½Å¼ÓÇÑ Flyway ¼³Á¤(MySQL ¹× PostgreSQL)
____Flyway¸¦ ÅëÇÑ µ¥ÀÌÅͺ£À̽º »ý¼º
____@FlywayDataSource¸¦ ÅëÇÑ Flyway ¼³Á¤
____Flyway¿Í ´ÙÁß ½ºÅ°¸¶
__Ç׸ñ 93: schema-*.sqlÀ» ÅëÇÑ µÎ µ¥ÀÌÅͺ£À̽º »ý¼º°ú ¿£ÅÍƼ ¸ÅĪ ¹æ¹ý

13Àå. ÆäÀÌÁö³×À̼Ç
__Ç׸ñ 94: ¿ÀÇÁ¼Â ÆäÀÌÁö³×ÀÌ¼Ç ¼º´É ÀúÇÏ ¹ß»ý ½Ã±â¿Í ÀÌÀ¯
____¿ÀÇÁ¼Â ¹× Å°¼¼Æ® À妽º ½ºÄµ
____¿ÀÇÁ¼Â ÆäÀÌÁö³×ÀÌ¼Ç Àå´ÜÁ¡
____½ºÇÁ¸µ ºÎÆ® ¿ÀÇÁ¼Â ÆäÀÌÁö³×À̼Ç
__Ç׸ñ 95: COUNT(*) OVER ¹× Page¡´entity/dto¡µ¸¦ »ç¿ëÇÑ ¿ÀÇÁ¼Â ÆäÀÌÁö³×ÀÌ¼Ç ÃÖÀûÈ­ ¹æ¹ý
____COUNT(*) OVER() À©µµ¿ì Áý°è
__Ç׸ñ 96: SELECT COUNT ¼­ºêÄõ¸® ¹× Page¡´entity/dto¡µ¸¦ »ç¿ëÇÑ ¿ÀÇÁ¼Â ÆäÀÌÁö³×ÀÌ¼Ç ÃÖÀûÈ­ ¹æ¹ý
____SELECT COUNT ¼­ºêÄõ¸®
__Ç׸ñ 97: JOIN FETCH ¹× Pageable »ç¿ë ¹æ¹ý
__Ç׸ñ 98: HHH000104 Á¶Ä¡ ¹æ¹ý
____°ü¸®µÇ´Â ¿£ÅÍƼ °¡Á®¿À±â
__Ç׸ñ 99: Slice¡´T¡µ findAll() ±¸Çö ¹æ¹ý
____½Å¼ÓÇÑ ±¸Çö
____Slice¡´T¡µ findAll(Pageable pageable) ±¸Çö
__Ç׸ñ 100: Å°¼¼Æ® ÆäÀÌÁö³×ÀÌ¼Ç ±¸Çö ¹æ¹ý
__Ç׸ñ 101: Å°¼¼Æ® ÆäÀÌÁö³×À̼ǿ¡ ´ÙÀ½ ÆäÀÌÁö ¹öÆ° Ãß°¡ ¹æ¹ý
__Ç׸ñ 102: ROW_NUMBER()À» ÅëÇÑ ÆäÀÌÁö³×ÀÌ¼Ç ±¸Çö ¹æ¹ý

14Àå. Äõ¸®
__Ç׸ñ 103: ÇÏÀ̹ö³×ÀÌÆ® HINT_PASS_DISTINCT_THROUGH¸¦ ÅëÇÑ SELECT DISTINCT ÃÖÀûÈ­ ¹æ¹ý
__Ç׸ñ 104: JPA ÄÝ¹é ¼³Á¤ ¹æ¹ý
____@EntityListeners¸¦ ÅëÇÑ ºÐ¸®µÈ ¸®½º³Ê Ŭ·¡½º
__Ç׸ñ 105: ½ºÇÁ¸µ µ¥ÀÌÅÍ Äõ¸® ºô´õ¸¦ ÅëÇÑ °á°ú ¼¼Æ® Å©±â Á¦ÇÑ°ú Ä«¿îÆ® ¹× »èÁ¦ ÆÄ»ý Äõ¸® »ç¿ë ¹æ¹ý
____°á°ú ¼¼Æ® Å©±â Á¦ÇÑ
____Ä«¿îÆ® ¹× »èÁ¦ ÆÄ»ý Äõ¸®
__Ç׸ñ 106: Æ÷½ºÆ® Ä¿¹Ô¿¡¼­ ½Ã°£ ¼Ò¿ä°¡ ¸¹Àº ÀÛ¾÷À» ÇÇÇØ¾ß ÇÏ´Â ÀÌÀ¯
__Ç׸ñ 107: Áߺ¹µÈ save() È£ÃâÀ» ÇÇÇÏ´Â ¹æ¹ý
__Ç׸ñ 108: N+1 ¹®Á¦ ¹æÁö ÀÌÀ¯¿Í ¹æ¹ý
____ÇÏÀ̹ö³×ÀÌÆ® @Fetch(FetchMode.JOIN)°ú N+1
____FetchMode.JOIN ´ë½Å JOIN FETCH »ç¿ë
____FetchMode.JOIN ´ë½Å ¿£ÅÍƼ ±×·¡ÇÁ »ç¿ë
__Ç׸ñ 109: ÇÏÀ̹ö³×ÀÌÆ® ±â¹Ý ¼ÒÇÁÆ® »èÁ¦ Áö¿ø »ç¿ë ¹æ¹ý
____ÇÏÀ̹ö³×ÀÌÆ® ¼ÒÇÁÆ® »èÁ¦
____Å×½ºÆ® È®ÀÎ
____À¯¿ëÇÑ Äõ¸®
____ÇöÀç ¿µ¼Ó¼º ÄÜÅؽºÆ®¿¡¼­ Deleted ¼Ó¼º ¾÷µ¥ÀÌÆ®
__Ç׸ñ 110: OSIV ¾ÈƼÆÐÅÏ È¸ÇÇ ÀÌÀ¯¿Í ¹æ¹ý
____Hibernate5Module
____·ÎµåµÇÁö ¾ÊÀº ¼Ó¼º¿¡ ´ëÇÑ ¸í½ÃÀû(¼öµ¿) ÃʱâÈ­
____ÇÏÀ̹ö³×ÀÌÆ®ÀÇ hibernate.enable_lazy_load_no_trans¿¡ ´ëÇØ
__Ç׸ñ 111: UTC ½Ã°£´ë·Î ³¯Â¥/½Ã°£ ÀúÀå ¹æ¹ý(MySQL)
__Ç׸ñ 112: ORDER BY RAND()¸¦ ÅëÇØ ÀÛÀº °á°ú ¼¼Æ®¸¦ µÚ¼¯´Â ¹æ¹ý
__Ç׸ñ 113: WHERE/HAVING Àý¿¡¼­ ¼­ºêÄõ¸®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
__Ç׸ñ 114: ÀúÀå ÇÁ·Î½ÃÀú È£Ãâ ¹æ¹ý
____°ª(½ºÄ®¶ó µ¥ÀÌÅÍ Å¸ÀÔ)À» ¹ÝȯÇÏ´Â ÀúÀå ÇÁ·Î½ÃÀú È£Ãâ
____°á°ú ¼¼Æ®¸¦ ¹ÝȯÇÏ´Â ÀúÀå ÇÁ·Î½ÃÀú È£Ãâ
____Ç׸ñ 115: ÇÁ·Ï½Ã¸¦ ¾ðÇÁ·Ï½ÃÇÏ´Â ¹æ¹ý
____ÇÁ·Ï½Ã °´Ã¼¶õ?
____¿£ÅÍƼ °´Ã¼¿Í ÇÁ·Ï½Ã °´Ã¼´Â µ¿ÀÏÇÏÁö ¾ÊÀ½
____ÇÁ·Ï½Ã¿¡ ´ëÇÑ ¾ðÇÁ·Ï½Ã
____¿£ÅÍƼ °´Ã¼¿Í ¾ðÇÁ·Ï½Ã °´Ã¼´Â µ¿ÀÏÇÔ
__Ç׸ñ 116: µ¥ÀÌÅͺ£À̽º ºä ¸ÅÇÎ ¹æ¹ý
__Ç׸ñ 117: µ¥ÀÌÅͺ£À̽º ºä ¼öÁ¤ ¹æ¹ý
____UPDATE¹® Æ®¸®°Å
____INSERT¹® Æ®¸®°Å
____DELETE¹® Æ®¸®°Å
__Ç׸ñ 118: WITH CHECK OPTIONÀ» »ç¿ëÇÏ´Â ÀÌÀ¯¿Í ¹æ¹ý
__Ç׸ñ 119: µ¥ÀÌÅͺ£À̽º Àӽà ¼øÀ§¸¦ Çà¿¡ È¿À²ÀûÀ¸·Î ÇÒ´çÇÏ´Â ¹æ¹ý
____Äõ¸®¿Í OVER Àý¿¡ ORDER BY Àý »ç¿ë
____OVER Àý¿¡ ¿©·¯ Ä®·³ »ç¿ë
__Ç׸ñ 120: ¸ðµç ±×·ìÀÇ »óÀ§ N°³ ÇàÀ» È¿À²ÀûÀ¸·Î ã´Â ¹æ¹ý
__Ç׸ñ 121: Specification API¸¦ ÅëÇÑ °í±Þ °Ë»ö ±¸Çö ¹æ¹ý
____Å×½ºÆ® È®ÀÎ
____À帣 AnthologyÀÇ 40¼¼ ÀÌ»ó ÀúÀÚ ¸ðµÎ °¡Á®¿À±â
____°¡°ÝÀÌ 60 ¹Ì¸¸ÀÎ µµ¼­¿¡ ´ëÇÑ ÆäÀÌÁö °¡Á®¿À±â
____´ÙÀ½ ´Ü°è
__Ç׸ñ 122: IN Àý ÆĶó¹ÌÅÍ ÆеùÀ» ÅëÇÑ SQL ij½Ì Çâ»ó ¹æ¹ý
__Ç׸ñ 123: Specification Äõ¸® ÆäÄ¡ Á¶ÀÎ »ý¼º ¹æ¹ý
____¸Þ¸ð¸® ±â¹Ý Á¶ÀÎ ÆäÄ¡ ¹× ÆäÀÌÁö³×À̼Ç
____µ¥ÀÌÅͺ£À̽º¿¡¼­ Á¶ÀÎ ÆäÄ¡ ¹× ÆäÀÌÁö³×À̼Ç
__Ç׸ñ 124: ÇÏÀ̹ö³×ÀÌÆ® Äõ¸® ½ÇÇà °èȹ ij½Ã »ç¿ë ¹æ¹ý
__Ç׸ñ 125: ½ºÇÁ¸µ QBE(Query By Example)¸¦ ÅëÇÑ ºñ¿µ¼Ó ¿£ÅÍƼÀÇ µ¥ÀÌÅͺ£À̽º Á¸Àç ¿©ºÎ È®ÀÎ ¹æ¹ý
____¸ðµç ¼Ó¼ºÀÇ ÀÏ´ëÀÏ ºñ±³
____ÀϺΠ¼Ó¼ºÀÇ ÀÏ´ëÀÏ ºñ±³
____ÇÏÀ§ ¼Ó¼º ÁýÇÕ¿¡ ´ëÇÑ Or °áÇÕ Àû¿ë
__Ç׸ñ 126: ÇÏÀ̹ö³×ÀÌÆ® @DynamicUpdate¸¦ ÅëÇØ ¼öÁ¤µÈ Ä®·³¸¸ UPDATE¹®¿¡ Æ÷ÇÔÇÏ´Â ¹æ¹ý
__Ç׸ñ 127: ½ºÇÁ¸µ¿¡¼­ ³×ÀÓµå (³×ÀÌƼºê) Äõ¸®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
____³×ÀÓµå (³×ÀÌƼºê) Äõ¸® ÂüÁ¶
____@NamedQuery ¹× @NamedNativeQuery »ç¿ë
____¼Ó¼º ÆÄÀÏ(jpa-named-queries.properties) »ç¿ë
__Ç׸ñ 128: ´Ù¸¥ Äõ¸®/¿äû¿¡¼­ ºÎ¸ð¿Í ÀÚ½ÄÀ» °¡Á®¿À´Â °¡Àå ÁÁÀº ¹æ¹ý
__Ç׸ñ 129: ¾÷µ¥ÀÌÆ®¸¦ »ç¿ëÇÑ º´ÇÕ ÀÛ¾÷ ÃÖÀûÈ­ ¹æ¹ý
__Ç׸ñ 130: SKIP LOCKED ¿É¼ÇÀ» ÅëÇÑ µ¿½Ã Å×ÀÌºí ±â¹Ý Å¥ ±¸Çö ¹æ¹ý
____SKIP LOCKED ¼³Á¤
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 131: ¹öÀü ±â¹Ý(@Version) OptimisticLockException ¹ß»ý ÈÄ Æ®·£Àè¼Ç Àç½Ãµµ ¹æ¹ý
____¹öÀü ±â¹Ý ³«°üÀû Àá±Ý ¿¹¿Ü
____³«°üÀû Àá±Ý ¿¹¿Ü ½Ã¹Ä·¹À̼Ç
____Æ®·£Àè¼Ç Àç½Ãµµ
____Å×½ºÆ® ½Ã³ª¸®¿À
__Ç׸ñ 132: ¹öÀü ¾ø´Â OptimisticLockExceptionÀÇ Æ®·£Àè¼Ç Àç½Ãµµ ¹æ¹ý
____¹öÀü ¾ø´Â ³«°üÀû Àá±Ý ¿¹¿Ü
____³«°üÀû Àá±Ý ¿¹¿Ü ½Ã¹Ä·¹À̼Ç
____Æ®·£Àè¼Ç Àç½Ãµµ
____Å×½ºÆ® ½Ã³ª¸®¿À
__Ç׸ñ 133: ¹öÀü ±â¹Ý ³«°üÀû Àá±Ý ¹× ºÐ¸®µÈ ¿£ÅÍƼ¸¦ ó¸®ÇÏ´Â ¹æ¹ý
__Ç׸ñ 134: Àå±â HTTP Åë½Å¿¡¼­ÀÇ ³«°üÀû Àá±Ý ¸ÞÄ¿´ÏÁò ¹× ºÐ¸®µÈ ¿£ÅÍƼ »ç¿ë ¹æ¹ý
____Å×½ºÆ® È®ÀÎ
__Ç׸ñ 135: ¿£ÅÍƼ°¡ ¼öÁ¤µÇÁö ¾ÊÀº °æ¿ì¿¡µµ Àá±ä ¿£ÅÍƼ ¹öÀüÀ» Áõ°¡½ÃÅ°´Â ¹æ¹ý
____OPTIMISTIC_FORCE_INCREMENT
____PESSIMISTIC_FORCE_INCREMENT
__Ç׸ñ 136: PESSIMISTIC_READ/WRITE ÀÛµ¿ ¹æ½Ä
____PESSIMISTIC_READ
____PESSIMISTIC_WRITE
__Ç׸ñ 137: PESSIMISTIC_WRITE°¡ UPDATE/INSERT ¹× DELETE¿¡¼­ ÀÛµ¿ÇÏ´Â ¹æ½Ä
____UPDATE Æ®¸®°Å
____DELETE Æ®¸®°Å
____INSERT Æ®¸®°Å

15Àå. »ó¼Ó
__Ç׸ñ 138: ´ÜÀÏ Å×ÀÌºí »ó¼ÓÀ» È¿À²ÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ¹ý
____µ¥ÀÌÅÍ ÀúÀå
____Äõ¸® ¹× ´ÜÀÏ Å×ÀÌºí »ó¼Ó
____ÇÏÀ§ Ŭ·¡½º ¼Ó¼º Non-Nullability À̽´
____±¸ºÐÀÚ Ä®·³ÀÇ ¸Þ¸ð¸® »ç¿ë·® ÃÖÀûÈ­
__Ç׸ñ139: SINGLE_TABLE »ó¼Ó °èÃþ ±¸Á¶¿¡¼­ ƯÁ¤ ÇÏÀ§ Ŭ·¡½º °¡Á®¿À±â
__Ç׸ñ140: Á¶ÀÎ Å×ÀÌºí »ó¼ÓÀÇ È¿À²Àû »ç¿ë ¹æ¹ý
____µ¥ÀÌÅÍ ÀúÀå
____Äõ¸® ¹× Á¶ÀÎ Å×ÀÌºí »ó¼Ó
____JPA JOINED »ó¼Ó Àü·« ¹× Àü·« µðÀÚÀÎ ÆÐÅÏ »ç¿ë ¹æ¹ý
__Ç׸ñ 141: Ŭ·¡½ºº° Å×ÀÌºí »ó¼ÓÀÇ È¿À²Àû »ç¿ë ¹æ¹ý
____µ¥ÀÌÅÍ ÀúÀå
____Äõ¸® ¹× Ŭ·¡½ºº° Å×ÀÌºí »ó¼Ó
__Ç׸ñ142: @MappedSuperclass È¿À²Àû »ç¿ë ¹æ¹ý
____µ¥ÀÌÅÍ ÀúÀå

16Àå. ÀÏ¹Ý Å¸ÀÔ°ú ÇÏÀ̹ö³×ÀÌÆ® ŸÀÔ
__Ç׸ñ 143: ÇÏÀ̹ö³×ÀÌÆ® ŸÀÔ ¶óÀ̺귯¸®¸¦ ÅëÇÑ ÇÏÀ̹ö³×ÀÌÆ® ¹× ¹ÌÁö¿ø ŸÀÔ Ã³¸® ¹æ¹ý
__Ç׸ñ 144: CLOB ¹× BLOB ¸ÅÇÎ ¹æ¹ý
____»ç¿ë ¿ëÀ̼º(¼º´É¿¡ ´ëÇÑ Æ®·¹À̵å¿ÀÇÁ)
____¼º´É ÀúÇÏ ¹æÁö(Æ®·¹À̵å¿ÀÇÁ´Â »ç¿ë ¿ëÀ̼º)
__Ç׸ñ 145: ÀÚ¹Ù ¿­°ÅÇüÀ» µ¥ÀÌÅͺ£À̽º¿¡ È¿À²ÀûÀ¸·Î ¸ÅÇÎÇÏ´Â ¹æ¹ý
____EnumType.STRINGÀ» ÅëÇÑ ¸ÅÇÎ
____EnumType.ORDINALÀ» ÅëÇÑ ¸ÅÇÎ
____¿­°ÅÇüÀ» Ä¿½ºÅÒ Ç¥Çö ¹æ½ÄÀ¸·Î ¸ÅÇÎ
____¿­°ÅÇüÀ» µ¥ÀÌÅͺ£À̽º Enum ŸÀÔ¿¡ ¸ÅÇÎ(PostgreSQL)
__Ç׸ñ 146: JSON ÀÚ¹Ù °´Ã¼¸¦ MySQL JSON Ä®·³¿¡ È¿À²ÀûÀ¸·Î ¸ÅÇÎÇÏ´Â ¹æ¹ý
____Author ÀúÀå
____Author °¡Á®¿À±â/¼öÁ¤Çϱâ
____JSON Äõ¸®¸¦ ÅëÇÑ Author °¡Á®¿À±â
__Ç׸ñ 147: JSON ÀÚ¹Ù Object¸¦ PostgreSQL JSON Ä®·³¿¡ È¿À²ÀûÀ¸·Î ¸ÅÇÎÇÏ´Â ¹æ¹ý
____Author ÀúÀå
____Author °¡Á®¿À±â/¼öÁ¤Çϱâ
____JSON Äõ¸®¸¦ ÅëÇÑ Author °¡Á®¿À±â

ºÎ·Ï A. (ÇÏÀ̹ö³×ÀÌÆ®) JPA ±âº» »çÇ×
__¿µ¼Ó¼º À¯´ÖÀ̶õ?
__EntityManagerFactory¶õ?
__EntityManager¶õ?
__¿£ÅÍƼ »óÅ ÀüÀÌ

ºÎ·Ï B. ¿¬°ü°ü°è È¿À²¼º

ºÎ·Ï C. ÇϷ縦 Àý¾àÇÒ ¼ö ÀÖ´Â 5°¡Áö SQL ¼º´É ÆÁ
__WHERE Àý¿¡¼­ÀÇ SQL ÇÔ¼ö »ç¿ë
__À妽º Ä®·³ ¼ø¼­ÀÇ Á߿伺
__±âº»Å°¿Í °íÀ¯Å°
__LIKE¿Í µ¿µî(=)
__UNION°ú UNION ALL ¹× JOIN ÇüÅÂ

ºÎ·Ï D. À¯¿ëÇÑ µ¥ÀÌÅͺ£À̽º À妽º¸¦ ¸¸µå´Â ¹æ¹ý
__JPA 2.1 @Index
__À妽º¸¦ ÃßÃøÇÏÁö ¸»ÀÚ
__À妽ÌÀ» À§ÇØ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â SQL Äõ¸® ¿ì¼±¼øÀ§ ÁöÁ¤
__À妽º°¡ ÇÊ¿äÇÑ Áß¿äÇÑ SQL Äõ¸®
__GROUP BY ¹× ORDER BY À妽ÌÀ» ÅëÇÑ Á¤·Ä ÀÛ¾÷ ¹æÁö
__°íÀ¯¼ºÀ» À§ÇÑ À妽º »ç¿ë
__¿Ü·¡Å°¿¡ ´ëÇÑ À妽º »ç¿ë
__À妽º Àü¿ë ¾×¼¼½º¸¦ À§ÇÑ Ä®·³ Ãß°¡
__³ª»Û Ç¥ÁØÀ» ÇÇÇÏÀÚ

ºÎ·Ï E. SQL Phenomena
__Dirty Writes
__Dirty Reads
__Non-Repeatable Reads
__Phantom Reads
__Read Skews
__Write Skews
__Lost Updates


ºÎ·Ï F. ½ºÇÁ¸µ Æ®·£Àè¼Ç °Ý¸® ¼öÁØ
__@Transactional(isolation=Isolation.READ_UNCOMMITTED)
__@Transactional(isolation=Isolation.READ_COMMITTED)
__@Transactional(isolation=Isolation.REPEATABLE_READ)
__@Transactional(isolation=Isolation.SERIALIZABLE)

ºÎ·Ï G. ½ºÇÁ¸µ Æ®·£Àè¼Ç ÀüÆÄ
__Propagation.REQUIRED
__Propagation.REQUIRES_NEW
__Propagation.NESTED
__Propagation.MANDATORY
__Propagation.NEVER
__Propagation.NOT_SUPPORTED
__Propagation.SUPPORTS

ºÎ·Ï H. Ç÷¯½Ì ¸ÞÄ¿´ÏÁò
__¾ö°ÝÇÑ Ç÷¯½Ã ÀÛ¾÷ ¼ø¼­
__µ¥ÀÌÅÍ ÁúÀǾî(DQL) ½ÇÇà Àü Ç÷¯½Ã: SELECT Äõ¸®
__Æ®·£Àè¼Ç Ä¿¹Ô Àü Ç÷¯½Ã
__ÀÚµ¿ Ç÷¯½Ã ¸ðµå
__ÄÚµå À̾߱â
__±Û·Î¹ú Ç÷¯½Ã ¸ðµå
__¼­ºñ½º ¼öÁØ Ç÷¯½Ã ¸ðµå
__Äõ¸® ¼öÁØ Ç÷¯½Ã ¸ðµå

ºÎ·Ï I. 2Â÷ ij½Ã
__NONSTRICT_READ_WRITE
__READ_ONLY
__READ_WRITE
__TRANSACTIONAL
__Äõ¸® ij½Ã

ºÎ·Ï J. µµ±¸

ºÎ·Ï K. ÇÏÀ̹ö³×ÀÌÆ® 6

ÀúÀÚ¼Ò°³

¾È°Ö ·¹¿À³ª¸£µå [Àú] ½ÅÀ۾˸² SMS½Åû
»ý³â¿ùÀÏ -

ÀÚ¹Ù ºÐ¾ß¿¡¼­ 20³â ÀÌ»óÀÇ °æ·ÂÀ» °¡Áø ÃÖ°í±â¼úÀü·«°¡ÀÌ´Ù. °­·ÂÇÑ ¾ÆÅ°ÅØó, Ŭ¸° ÄÚµå ¹× °í¼º´ÉÀ» Áö¿øÇÏ´Â ÀÚ¹Ù ºÐ»ê ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³°èÇÏ°í °³¹ßÇÏ´Â ÀÏ¿¡ ÁÖ·ÂÇÏ°í ÀÖ´Ù. ÄÚĪ, ¸àÅ丵 ¹× ±â¼ú ¸®´õ½Ê¿¡µµ ¿­Á¤ÀÌ ÀÖ´Ù.

ÀÌ »óÇ°ÀÇ ½Ã¸®Áî

ÄÄÇ»ÅÍ/ÀÎÅÍ³Ý ºÐ¾ß¿¡¼­ ¸¹Àº ȸ¿øÀÌ ±¸¸ÅÇÑ Ã¥

    ¸®ºä

    0.0 (ÃÑ 0°Ç)

    100ÀÚÆò

    ÀÛ¼º½Ã À¯ÀÇ»çÇ×

    ÆòÁ¡
    0/100ÀÚ
    µî·ÏÇϱâ

    100ÀÚÆò

    0.0
    (ÃÑ 0°Ç)

    ÆǸÅÀÚÁ¤º¸

    • ÀÎÅÍÆÄÅ©µµ¼­¿¡ µî·ÏµÈ ¿ÀǸ¶ÄÏ »óÇ°Àº ±× ³»¿ë°ú Ã¥ÀÓÀÌ ¸ðµÎ ÆǸÅÀÚ¿¡°Ô ÀÖÀ¸¸ç, ÀÎÅÍÆÄÅ©µµ¼­´Â ÇØ´ç »óÇ°°ú ³»¿ë¿¡ ´ëÇØ Ã¥ÀÓÁöÁö ¾Ê½À´Ï´Ù.

    »óÈ£

    (ÁÖ)±³º¸¹®°í

    ´ëÇ¥ÀÚ¸í

    ¾Èº´Çö

    »ç¾÷ÀÚµî·Ï¹øÈ£

    102-81-11670

    ¿¬¶ôó

    1544-1900

    ÀüÀÚ¿ìÆíÁÖ¼Ò

    callcenter@kyobobook.co.kr

    Åë½ÅÆǸž÷½Å°í¹øÈ£

    01-0653

    ¿µ¾÷¼ÒÀçÁö

    ¼­¿ïƯº°½Ã Á¾·Î±¸ Á¾·Î 1(Á¾·Î1°¡,±³º¸ºôµù)

    ±³È¯/ȯºÒ

    ¹ÝÇ°/±³È¯ ¹æ¹ý

    ¡®¸¶ÀÌÆäÀÌÁö > Ãë¼Ò/¹ÝÇ°/±³È¯/ȯºÒ¡¯ ¿¡¼­ ½Åû ¶Ç´Â 1:1 ¹®ÀÇ °Ô½ÃÆÇ ¹× °í°´¼¾ÅÍ(1577-2555)¿¡¼­ ½Åû °¡´É

    ¹ÝÇ°/±³È¯°¡´É ±â°£

    º¯½É ¹ÝÇ°ÀÇ °æ¿ì Ãâ°í¿Ï·á ÈÄ 6ÀÏ(¿µ¾÷ÀÏ ±âÁØ) À̳»±îÁö¸¸ °¡´É
    ´Ü, »óÇ°ÀÇ °áÇÔ ¹× °è¾à³»¿ë°ú ´Ù¸¦ °æ¿ì ¹®Á¦Á¡ ¹ß°ß ÈÄ 30ÀÏ À̳»

    ¹ÝÇ°/±³È¯ ºñ¿ë

    º¯½É ȤÀº ±¸¸ÅÂø¿À·Î ÀÎÇÑ ¹ÝÇ°/±³È¯Àº ¹Ý¼Û·á °í°´ ºÎ´ã
    »óÇ°À̳ª ¼­ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯/¹ÝÇ°Àº ¹Ý¼Û·á ÆǸÅÀÚ ºÎ´ã

    ¹ÝÇ°/±³È¯ ºÒ°¡ »çÀ¯

    ·¼ÒºñÀÚÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¼Õ½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
    (´ÜÁö È®ÀÎÀ» À§ÇÑ Æ÷Àå ÈѼÕÀº Á¦¿Ü)

    ·¼ÒºñÀÚÀÇ »ç¿ë, Æ÷Àå °³ºÀ¿¡ ÀÇÇØ »óÇ° µîÀÇ °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì
    ¿¹) È­ÀåÇ°, ½ÄÇ°, °¡ÀüÁ¦Ç°(¾Ç¼¼¼­¸® Æ÷ÇÔ) µî

    ·º¹Á¦°¡ °¡´ÉÇÑ »óÇ° µîÀÇ Æ÷ÀåÀ» ÈѼÕÇÑ °æ¿ì
    ¿¹) À½¹Ý/DVD/ºñµð¿À, ¼ÒÇÁÆ®¿þ¾î, ¸¸È­Ã¥, ÀâÁö, ¿µ»ó È­º¸Áý

    ·½Ã°£ÀÇ °æ°ú¿¡ ÀÇÇØ ÀçÆǸŰ¡ °ï¶õÇÑ Á¤µµ·Î °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì

    ·ÀüÀÚ»ó°Å·¡ µî¿¡¼­ÀÇ ¼ÒºñÀÚº¸È£¿¡ °üÇÑ ¹ý·üÀÌ Á¤ÇÏ´Â ¼ÒºñÀÚ Ã»¾àöȸ Á¦ÇÑ ³»¿ë¿¡ ÇØ´çµÇ´Â °æ¿ì

    »óÇ° Ç°Àý

    °ø±Þ»ç(ÃâÆÇ»ç) Àç°í »çÁ¤¿¡ ÀÇÇØ Ç°Àý/Áö¿¬µÉ ¼ö ÀÖÀ½

    ¼ÒºñÀÚ ÇÇÇغ¸»ó
    ȯºÒÁö¿¬¿¡ µû¸¥ ¹è»ó

    ·»óÇ°ÀÇ ºÒ·®¿¡ ÀÇÇÑ ±³È¯, A/S, ȯºÒ, Ç°Áúº¸Áõ ¹× ÇÇÇغ¸»ó µî¿¡ °üÇÑ »çÇ×Àº ¼ÒºñÀÚºÐÀïÇØ°á ±âÁØ (°øÁ¤°Å·¡À§¿øȸ °í½Ã)¿¡ ÁØÇÏ¿© 󸮵Ê

    ·´ë±Ý ȯºÒ ¹× ȯºÒÁö¿¬¿¡ µû¸¥ ¹è»ó±Ý Áö±Þ Á¶°Ç, ÀýÂ÷ µîÀº ÀüÀÚ»ó°Å·¡ µî¿¡¼­ÀÇ ¼ÒºñÀÚ º¸È£¿¡ °üÇÑ ¹ý·ü¿¡ µû¶ó ó¸®ÇÔ

    (ÁÖ)KGÀ̴Ͻýº ±¸¸Å¾ÈÀü¼­ºñ½º¼­ºñ½º °¡ÀÔ»ç½Ç È®ÀÎ

    (ÁÖ)ÀÎÅÍÆÄÅ©Ä¿¸Ó½º´Â ȸ¿ø´ÔµéÀÇ ¾ÈÀü°Å·¡¸¦ À§ÇØ ±¸¸Å±Ý¾×, °áÁ¦¼ö´Ü¿¡ »ó°ü¾øÀÌ (ÁÖ)ÀÎÅÍÆÄÅ©Ä¿¸Ó½º¸¦ ÅëÇÑ ¸ðµç °Å·¡¿¡ ´ëÇÏ¿©
    (ÁÖ)KGÀ̴Ͻýº°¡ Á¦°øÇÏ´Â ±¸¸Å¾ÈÀü¼­ºñ½º¸¦ Àû¿ëÇÏ°í ÀÖ½À´Ï´Ù.

    ¹è¼Û¾È³»

    • ±³º¸¹®°í »óÇ°Àº Åùè·Î ¹è¼ÛµÇ¸ç, Ãâ°í¿Ï·á 1~2Àϳ» »óÇ°À» ¹Þ¾Æ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

    • Ãâ°í°¡´É ½Ã°£ÀÌ ¼­·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä »óÇ°À» ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.

    • ±ººÎ´ë, ±³µµ¼Ò µî ƯÁ¤±â°üÀº ¿ìü±¹ Åù踸 ¹è¼Û°¡´ÉÇÕ´Ï´Ù.

    • ¹è¼Ûºñ´Â ¾÷ü ¹è¼Ûºñ Á¤Ã¥¿¡ µû¸¨´Ï´Ù.

    • - µµ¼­ ±¸¸Å ½Ã 15,000¿ø ÀÌ»ó ¹«·á¹è¼Û, 15,000¿ø ¹Ì¸¸ 2,500¿ø - »óÇ°º° ¹è¼Ûºñ°¡ ÀÖ´Â °æ¿ì, »óÇ°º° ¹è¼Ûºñ Á¤Ã¥ Àû¿ë