Part1. °³¹ßȯ°æ ±¸Ãà - ½ºÇÁ¸µ°ú MySql + Mybatis ¿¬µ¿
ÀÌ¹Ì mysql ¼³Ä¡¿Í ±âº»ÀûÀÎ ¼³Á¤Àº ¿Ï·áµÇ¾ú°í ½ºÇÁ¸µ°ú ¿¬µ¿¸¸ ½ÃÅ°¸é µÈ´Ù. ƯÈ÷ Ä¿³Ø¼Ç Ç®À» ÀÌ¿ëÇؼ ¿©·¯¸íÀÇ »ç¿ëÀÚ¸¦ µ¿½Ã¿¡ ó¸®ÇØ¾ß Çϱ⠶§¹®¿¡ ¾Æ¿¹ ½ºÇÁ¸µ¿¡ Ä¿³Ø¼Ç Ç®À» µî·ÏÇؼ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. java¿¡¼´Â DataSource ¶ó´Â ÀÎÅÍÆäÀ̽º¸¦ ÅëÇؼ Ä¿³Ø¼Ç Ç®À» »ç¿ëÇÑ´Ù. ÀÌ°É ÀÌ¿ëÇÏ¸é ¸Å¹ø µ¥ÀÌÅͺ£À̽º¿Í ¿¬°áÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¹Ì¸® ¿¬°áÀ» ¸Î¾îÁÖ°í º¯È¯ÇÏ´Â ±¸Á¶¸¦ ÀÌ¿ëÇϱ⠶§¹®¿¡ ¼º´ÉÇâ»ó¿¡ µµ¿òÀÌ µÈ´Ù.
Ȥ½Ã mysql ¼³Ä¡¹æ¹ýÀÌ ¸ð¸¥´Ù¸é ´ÙÀ½ ¸µÅ©ÂüÁ¶
Ä¿³Ø¼Ç Ç®Àº ¿©·¯ Á¾·ù°¡ ÀÖ°í spring-jdbc ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â ¹æ½Äµµ ÀÖÁö¸¸, ¿¹Á¦´Â ÃÖ±Ù À¯ÇàÇÏ´Â È÷Ä«¸®CP¸¦ ÀÌ¿ëÇÑ´Ù.
È÷Ä«¸® ¼º´É¿¡ ´ëÇؼ´Â ´ÙÀ½ ¸µÅ© ÂüÁ¶
Ã¥ °³Á¤ÆÇÀÌ Á¶±Ý ¾Æ½¬¿î Á¡ÀÌ ¿À¶óŬ µðºñ·Î¸¸ ¼³Á¤Çϱ⠶§¹®¿¡ ÄÚµù´Ü Ä«Æä¿¡¼ ÀúÀÚ°¡ ¹èÆ÷ÇÑ mysql ¼³Á¤ ÆÄÀÏÀ» ºÁ¾ß¸¸ Á¦´ë·ÎµÈ ¿¬µ¿ÀÌ °¡´ÉÇÏ´Ù.
1. ¶óÀ̺귯¸® Ãß°¡¿Í DataSource ¼³Á¤
pom.xmlÀ» ¼öÁ¤Çؼ HikariCP¸¦ Ãß°¡ÇÑ´Ù.
ÀÌÁ¦ root-context.xml ¿¡ Á÷Á¢ <bean> ű׸¦ Á¤ÀÇÇؼ ÀÛ¼ºÇϴµ¥ °³Á¤ÆÇ¿¡´Â ÇØ´ç ³»¿ëÀÌ ¾øÀ¸¹Ç·Î ´ÙÀ½ Äڵ带 Âü°íÇÏÀÚ.
mybatis±îÁö ¼³Á¤¿Ï·áµÈ ÄÚµåÀÌ´Ù
ºóÀ» ÀÌ·¸°Ô Á¤ÀÇÇÑ ÈÄ¿¡´Â Ç×»ó Å×½ºÆ®¸¦ Çغ¸ÀÚ. 'src/text/java'¿¡ DataSourceTestsŬ·¡½º¸¦ ÀÛ¼ºÇÑ´Ù.
ÀÌ Å×½ºÆ®´Â ½ºÇÁ¸µ¿¡ ºóÀ¸·Î µî·ÏµÈ DataSource¸¦ ÀÌ¿ëÇؼ ConnectionÀ» Á¦´ë·Î ó¸®ÇÒ ¼ö ÀÖ´ÂÁö¸¦ È®ÀÎÇÏ´Â ¿ëµµÀÌ´Ù testConnection()À» ½Ç?³? ³»ºÎÀûÀ¸·Î È÷Ä«¸®CP°¡ ½ÃÀ۵ǰí, Á¾·áµÇ´Â ·Î±×¸¦ º¼ ¼ö ÀÖ´Ù.
Mybatis ¿¬µ¿
MyBatis´Â ÈçÈ÷ SQL¸ÅÇÎ ÇÁ·¹ÀÓ¿öÅ©·Î ºÐ·ùµÇ´Âµ¥, °³¹ßÀÚµéÀº JDBCÄÚµåÀÇ º¹ÀâÇÏ°í Áö·çÇÑ ÀÛ¾÷À» ÇÇÇÏ´Â ¿ëµµ·Î »ç¿ëÇÑ´Ù. ÀåÁ¡À¸·Î´Â ´ÙÀ½°ú °°´Ù.
- ÀÚµ¿À¸·Î Connection close() rksmd
- Mybatis³»ºÎÀûÀ¸·Î PerparedStatementó¸®
- #{prop}¿Í °°ÀÌ ¼Ó¼ºÀ» ÁöÁ¤ÇÏ¸é ³»ºÎÀûÀ¸·Î ÀÚµ¿Ã³¸®
- ¸®ÅÏŸÀÔÀ» ÁöÁ¤ÇÏ´Â °æ¿ì ÀÚµ¿À¸·Î °´Ã¼ »ý¼º ¹× ResultSetó¸®
Mybatis ´Â ±âÁ¸ÀÇ SQLÀ» ±×´ë·Î È°¿ëÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ°í ÁøÀÔÀ庮ÀÌ ³·Àº ÆíÀÌ¾î¼ JDBCÀÇ ´ë¾ÈÀ¸·Î ¸¹ÀÌ »ç¿ëÇÑ´Ù. ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ©ÀÇ Æ¯Â¡ Áß Çϳª´Â ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©µéÀ» ¹èôÇÏ´Â ´ë½Å ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©µé°úÀÇ ¿¬µ¿À» ½±°ÔÇÏ´Â Ãß°¡ÀûÀÎ ¶óÀ̺귯¸®µéÀÌ ¸¹´Ù´Â °ÍÀÌ´Ù. Mybatis¿ª½Ã mybatis-springÀ̶ó´Â ¶óÀ̺귯¸®¸¦ ÅëÇØ ¿¬µ¿ÀÛ¾÷À» ó¸®ÇÒ ¼ö ÀÖ´Ù.
1. Mybatis °ü·Ã ¶óÀ̺귯¸® Ãß°¡
Mybatis ¿Í mybatis-springÀ» »ç¿ëÇϱâ À§Çؼ pom.xml ÆÄÀÏ¿¡ Ãß°¡ÀûÀÎ ¶óÀ̺귯¸®µéÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù.
´ÙÀ½Àº pom.xml¿¡ Ãß°¡µÇ´Â ¶óÀ̺귯¸® ÄÚµåÀÌ´Ù.
2. SQLSessionFactory
MyBatis¿¡¼ °¡Àå ÇÙ½ÉÀûÀÎ °´Ã¼´Â SQLSessionÀ̶ó´Â Á¸Àç¿Í SQLSessionFactoryÀÌ´Ù. À̸§¿¡¼ º¸µí ³»ºÎÀûÀ¸·Î SQLSessionÀ̶ó´Â °ÍÀ» ¸¸µé¾î ³»´Â Á¸ÀçÀε¥, °³¹ß¿¡¼´Â SQLSession À» ÅëÇؼ ConnectionÀ» »ý¼ºÇϰųª ¿øÇÏ´Â SQLÀ» Àü´ÞÇÏ°í, °á°ú¸¦ ¸®ÅϹ޴ ±¸Á¶·Î ÀÛ¼ºÇÏ°Ô µÈ´Ù.
root-context.xml ¿¡ sqlSessionFactory ºóÀ» Ãß°¡ÇØ¾ß Çϴµ¥ À§¿¡ ÀÌ¹Ì ÇØ´ç Äڵ尡 Æ÷ÇÔµÈ root-context.xml ¼Ò½º¸¦ ¿Ã·Á³ù´Ù.
3. ½ºÇÁ¸µ°úÀÇ ¿¬µ¿
3.1 Mapper ÀÎÅÍÆäÀ̽º
Mapper¸¦ ÀÛ¼ºÇÏ´Â ÀÛ¾÷Àº xmlÀ» ÀÌ¿ëÇÒ ¼öµµ ÀÖÁö¸¸, À̹ø ¿¹Á¦´Â ÃÖ¼ÒÇÑÀÇ Äڵ带 ÀÛ¼ºÇÏ´Â MapperÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇغ¸°Ú´Ù.
TimeMapper ¶ó´Â ÀÎÅÍÆäÀ̽º¸¦ Ãß°¡ÇÑ´Ù. Mapper ¿¡ ´ëÇÑ ¼³¸íÀº µû·Î Æ÷½ºÆÃÇؾ߰ڴÙ.
TimeMapper ÀÎÅÍÆäÀ̽º´Â MyBatisÀÇ ¾î³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÏ¿© SQLÀ» ¸Þ¼µå¿¡ Ãß°¡ÇÑ´Ù.
ÀÛ¼ºÇß´Ù¸é Mybatis°¡ µ¿ÀÛÇÒ ¶§ Mapper¸¦ ÀνÄÇÒ ¼ö ÀÖµµ·Ï, root-context,xml ¿¡ Ãß°¡¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù. °£´ÜÇÑ ¹æ½ÄÀº <mybatis:scan>À̶ó´Â ű׸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.
´ÙÀ½Àº root-context.xmlÀÇ ÀϺÎÀÌ´Ù.
base-package ¼Ó¼ºÀº ÁöÁ¤µÈ ÆÐÅ°ÁöÀÇ ¸ðµç MyBatis°ü·Ã ¾î³ëÅ×À̼ÇÀ» ã¾Æ¼ ó¸®ÇÑ´Ù. Mapper¸¦ ¼³Á¤ÇÏ´Â ÀÛ¾÷Àº °¢°¢ÀÇ xml À̳ª mapper ÀÎÅÍÆäÀ̽º¸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖÁö¸¸, ³Ê¹« ¹øÀâÇϱ⠶§¹®¿¡ ÀÚµ¿À¸·Î ÆÐÅ°Áö¸¦ ÀνÄÇÏ´Â ¹æ½ÄÀ¸·Î ó¸®ÇÏ´Â ¹æ¹ýÀÌ °¡Àå Æí¸®ÇÏ´Ù.
3.2 Mapper Å×½ºÆ®
Mybatis-spring Àº Mapper ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇؼ ½ÇÁ¦ sql 󸮰¡ µÇ´Â Ŭ·¡½º¸¦ ÀÚµ¿À¸·Î »ý¼ºÇÑ´Ù. µû¶ó¼ ÀÎÅÍÆäÀ̽º¿Í sql ¸¸À¸·Î ÀÛ¼ºÇÏ´Â ¹æ½ÄÀ¸·Îµµ ¸ðµç jdbc󸮸¦ ³¡³¾ ¼ö ÀÖ´Ù.
´ÙÀ½Àº TimeMapperTests Ŭ·¡½º´Ù.
¿ì¼± ½ºÇÁ¸µÀÌ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇؼ °´Ã¼¸¦ »ý¼ºÇÑ´Ù´Â »ç½Ç¿¡ ÁÖ¸ñÇÏÀÚ.
3.3 XML ¸ÅÆÛ¿Í °°ÀÌ ¾²±â
MyBatis¸¦ ÀÌ¿ëÇؼ SQLÀ» ó¸®ÇÒ ¶§ ¾î³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀÌ ¾ÐµµÀûÀ¸·Î Æí¸®Çϱâ´Â ÇÏÁö¸¸, SQLÀÌ º¹ÀâÇϰųª ±æ¾îÁö´Â °æ¿ì¿¡´Â ¾î³ëÅ×ÀÌ¼Ç º¸´Ù´Â xmlÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀ» ´õ ¼±È£ÇÏ°Ô µÈ´Ù. ´ÙÇàÈ÷ MyBatis-Spring ÀÇ °æ¿ì Mapper ÀÎÅÍÆäÀ̽º¿Í xmlÀ» µ¿½Ã¿¡ »ç¿ë°¡´ÉÇÏ´Ù.
xmlÀ» ÀÛ¼ºÇÒ ¶§ xml ÆÄÀÏÀÇ À§Ä¡¿Í xml ÆÄÀÏ¿¡ ÁöÁ¤µÇ¾î ÀÖ´Â namespace ¼Ó¼ºÀÌ Áß¿äÇѵ¥, xml ÆÄÀÏ À§Ä¡ÀÇ °æ¿ì mapper ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Â °÷¿¡ °°ÀÌ ÀÛ¼ºÇϰųª src/main/resources ±¸Á¶¿¡ xml À» ÀúÀåÇÒ Æú´õ¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. xml ÆÄÀÏÀ» ¸¸µé ¶§ À̸§¿¡ ´ëÇÑ ±ÔÄ¢Àº ¾øÁö¸¸, °¡´ÉÇÏ´Ù¸é mapper ÀÎÅÍÆäÀ̽º¿Í °°Àº À̸§À» ÀÌ¿ëÇÏ´Â °ÍÀÌ °¡µ¶¼ºÀ» ³ôÈù´Ù.
src/main/resources Æú´õ ³» ´ÙÀ½Ã³·³ mapper Æú´õ¸¦ ÀÛ¼ºÇÑ´Ù.
xml ÆÄÀÏ¿¡´Â MybatisÀÇ XML ¸ÅÆÛ¿¡¼ »ç¿ëÇϴ ű׿¡ ´ëÇÑ ¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù.
Mapper ÀÎÅÍÆäÀ̽º¿Í xmlÀ» °°ÀÌ ÀÌ¿ëÇØ º¸±â À§Çؼ ±âÁ¸ÀÇ TimeMapper ÀÎÅÍÆäÀ̽º¿¡ Ãß°¡ÀûÀÎ ¸Þ¼µå¸¦ ¼±¾ðÇÑ´Ù.
getTime2()°¡ Ãß°¡µÆ´Âµ¥, ƯÀÌÇÏ°Ôµµ @Select ¿Í °°ÀÌ MybatisÀÇ ¾î³ëÅ×À̼ÇÀÌ Á¸ÀçÇÏÁö ¾Ê°í sql ¿ª½Ã Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
½ÇÁ¦ sql Àº xmlÀ» ÀÌ¿ëÇؼ ó¸®ÇÒ °ÍÀ̹ǷÎ, »ý¼ºÇÑ timeMapper.xml Àº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
<select> ű×ÀÇ id ¼Ó¼º°ªÀº ¸Þ¼µåÀÇ À̸§°ú µ¿ÀÏÇÏ°Ô ¸ÂÃç¾ß ÇÑ´Ù. <select> ű×ÀÇ °æ¿ì resultType ¼Ó¼ºÀ» °¡Áö´Âµ¥ ÀÌ °ªÀº ÀÎÅÍÆäÀ̽º¿¡ ¼±¾ðµÈ ¸Þ¼µåÀÇ ¸®ÅÏ Å¸ÀÔ°ú µ¿ÀÏÇÏ°Ô ÀÛ¼ºÇÑ´Ù.
4. log4jdbc-log4j2 ¼³Á¤
Mybatis´Â ³»ºÎÀûÀ¸·Î JDBCÀÇ PreparedStatement ¸¦ ÀÌ¿ëÇؼ SQLÀ» ó¸®ÇÑ´Ù. µû¶ó¼ ÆĶó¹ÌÅÍ´Â jdbc¿¡¼ ó·³ ? À¸·Î ġȯµÇ¾î¼ 󸮵ȴÙ. º¹ÀâÇÑ SQL ÀÇ °æ¿ì ? ÀÇ °ªÀÌ Á¦´ë·Î ³ª¿Ô´ÂÁö È®ÀÎÀÌ ¾î·Æ°í ½ÇÇàµÈ SQLÀÇ ³»¿ëÀ» Á¤È®È÷ È®ÀÎÇϱ⠾î·Æ´Ù. ÀÌ·±¹®Á¦¸¦ È®ÀÎÇÏ·Á°í log4jdbc-log4j2¶óÀ̺귯¸®°¡ ÇÊ¿äÇÑ °ÍÀÌ´Ù.
pom.xml¿¡ À§¿Í°°ÀÌ ¶óÀ̺귯¸®¸¦ Ãß°¡ÇÑ´Ù. Ãß°¡ÇÑ ÈÄ¿¡´Â (1) ·Î±× ¼³Á¤ÆÄÀÏÀ» Ãß°¡ÇÏ´Â ÀÛ¾÷ (2) JDBC¿¬°á Á¤º¸¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. src/main/resources ¹Ø¿¡ log4jdbc.log4j2.properties ÆÄÀÏÀ» Ãß°¡ÇÑ´Ù.
log4jdbc¸¦ ÀÌ¿ëÇÏ´Â °æ¿ì JDBC µå¶óÀ̹ö¿Í URL Á¤º¸¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. root-context.xmlÀÇ ÀϺθ¦ ¼öÁ¤ÇÏÀÚ. ´Ù½Ã¸»ÇÏÁö¸¸ root-context.xmlÀº beanÀ» ¼³Á¤ÇÏ´Â °÷ÀÌ´Ù.
ÀÌ·¸°Ô ¼öÁ¤ÇÏ¸é µÇ´Âµ¥ dataSource() ¸Þ¼µå¿¡¼ º¯°æµÇ´Â ºÎºÐÀº JDBCµå¶óÀ̹öÀÇ Å¬·¡½º¸¦ 'net.sf.log4jdbc.sql.jdbcapo.DriverSpy·Î º¯°æÇÏ´Â ÀÛ¾÷°ú JDBC ¿¬°á URL ºÎºÐ¿¡¼ Áß°£¿¡ log4jdbc ¹®ÀÚ¿ÀÌ Ãß°¡µÇ´Â ºÎºÐÀÌ´Ù. ÀÌ µÎ ¼³Á¤ÀÌ µÇ¾îÀÖÁö ¾ÊÀ¸¸é ·Î±×°¡ Á¤»óÀûÀ¸·Î ±â·ÏµÇÁö ¾Ê´Â´Ù.
[Ãâó] Part1. °³¹ßȯ°æ ±¸Ãà - ½ºÇÁ¸µ°ú MySql + Mybatis ¿¬µ¿|ÀÛ¼ºÀÚ daldal