{"id":592,"date":"2015-01-30T07:17:50","date_gmt":"2015-01-30T16:17:50","guid":{"rendered":"http:\/\/blog.box.kr\/?p=592"},"modified":"2015-01-30T07:17:50","modified_gmt":"2015-01-30T16:17:50","slug":"%ed%8e%8cspring-chainedtransactionmanager-%ec%96%b4%eb%96%bb%ea%b2%8c-%ec%82%ac%ec%9a%a9%ed%95%b4%ec%95%bc-%ed%95%98%eb%82%98","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=592","title":{"rendered":"[\ud38c]Spring ChainedTransactionManager \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud574\uc57c \ud558\ub098?"},"content":{"rendered":"<p>\ub2e4\uc911\ud2b8\ub79c\uc7ad\uc158\uc5d0 \ub300\ud55c \uc88b\uc744 \uae00..<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/kwon37xi.egloos.com\/4886947\">http:\/\/kwon37xi.egloos.com\/4886947<\/a><\/p>\n<p>&nbsp;<\/p>\n<div class=\"post_title_area\">\n<div class=\"post_title\">\n<h2 class=\"entry-title\" title=\"#\"><a title=\"Spring ChainedTransactionManager \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud574\uc57c \ud558\ub098?\" href=\"http:\/\/kwon37xi.egloos.com\/4886947\" name=\"4886947\">Spring ChainedTransactionManager \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud574\uc57c \ud558\ub098?<\/a> <span class=\"post_title_category\"><a href=\"http:\/\/kwon37xi.egloos.com\/category\/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D\">\ud504\ub85c\uadf8\ub798\ubc0d<\/a><\/span><\/h2>\n<\/div>\n<ul class=\"post_info\">\n<li class=\"post_info_author\"><span class=\"by\">by<\/span> \uad8c\ub0a8<\/li>\n<li class=\"post_info_date\"><abbr class=\"published\" title=\"2014\/07\/12 18:13\">2014\/07\/12 18:13<\/abbr><\/li>\n<li class=\"post_info_link\"><a href=\"http:\/\/kwon37xi.egloos.com\/4886947\">kwon37xi.egloos.com\/4886947<\/a><\/li>\n<li class=\"post_info_cmtcount\"><span class=\"txt\">\ub367\uae00\uc218 :<\/span> 0<\/li>\n<\/ul>\n<\/div>\n<div class=\"post_content entry-content\">\n<div class=\"hentry\">Spring Data Commons 1.6\uc5d0\ub294 <a href=\"http:\/\/docs.spring.io\/spring-data\/commons\/docs\/1.6.2.RELEASE\/api\/org\/springframework\/data\/transaction\/ChainedTransactionManager.html\" target=\"_blank\">ChainedTransactionManager<\/a>\ub77c\ub294 \uac83\uc774 \ucd94\uac00 \ub3fc \uc788\ub2e4<\/p>\n<p>\ud558\ub098\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc5ec\ub7ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud560 \ub54c <code>@Transactional<\/code> \uc560\ub178\ud14c\uc774\uc158\uc744 \ud1b5\ud574 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc7a1\uc544\uc904 \ub54c \uc5ec\ub7ec \ub370\uc774\ud130\uc18c\uc2a4(DataSource)\uc758 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800(Transaction Manager)\ub97c \ub530\ub85c\ub530\ub85c \uc9c0\uc815\ud574\uc11c \uc791\uc5c5\ud574\uc57c \ud55c\ub2e4.<br \/>\n\uc0ac\uc2e4 \uadf8\ub807\uac8c\uae4c\uc9c0 \uc5b4\ub824\uc6b4 \uc77c\uc740 \uc544\ub2c8\uc9c0\ub9cc \ud655\uc2e4\ud788 \ubcf5\uc7a1\ub3c4\uac00 \ub192\uc544\uc9c0\uae34 \ud55c\ub2e4. \uadf8\ub798\uc11c \ud3b8\ub9ac\ud558\uac8c \uc0ac\uc6a9\ud558\ub77c\uace0 \ub098\uc628 \uac83\uc774<a href=\"http:\/\/docs.spring.io\/spring-data\/commons\/docs\/1.6.2.RELEASE\/api\/org\/springframework\/data\/transaction\/ChainedTransactionManager.html\" target=\"_blank\">ChainedTransactionManager<\/a>\uc774\ub2e4.<br \/>\n\uc774\ub294 \uc5ec\ub7ec \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\ub97c \uc778\uc790\ub85c \ubc1b\uc544 <code>@Transactional<\/code>\uc5d0 \uae30\ubcf8 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\ub85c \ub4f1\ub85d\uc2dc\ucf1c\ub450\uba74, <strong>\ud2b8\ub79c\uc7ad\uc158\uc774 \uc2dc\uc791\ub420 \ub54c \uc9c0\uc815\ub41c \ubaa8\ub4e0 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\uc758 \ud2b8\ub79c\uc7ad\uc158\uc744 \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\uc2dc\ud0a4\uace0 \uba54\uc18c\ub4dc \uc885\ub8cc\uc2dc\uc5d0 \ub3d9\uc2dc\uc5d0 \ucee4\ubc0b(commit) \ud639\uc744 \ub864\ubc31(rollback)\uc744 \uc218\ud589<\/strong>\ud55c\ub2e4.<\/p>\n<p>javadoc \ubb38\uc11c\uc5d0 \ubcf4\uba74 <q>The configured instances will start transactions in the order given and commit\/rollback in reverse order, which means the PlatformTransactionManager most likely to break the transaction should be the last in the list configured. A PlatformTransactionManager throwing an exception during commit will automatically cause the remaining transaction managers to roll back instead of committing.<\/q>\ub77c\uace0 \ub098\uc628\ub2e4.<br \/>\n\uc989,<\/p>\n<ul>\n<li>\uc9c0\uc815\ub41c \uc21c\uc11c\ub300\ub85c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc2e4\ud589\ub418\uace0,<\/li>\n<li>\uc9c0\uc815\ub41c \uc5ed\uc21c\uc73c\ub85c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc885\ub8cc\ub41c\ub2e4.<\/li>\n<li>\ub2e4\uc2dc\ub9d0\ud574, \uc5d0\ub7ec\ub97c \ub0b4\uae30 \uc26c\uc6b4 \ud2b8\ub79c\uc7ad\uc158\uc744 \ub9c8\uc9c0\ub9c9\uc5d0 \uc9c0\uc815\ud574\uc11c \ud2b8\ub79c\uc7ad\uc158 \uc885\ub8cc \uc791\uc5c5\uc774 \ucd5c\ucd08\ub85c \ud638\ucd9c\ub418\ub3c4\ub85d \ud574\uc57c\ud55c\ub2e4<\/li>\n<\/ul>\n<p>\uc65c\ub0d0\uba74, \uc5d0\ub7ec\ub97c \ub0bc \uac00\ub2a5\uc131\uc774 \ub192\uc740 \ud2b8\ub79c\uc7ad\uc158\uc774 \ucd5c\ucd08\ub85c \ub864\ubc31\uc774 \ub3fc\uc57c \uadf8 \ub4a4\uc758 \ub2e4\ub978 \ud2b8\ub79c\uc7ad\uc158\ub3c4 \ub530\ub77c\uc11c \ub864\ubc31 \ub418\uae30 \ub54c\ubb38\uc774\ub2e4. ChainedTransactionManager\ub294 \ub2e8\uc9c0 \ud2b8\ub79c\uc7ad\uc158 \uc2dc\uc791\uacfc \uc885\ub8cc\ub97c \ub3d9\uc2dc\uc5d0 \ud574\uc904 \ubfd0\uc774\uc9c0 Two Phase Commit\uc744 \uc9c0\uc6d0\ud558\ub294\uac8c \uc544\ub2c8\ub77c\uc11c \uc774\ubbf8 \ub2e4\ub978 \ud2b8\ub79c\uc7ad\uc158\uc774 \ucee4\ubc0b\ub41c \uc0c1\ud669\uc5d0\uc11c \ud558\ub098\uc758 \ud2b8\ub79c\uc7ad\uc158\uc774 \ub864\ubc31 \ub410\ub2e4\uace0 \ud574\uc11c \uc774\ubbf8 \ucee4\ubc0b\ub41c \uac83\ub4e4\uc774 \ub2e4\uc2dc \ub864\ubc31\ub418\uc9c0\ub294 \uc54a\ub294\ub2e4. \ub530\ub77c\uc11c <strong>\uac00\uc7a5 \uc704\ud5d8\ud55c \uc694\uc18c\ub97c \ucd5c\ucd08\ub85c \ucee4\ubc0b\/\ub864\ubc31 \uc2dc\ub3c4<\/strong>\ud558\ub3c4\ub85d \ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\uadf8\ub7f0\ub370 \ubb38\uc81c\uac00 \uc5ec\uae30\uc11c \ub05d\ub098\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>Spring\uc758 PlatformTransactionManager\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc2dc\uc791\ub420 \ub54c Connection\uc744 \ud655\ubcf4\ud55c\ub2e4. \uc5ec\uae30\uc11c \uc2e4\uc81c\ub85c \ud574\ub2f9 Connection\uc758 \uc0ac\uc6a9\uc5ec\ubd80\ub294 \uc911\uc694\ud558\uc9c0 \uc54a\ub2e4. <strong>\uadf8\ub0e5 \ubb34\uc870\uac74 Connection\uc744 \ud655\ubcf4<\/strong>\ud55c\ub2e4.<\/p>\n<p>ChainedTransactionManager\uac00 firstTransactionManager\uc640 secondTransactionManager\ub97c \ubb36\uc740 \uc0c1\ud0dc\uc77c\ub54c, ServiceA\uac00 firstTransactionManager\uc758 \ub370\uc774\ud130\uc18c\uc2a4\ub9cc \uc0ac\uc6a9\ud558\ub294 \uc791\uc5c5\uc744 \ud558\ub354\ub77c\ub3c4 secondTransactionManager\uc758 \ub370\uc774\ud130\uc18c\uc2a4\uc758 \ucee4\ub125\uc158\uae4c\uc9c0 \ud568\uaed8 \ubb3c\uace0 \ub4e4\uc5b4\uac00\uac8c \ub41c\ub2e4.<\/p>\n<p>\uc774 \uc0c1\ud669\uc774 \ub418\uba74 \uc2e4\uc81c\ub85c <b>secondTransactionManager\ub294 \uc544\ubb34 \ud558\ub294 \uc77c\ub3c4 \uc5c6\uc774 \ucee4\ub125\uc158 \uace0\uac08 \uc0c1\ud0dc\uc5d0 \ube60\uc9c8 \uc218 \uc788\ub2e4.<\/b>\uac8c\ub2e4\uac00 secondTransactionManager\uc5d0 \ucc38\uc5ec\ud558\ub294 \ub370\uc774\ud130\uc18c\uc2a4\uc758 \ucd5c\ub300 \ucee4\ub125\uc158 \uac2f\uc218\uac00 firstTransactionManager\uc758 \ucee4\ub125\uc158 \uac2f\uc218\ubcf4\ub2e4 \ub354 \uc801\uc740 \uc0c1\ud669\uc774\ub77c\uba74 \uc0ac\ud0dc\ub294 \ub354\uc6b1 \uc2ec\uac01\ud574\uc9c4\ub2e4.<\/p>\n<p>\ub530\ub77c\uc11c \ucd5c\uc885\uc801\uc73c\ub85c \ubd24\uc744 \ub54c <strong>ChainedTransactionManager\uc5d0 \ucc38\uc5ec\ud558\ub294 \ubaa8\ub4e0 DataSource\uc758 \ucd5c\ub300 \ucee4\ub125\uc158 \uac2f\uc218\ub294 \ub3d9\uc77c\ud558\uac8c \ub9de\ucdb0\uc8fc\ub294 \uac83\uc774 \uc88b\ub2e4.<\/strong><\/p>\n<p>\ub610\ud55c, Spring\uc740 <a href=\"http:\/\/docs.spring.io\/spring\/docs\/3.2.9.RELEASE\/javadoc-api\/org\/springframework\/jdbc\/datasource\/LazyConnectionDataSourceProxy.html\" target=\"_blank\">LazyConnectionDataSourceProxy<\/a>\ub77c\ub294 \uac83\uc744 \uc81c\uacf5\ud574\uc8fc\uace0 \uc788\ub2e4.<br \/>\n\uc774\ub97c \uc0ac\uc6a9\ud558\uba74 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\uc5d0 \uc758\ud574 \ucee4\ub125\uc158\uc774 \ud638\ucd9c\ub418\ub354\ub77c\ub3c4 <strong>\uc2e4\uc81c\ub85c \ucee4\ub125\uc158\uc774 \uc0ac\uc6a9\ub418\uae30 \uc804\uae4c\uc9c0 \uc6d0\ubcf8 \ub370\uc774\ud130\uc18c\uc2a4\uc5d0 \ucee4\ub125\uc158 \uc694\uccad\uc744 \ubbf8\ub8f8\uc73c\ub85c\uc368 \ubd88\ud544\uc694\ud55c \ucee4\ub125\uc158 \uc0dd\uc131 \uc694\uccad\uc744 \ubc29\uc9c0<\/strong>\ud574\uc900\ub2e4. \ub530\ub77c\uc11c CTM \uc73c\ub85c \ubb36\uc5ec\uc788\ub294 \ub370\uc774\ud130\uc18c\uc2a4\ub4e4\uc774 \uc0ac\uc6a9\ub3c4 \uc548\ub418\ub294 \ucee4\ub125\uc158 \uc694\uccad\uc73c\ub85c \ucee4\ub125\uc158 \uace0\uac08\uc744 \uacaa\ub294 \ubb38\uc81c\ub97c \uc644\ud654\uc2dc\ucf1c\uc900\ub2e4.<\/p>\n<p>LazyConnectionDataSourceProxy\ub294 ORM \uc0ac\uc6a9\uc2dc \uce90\uc2dc \ud788\ud2b8\uc728\uc774 \ub192\uc544\uc11c ReadOnly \ud2b8\ub79c\uc7ad\uc158\uc740 \uc2dc\uc791\ud588\uc73c\ub098 \uc815\uc791 DB\uc5d0 \ud55c\ubc88\ub3c4 \uc561\uc138\uc2a4\ud558\uc9c0 \uc54a\ub294 \uc0c1\ud669\uc774 \ub420 \ub54c\ub3c4 \ub9e4\uc6b0 \uc720\uc6a9\ud558\ub2e4.<\/p>\n<p>\uc704 \uc0ac\ud56d\uc740 \uc9c1\uc811 \ud14c\uc2a4\ud2b8\ub97c \ud574\ubcf4\uc558\ub2e4.<\/p>\n<p><a href=\"https:\/\/github.com\/kwon37xi\/ChainedTransactionManagerTest\" target=\"_blank\">ChainedTransactionManagerTest<\/a>\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\uc640 \uacb0\uacfc\ub97c \ubcfc \uc218 \uc788\ub2e4.\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ub2e4\uc911\ud2b8\ub79c\uc7ad\uc158\uc5d0 \ub300\ud55c \uc88b\uc744 \uae00.. &nbsp; &nbsp; http:\/\/kwon37xi.egloos.com\/4886947 &nbsp; Spring ChainedTransactionManager \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud574\uc57c \ud558\ub098? \ud504\ub85c\uadf8\ub798\ubc0d by \uad8c\ub0a8 2014\/07\/12 18:13 kwon37xi.egloos.com\/4886947 \ub367\uae00\uc218 : 0 Spring Data Commons 1.6\uc5d0\ub294 ChainedTransactionManager\ub77c\ub294 \uac83\uc774 \ucd94\uac00 \ub3fc \uc788\ub2e4 \ud558\ub098\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc5ec\ub7ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud560 \ub54c @Transactional \uc560\ub178\ud14c\uc774\uc158\uc744 \ud1b5\ud574 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc7a1\uc544\uc904 \ub54c \uc5ec\ub7ec \ub370\uc774\ud130\uc18c\uc2a4(DataSource)\uc758 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800(Transaction Manager)\ub97c \ub530\ub85c\ub530\ub85c \uc9c0\uc815\ud574\uc11c \uc791\uc5c5\ud574\uc57c \ud55c\ub2e4. \uc0ac\uc2e4 \uadf8\ub807\uac8c\uae4c\uc9c0 \uc5b4\ub824\uc6b4 \uc77c\uc740 \uc544\ub2c8\uc9c0\ub9cc \ud655\uc2e4\ud788 \ubcf5\uc7a1\ub3c4\uac00 \ub192\uc544\uc9c0\uae34 \ud55c\ub2e4. \uadf8\ub798\uc11c \ud3b8\ub9ac\ud558\uac8c \uc0ac\uc6a9\ud558\ub77c\uace0 \ub098\uc628 \uac83\uc774ChainedTransactionManager\uc774\ub2e4. \uc774\ub294 \uc5ec\ub7ec \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\ub97c \uc778\uc790\ub85c \ubc1b\uc544 @Transactional\uc5d0 \uae30\ubcf8 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\ub85c \ub4f1\ub85d\uc2dc\ucf1c\ub450\uba74, \ud2b8\ub79c\uc7ad\uc158\uc774 \uc2dc\uc791\ub420 \ub54c \uc9c0\uc815\ub41c \ubaa8\ub4e0 \ud2b8\ub79c\uc7ad\uc158 \ub9e4\ub2c8\uc800\uc758 \ud2b8\ub79c\uc7ad\uc158\uc744 \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\uc2dc\ud0a4\uace0 \uba54\uc18c\ub4dc \uc885\ub8cc\uc2dc\uc5d0 \ub3d9\uc2dc\uc5d0 \ucee4\ubc0b(commit) \ud639\uc744 \ub864\ubc31(rollback)\uc744 \uc218\ud589\ud55c\ub2e4. javadoc \ubb38\uc11c\uc5d0 \ubcf4\uba74 The configured instances will start transactions in the order given and commit\/rollback in reverse order, which means the PlatformTransactionManager most likely to break the transaction should be the last in the list configured. A PlatformTransactionManager throwing an exception during commit will automatically cause the remaining transaction managers to roll back instead of committing.\ub77c\uace0 \ub098\uc628\ub2e4. \uc989, \uc9c0\uc815\ub41c \uc21c\uc11c\ub300\ub85c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc2e4\ud589\ub418\uace0, \uc9c0\uc815\ub41c \uc5ed\uc21c\uc73c\ub85c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc885\ub8cc\ub41c\ub2e4. \ub2e4\uc2dc\ub9d0\ud574, \uc5d0\ub7ec\ub97c \ub0b4\uae30 \uc26c\uc6b4 \ud2b8\ub79c\uc7ad\uc158\uc744 \ub9c8\uc9c0\ub9c9\uc5d0 \uc9c0\uc815\ud574\uc11c \ud2b8\ub79c\uc7ad\uc158 \uc885\ub8cc \uc791\uc5c5\uc774 \ucd5c\ucd08\ub85c \ud638\ucd9c\ub418\ub3c4\ub85d \ud574\uc57c\ud55c\ub2e4 \uc65c\ub0d0\uba74, \uc5d0\ub7ec\ub97c \ub0bc \uac00\ub2a5\uc131\uc774 \ub192\uc740 \ud2b8\ub79c\uc7ad\uc158\uc774 \ucd5c\ucd08\ub85c \ub864\ubc31\uc774 \ub3fc\uc57c \uadf8 \ub4a4\uc758 \ub2e4\ub978 \ud2b8\ub79c\uc7ad\uc158\ub3c4 \ub530\ub77c\uc11c \ub864\ubc31 \ub418\uae30 \ub54c\ubb38\uc774\ub2e4. ChainedTransactionManager\ub294 \ub2e8\uc9c0 \ud2b8\ub79c\uc7ad\uc158 \uc2dc\uc791\uacfc \uc885\ub8cc\ub97c \ub3d9\uc2dc\uc5d0 \ud574\uc904 \ubfd0\uc774\uc9c0 Two Phase [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[15,7],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-9y","jetpack-related-posts":[{"id":590,"url":"https:\/\/blog.box.kr\/?p=590","url_meta":{"origin":592,"position":0},"title":"[\ud38c]Java \uc5d0\uc11c DataBase Replication Master\/Slave (write\/read) \ubd84\uae30 \ucc98\ub9ac\ud558\uae30 \ud504\ub85c\uadf8\ub798\ubc0d","date":"2015-01-30","format":false,"excerpt":"Cloud\ud658\uacbd\uc5d0\uc11c DB\ub97c \uc0ac\uc6a9\ud558\ub2e4\ubcf4\ub2c8 Disk I\/O\ub098 \ub108\ubb34 \ub290\ub824\uc11c \ub9ce\uc740 \uace0\ubbfc\uc744 \ud558\uac8c \ub410\ub2e4. \uc77c\ub2e8 \uc0dd\uac01\ub098\ub294\uac83\uc774 \ub9ce\uc774 \ub4e4 \ud558\ub294 Replication\uc744 \uc774\uc6a9\ud55c \ubd80\ud558\ubd84\uc0b0 ( Master\ub294 Insert\/Update\ub9cc, Slave\ub294 SELECT\ub9cc ) \uadf8\ub7f0\ub370 \ub9c9\uc0c1 \ud560\ub824\uba74 \uc774\uac83 \uc800\uac83 \uc190\uc774 \ub9ce\uc774 \uac04\ub2e4.. \uadf8\ub798\uc11c.. \uc0dd\uac01\ub9cc \ud558\uace0 \uc801\uc6a9\uc744 \uc548\ud588\uc5c8\ub294\ub370.. \u00a0 \uc6f9\uc11c\ud551\uc744 \ud558\ub2e4\uac00 \uc774\ub7f0 \uae00\uc744 \ubc1c\uacac.. \uc544!! \uc774\ub807\uac8c \uc88b\uc744 \uc218\uac00.. \u00a0 \uc5ed\uc2dc\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":720,"url":"https:\/\/blog.box.kr\/?p=720","url_meta":{"origin":592,"position":1},"title":"[\ud38c]Java \uc5d0\uc11c DataBase Replication Master\/Slave (write\/read) \ubd84\uae30 \ucc98\ub9ac\ud558\uae30","date":"2015-04-15","format":false,"excerpt":"http:\/\/kwon37xi.egloos.com\/ \ub300\uaddc\ubaa8 \uc11c\ube44\uc2a4 \uac1c\ubc1c\uc2dc\uc5d0 \uac00\uc7a5 \uae30\ubcf8\uc801\uc73c\ub85c \ud558\ub294 \ud29c\ub2dd\uc740 \ubc14\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c Write\uc640 Read DB\ub97c Replication(\ub9ac\ud50c\ub9ac\ucf00\uc774\uc158)\ud558\uace0 \uc4f0\uae30 \uc791\uc5c5\uc740 Master(Write)\ub85c \ubcf4\ub0b4\uace0 \uc77d\uae30 \uc791\uc5c5\uc740 Slave(Read)\ub85c \ubcf4\ub0b4\uc5b4 \ubd80\ud558\ub97c \ubd84\uc0b0 \uc2dc\ud0a4\ub294 \uac83\uc774\ub2e4. \ud2b9\ud788 \ub300\ubd80\ubd84\uc758 \uc11c\ube44\uc2a4\ub294 \uc77d\uae30\uac00 \uc555\ub3c4\uc801\uc73c\ub85c \ub9ce\uae30 \ub54c\ubb38\uc5d0\u00a0 Slave\ub294 \uc5ec\ub7ec \ub300\ub97c \ub450\uc5b4 \uc77d\uae30 \ubd80\ud558\ub97c \ubd84\uc0b0 \uc2dc\ud0a8\ub2e4. \uadf8\ub7f0\ub370 \ub610 \ud558\ub098 \uae30\uc5b5\ud574\uc57c \ud560 \uac83\uc774 Replication\uc740 \ube44\ub85d \uc9e7\ub354\ub77c\ub3c4\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":301,"url":"https:\/\/blog.box.kr\/?p=301","url_meta":{"origin":592,"position":2},"title":"\ud22c\uc790\ub97c \ud574\uc57c \uc88b\uc740 \uc74c\uc2dd\uc774 \ub098\uc628\ub2e4","date":"2014-08-07","format":false,"excerpt":"\uc5b4\ub5bb\uac8c \ub9db\uc9d1\uc744 \ucc3e\uc544\ub0b4\ub294\uac00? \"\uc9c0\ubc29\uc5d0\uc11c\ub294\uc694. \uadf8 \uc9c0\uc5ed \uba74\uc11c\uae30\uac00 \uba39\uc73c\ub7ec \uac00\ub294 \uc9d1\uc774 \uc81c\uc77c \ub9db\uc788\ub294 \uc9d1\uc774\uc9c0\uc694. \ubb50... \uba74\uc11c\uae30\ub97c \ub2e4 \ub9cc\ub0a0 \uc218\ub294 \uc5c6\ub294 \uc77c\uc774\ub2c8\uae4c, \uc880 \ub354 \uc26c\uc6b4 \ubc29\ubc95\uc740 \uc57d\uad6d\uc5d0 \uac00\uc11c '\ubc14\uce74\uc2a4' \ud558\ub098 \uc0ac\uba39\uace0 \ubb3c\uc5b4\ubcf4\uba74 \ub9db\uc788\ub294 \uc9d1 \uc54c\ub824\uc90d\ub2c8\ub2e4. \uc190\ub2d8\uc774 \ub738\ud55c \uc57d\uad6d\uc758 \uc57d\uc0ac\ub4e4\uc740 \ubcf4\ud1b5 11\uc2dc \uacbd\ubd80\ud130 \uc810\uc2ec\uc744 \ubb58 \uba39\uc744\uae4c \uc0dd\uac01\ud558\uae30 \ub54c\ubb38\uc774\uc9c0\uc694. \ud558\ud558.\" (114\ucabd) \uc6d0\uc7ac\ud6c8\uc758 '\ub2e8\ub3c5\uc790' \uc911\uc5d0\uc11c(\uc62c\ub9bc)\u2026","rel":"","context":"In &quot;\uc77c\uc0c1&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":82,"url":"https:\/\/blog.box.kr\/?p=82","url_meta":{"origin":592,"position":3},"title":"Hibernate vs iBatis","date":"2014-06-12","format":false,"excerpt":"Hibernate vs iBatis Hibernate vs iBatis 1. 2\uac1c\uc758 \ud504\ub808\uc784\uc6cd\uc758 \ubd84\ub958 a. Hibernate: Object Relational Mapper b. iBatis: SQL mapper 2. Object Relational Mapper\ub780? a. Database \uc5d4\ud2f0\ud2f0(\uc77c\uc885\uc758 \ud14c\uc774\ube14 row)\uc640 \uc790\ubc14 \uac1d\uccb4\ub97c \ub3d9\uae30\ud654 \ud558\ub294 \uc5ed\ud560\uc744 \ub2f4\ub2f9 b. Hibernate\ub294 \uc774\ub7ec\ud55c \uc5ed\ud560\uc744 \ud558\ub294 \ud504\ub808\uc784\uc6cd c. \ubaa8\ub4e0 sql\ubb38\uc740 \ud504\ub808\uc784\uc6cd\uc5d0\uc11c \uc0dd\uc131\ub418\uace0 \uc2e4\ud589\ub428 d. sql\uc791\uc5c5\uc774 \ud544\uc694\ud560 \uacbd\uc6b0\u2026","rel":"","context":"In &quot;JEUS &amp; WEBToB&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":429,"url":"https:\/\/blog.box.kr\/?p=429","url_meta":{"origin":592,"position":4},"title":"[\ud38c]\u2018\ub2e4\ub978 \uac1c\ubc1c\uc790\ub294 \uc5b4\ub5bb\uac8c \uc4f8\uae4c?\u2019 \uc0ac\uc18c\ud558\uace0 \uc7ac\ubbf8\uc788\ub294 9\uac00\uc9c0 \ud504\ub85c\uadf8\ub798\ubc0d \uad00\ub840","date":"2014-12-04","format":false,"excerpt":"\u2018\ub2e4\ub978 \uac1c\ubc1c\uc790\ub294 \uc5b4\ub5bb\uac8c \uc4f8\uae4c?\u2019 \uc0ac\uc18c\ud558\uace0 \uc7ac\ubbf8\uc788\ub294 9\uac00\uc9c0 \ud504\ub85c\uadf8\ub798\ubc0d \uad00\ub840 \uac1c\ubc1c\uc790 ITWorld \ubcf4\ud1b5 \ud504\ub85c\uadf8\ub798\uba38\ub4e4\uc740 \ucf54\ub4dc\ub97c \uc4f8 \ub54c \uc608\ub97c \ub4e4\uc5b4 \ub4e4\uc5ec\uc4f0\uae30\uc5d0\ub294 \ud0ed \ub300\uc2e0 \uc2a4\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \ub4f1(\ub610\ub294 \uadf8 \ubc18\ub300) \uc790\uae30\ub9cc\uc758 \uad00\ub840\uc5d0 \ub530\ub978\ub2e4. \uc774\ub7ec\ud55c \uad00\ub840\ub294 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc640 \uc870\uc9c1, \uadf8\ub9ac\uace0 \uac1c\ubc1c\uc790\ub9c8\ub2e4 \ub2e4\ub97c \uc218 \uc788\ub2e4. \uadf8\ub807\ub2e4\uba74 \uac00\uc7a5 \uc77c\ubc18\uc801\uc73c\ub85c \ud1b5\uc6a9\ub418\ub294 \uad00\ub840\ub294 \ubb34\uc5c7\uc77c\uae4c? \ucd5c\uadfc \uae43\ud5c8\ube0c(GitHub) \ub370\uc774\ud130 \ucc4c\ub9b0\uc9c0\ub97c \ud1b5\ud574\u2026","rel":"","context":"In &quot;\uae30\uc220\uc790\ub8cc&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1219,"url":"https:\/\/blog.box.kr\/?p=1219","url_meta":{"origin":592,"position":5},"title":"\uc2e4\ud328 \ub178\ud2b8\ub97c \uc791\uc131\ud558\uc790..","date":"2020-06-06","format":false,"excerpt":"\uc9c4\ud589 \ud55c \uc77c\uc5d0 \ub300\ud574 \uc2e4\ud328 \ub178\ud2b8\ub97c \uc791\uc131\ud558\uc790. \uc5b4\ub5a4 \uac83\uc744, \ub204\uac00, \uc5b4\ub5bb\uac8c, \ud588\ub294\uc9c0 \uadf8\ub9ac\uace0 \uadf8 \uacb0\uacfc\uac00 \uc5b4\ub5bb\uac8c \uc77c\uc5b4 \ub0ac\ub294\uc9c0 \uc801\uc790.. \uadf8\ub9ac\uace0 \uadf8 \uc77c\uc774 \ubc18\ubcf5\ub418\uc9c0 \uc54a\uae30 \uc704\ud574\uc11c \uc5b4\ub5bb\uac8c \ud574\uc57c \ud558\ub294\uc9c0\uc5d0 \ub300\ud574\uc11c \ucd5c\ub300\ud55c \uc0c1\uc138\ud558\uac8c \uc801\uc5b4 \ubcf4\uc790..","rel":"","context":"Similar post","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/592"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=592"}],"version-history":[{"count":0,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/592\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}