diff --git a/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml b/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml index 1c37a633c2..dffa6893da 100644 --- a/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml +++ b/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml @@ -1,4 +1,4 @@ - + diff --git a/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml b/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml index 18335290fa..5161f1906a 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml @@ -1,13 +1,15 @@ - +> + + - ƒA[ƒLƒeƒNƒ`ƒƒ + アーキテクãƒãƒ£ - ŠTŠÏ + 概観 - HibernateƒA[ƒLƒeƒNƒ`ƒƒ‚Ìi”ñí‚Éj‚‚¢ƒŒƒxƒ‹‚©‚ç‚̃rƒ…[F + Hibernateアーキテクãƒãƒ£ã®ï¼ˆéžå¸¸ã«ï¼‰é«˜ã„レベルã‹ã‚‰ã®ãƒ“ュー: @@ -20,18 +22,18 @@ - ‚±‚Ì}‚ÍHibernate‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚ĉi‘±‰»ƒT[ƒrƒX - i‚Ɖi‘±ƒIƒuƒWƒFƒNƒgj‚ð’ñ‹Ÿ‚·‚邽‚ß‚ÉAƒf[ƒ^ƒx[ƒX‚ÆÝ’èƒf[ƒ^‚ðŽg‚¤‚±‚Æ‚ð - Ž¦‚µ‚Ä‚¢‚Ü‚·B + ã“ã®å›³ã¯HibernateãŒã€ã‚¢ãƒ—リケーションã«å¯¾ã—ã¦æ°¸ç¶šåŒ–サービス + (ã¨æ°¸ç¶šã‚ªãƒ–ジェクト)をæä¾›ã™ã‚‹ãŸã‚ã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨è¨­å®šãƒ‡ãƒ¼ã‚¿ã‚’使ã†ã“ã¨ã‚’ + 示ã—ã¦ã„ã¾ã™ã€‚ - ‚±‚±‚ÅŽÀsŽžƒA[ƒLƒeƒNƒ`ƒƒ‚Ì‚æ‚èÚׂȃrƒ…[‚ð‚¨Œ©‚¹‚µ‚Ü‚µ‚傤B - ‚ ‚¢‚É‚­AHibernate‚Í_“î‚Å‚ ‚èA‚¢‚ë‚¢‚ë‚ȃAƒvƒ[ƒ`‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - ‚±‚±‚Å‚ÍA2‚‚̋ɒ[‚È—á‚ð‚¨Œ©‚¹‚µ‚Ü‚·B - uŒy‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽ©‘O‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“‚ð—pˆÓ‚µA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“Ž©g‚ªƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠÇ—‚µ‚Ü‚·B - ‚±‚Ì•û–@‚ÍAHibernate API‚ÌŬŒÀ‚̃TƒuƒZƒbƒg‚ðŽg‚¢‚Ü‚·F + ã“ã“ã§å®Ÿè¡Œæ™‚アーキテクãƒãƒ£ã®ã‚ˆã‚Šè©³ç´°ãªãƒ“ューをãŠè¦‹ã›ã—ã¾ã—ょã†ã€‚ + ã‚ã„ã«ãã€Hibernateã¯æŸ”軟ã§ã‚ã‚Šã€ã„ã‚ã„ã‚ãªã‚¢ãƒ—ローãƒã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + ã“ã“ã§ã¯ã€2ã¤ã®æ¥µç«¯ãªä¾‹ã‚’ãŠè¦‹ã›ã—ã¾ã™ã€‚ + 「軽ã„ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã¯ã€ã‚¢ãƒ—リケーションãŒè‡ªå‰ã®JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’用æ„ã—〠+ アプリケーション自身ãŒãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’管ç†ã—ã¾ã™ã€‚ + ã“ã®æ–¹æ³•ã¯ã€Hibernate APIã®æœ€å°é™ã®ã‚µãƒ–セットを使ã„ã¾ã™ï¼š @@ -44,8 +46,8 @@ - ud‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çA‚»‚̉º‚Ɉʒu‚·‚éJDBC‚âJTA‚ÌAPI‚ð - Žæ‚è•¥‚Á‚Ä’ŠÛ‰»‚µA‚»‚ÌÚׂ̖ʓ|‚ðHibernate‚ÉŒ©‚³‚¹‚Ü‚·B + 「é‡ã„ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¯ã€ã‚¢ãƒ—リケーションã‹ã‚‰ã€ãã®ä¸‹ã«ä½ç½®ã™ã‚‹JDBCã‚„JTAã®APIã‚’ + å–り払ã£ã¦æŠ½è±¡åŒ–ã—ã€ãã®è©³ç´°ã®é¢å€’ã‚’Hibernateã«è¦‹ã•ã›ã¾ã™ã€‚ @@ -58,19 +60,19 @@ - ˆÈ‰º‚ÍAã‚Ì}‚ÉŠÜ‚Ü‚ê‚éƒIƒuƒWƒFƒNƒg‚Ì’è‹`‚Å‚·F + 以下ã¯ã€ä¸Šã®å›³ã«å«ã¾ã‚Œã‚‹ã‚ªãƒ–ジェクトã®å®šç¾©ã§ã™ï¼š SessionFactory (org.hibernate.SessionFactory) - 1‚‚̃f[ƒ^ƒx[ƒX‚ɑ΂·‚éƒRƒ“ƒpƒCƒ‹‚³‚ꂽƒ}ƒbƒsƒ“ƒO‚Ì - ƒXƒŒƒbƒhƒZ[ƒt‚ÈiXV•s”\‚ÌjƒLƒƒƒbƒVƒ…B - Session ‚̃tƒ@ƒNƒgƒŠ‚Å‚ ‚èA - ConnectionProvider ‚̃Nƒ‰ƒCƒAƒ“ƒgB - ƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚ÄAƒvƒƒZƒX‚Ü‚½‚̓Nƒ‰ƒXƒ^ƒŒƒxƒ‹‚É‚¨‚¢‚ÄA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÔ‚ÅÄ—˜—p‰Â”\‚ȃf[ƒ^‚Ìi“ñŽŸjƒLƒƒƒbƒVƒ…‚ðŽ‚¿‚Ü‚·B + 1ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã™ã‚‹ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸãƒžãƒƒãƒ”ング㮠+ スレッドセーフãªï¼ˆæ›´æ–°ä¸èƒ½ã®ï¼‰ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã€‚ + Session ã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã§ã‚り〠+ ConnectionProvider ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã€‚ + オプションã¨ã—ã¦ã€ãƒ—ロセスã¾ãŸã¯ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¬ãƒ™ãƒ«ã«ãŠã„ã¦ã€ + トランザクション間ã§å†åˆ©ç”¨å¯èƒ½ãªãƒ‡ãƒ¼ã‚¿ã®ï¼ˆäºŒæ¬¡ï¼‰ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’æŒã¡ã¾ã™ã€‚ @@ -78,38 +80,38 @@ Session (org.hibernate.Session) - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ɖi‘±ƒXƒgƒA‚Ƃ̑Θb‚ð•\‚·A - ƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Å’Z–½‚̃IƒuƒWƒFƒNƒgB - JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒ‰ƒbƒv‚µ‚Ü‚·B - Transaction ‚̃tƒ@ƒNƒgƒŠ‚Å‚·B - ‰i‘±ƒIƒuƒWƒFƒNƒg‚Ì•K{‚ÌiˆêŽŸjƒLƒƒƒbƒVƒ…‚ð•ÛŽ‚µ‚Ü‚·B - ‚±‚̃LƒƒƒbƒVƒ…‚̓IƒuƒWƒFƒNƒgƒOƒ‰ƒt‚ðƒiƒrƒQ[ƒVƒ‡ƒ“‚·‚鎞‚âA - Ž¯•ÊŽq‚ŃIƒuƒWƒFƒNƒg‚ðŒŸõ‚·‚鎞‚ÉŽg‚í‚ê‚Ü‚·B + アプリケーションã¨æ°¸ç¶šã‚¹ãƒˆã‚¢ã¨ã®å¯¾è©±ã‚’表ã™ã€ + シングルスレッドã§çŸ­å‘½ã®ã‚ªãƒ–ジェクト。 + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ラップã—ã¾ã™ã€‚ + Transaction ã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã§ã™ã€‚ + 永続オブジェクトã®å¿…é ˆã®ï¼ˆä¸€æ¬¡ï¼‰ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’ä¿æŒã—ã¾ã™ã€‚ + ã“ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ã‚ªãƒ–ジェクトグラフをナビゲーションã™ã‚‹æ™‚や〠+ 識別å­ã§ã‚ªãƒ–ジェクトを検索ã™ã‚‹æ™‚ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ - Persistent objects ‚Æ Collections + Persistent objects 㨠Collections - ‰i‘±‰»ó‘ԂƃrƒWƒlƒXƒƒ\ƒbƒh‚ðŽ‚ÂA’Z–½‚ŃVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚̃IƒuƒWƒFƒNƒgB - ‚±‚ê‚Í’Êí‚ÌJavaBeans/POJO‚Ì‚±‚Æ‚à‚ ‚è‚Ü‚·‚ªA“Á’¥“I‚È‚±‚Æ‚ÍA - ‚»‚ÌŽž“_‚Å‚Ìi‚½‚¾1‚‚Ìj Session ‚ÆŠÖ˜A‚µ‚Ä‚¢‚邱‚Æ‚Å‚·B - Session ‚ªƒNƒ[ƒY‚³‚ê‚é‚Æ‚·‚®‚ÉA - ‚»‚ê‚ç‚ÍØ‚è—£‚³‚ê‚Ä‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‘w‚©‚玩—R‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - i—Ⴆ‚΃f[ƒ^Eƒgƒ‰ƒ“ƒXƒtƒ@EƒIƒuƒWƒFƒNƒg‚Æ‚µ‚ÄA - ƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚©‚çA‚Ü‚½‚̓vƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚Ö’¼ÚŽg—p‚Å‚«‚Ü‚·Bj + 永続化状態ã¨ãƒ“ジãƒã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã¤ã€çŸ­å‘½ã§ã‚·ãƒ³ã‚°ãƒ«ã‚¹ãƒ¬ãƒƒãƒ‰ã®ã‚ªãƒ–ジェクト。 + ã“ã‚Œã¯é€šå¸¸ã®JavaBeans/POJOã®ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ãŒã€ç‰¹å¾´çš„ãªã“ã¨ã¯ã€ + ãã®æ™‚点ã§ã®ï¼ˆãŸã 1ã¤ã®ï¼‰ Session ã¨é–¢é€£ã—ã¦ã„ã‚‹ã“ã¨ã§ã™ã€‚ + Session ãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚Œã‚‹ã¨ã™ãã«ã€ + ãれらã¯åˆ‡ã‚Šé›¢ã•ã‚Œã¦ä»–ã®ã‚¢ãƒ—リケーション層ã‹ã‚‰è‡ªç”±ã«ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + (例ãˆã°ãƒ‡ãƒ¼ã‚¿ãƒ»ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ã‚¡ãƒ»ã‚ªãƒ–ジェクトã¨ã—ã¦ã€ + プレゼンテーション層ã‹ã‚‰ã€ã¾ãŸã¯ãƒ—レゼンテーション層ã¸ç›´æŽ¥ä½¿ç”¨ã§ãã¾ã™ã€‚) - Transient ‚Æ detached ‚È objects ‚Æ Collections + Transient 㨠detached 㪠objects 㨠Collections - Œ»Žž“_‚Å‚Í Session ‚ÆŠÖ˜A‚µ‚Ä‚¢‚È‚¢A - ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒXB - ‚·‚łɃAƒvƒŠƒP[ƒVƒ‡ƒ“‘¤‚ŃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ê‚Ä‚¢‚ÄA‚Ü‚¾‰i‘±‰»‚³‚ê‚Ä‚¢‚È‚¢‚©A - ƒNƒ[ƒY‚³‚ꂽ Session ‚ŃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚©‚Ì‚Ç‚¿‚ç‚©‚Å‚·B + ç¾æ™‚点ã§ã¯ Session ã¨é–¢é€£ã—ã¦ã„ãªã„〠+ 永続クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ + ã™ã§ã«ã‚¢ãƒ—リケーションå´ã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•ã‚Œã¦ã„ã¦ã€ã¾ã æ°¸ç¶šåŒ–ã•ã‚Œã¦ã„ãªã„ã‹ã€ + クローズã•ã‚ŒãŸ Session ã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•ã‚ŒãŸã‹ã®ã©ã¡ã‚‰ã‹ã§ã™ã€‚ @@ -117,13 +119,13 @@ Transaction (org.hibernate.Transaction) - (ƒIƒvƒVƒ‡ƒ“)Œ´Žq«‚ðŽ‚Âì‹Æ’PˆÊ(Unit of Work)‚ðŽw’è‚·‚邽‚ß‚ÉAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽg—p‚·‚éA - ƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Å’Z–½‚ȃIƒuƒWƒFƒNƒgB - ‰º‚Ɉʒu‚·‚éJDBCAJTAACORBAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð’ŠÛ‰»‚µ‚Ü‚·B - Session ‚ÍAŽž‚É‚Í - ‚¢‚­‚‚©‚Ì Transaction ‚ð‚Ü‚½‚ª‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚µ‚©‚µA‰º‚Ì‘w‚ÌAPI‚ðŽg‚¤‚É‚¹‚æA Transaction ‚ðŽg‚¤‚É‚¹‚æA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðÝ’è‚·‚邱‚Æ‚ÍAŒˆ‚µ‚ăIƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñIB + (オプション)原å­æ€§ã‚’æŒã¤ä½œæ¥­å˜ä½(Unit of Work)を指定ã™ã‚‹ãŸã‚ã«ã€ã‚¢ãƒ—リケーションãŒä½¿ç”¨ã™ã‚‹ã€ + シングルスレッドã§çŸ­å‘½ãªã‚ªãƒ–ジェクト。 + 下ã«ä½ç½®ã™ã‚‹JDBCã€JTAã€CORBAトランザクションã‹ã‚‰ã‚¢ãƒ—リケーションを抽象化ã—ã¾ã™ã€‚ + Session ã¯ã€æ™‚ã«ã¯ + ã„ãã¤ã‹ã® Transaction ã‚’ã¾ãŸãŒã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã—ã‹ã—ã€ä¸‹ã®å±¤ã®APIを使ã†ã«ã›ã‚ˆã€ Transaction を使ã†ã«ã›ã‚ˆã€ + トランザクション境界を設定ã™ã‚‹ã“ã¨ã¯ã€æ±ºã—ã¦ã‚ªãƒ—ションã§ã¯ã‚ã‚Šã¾ã›ã‚“ï¼ã€‚ @@ -131,10 +133,10 @@ ConnectionProvider (org.hibernate.connection.ConnectionProvider) - (ƒIƒvƒVƒ‡ƒ“)JDBCƒRƒlƒNƒVƒ‡ƒ“i‚Æ‚»‚̃v[ƒ‹j‚̃tƒ@ƒNƒgƒŠB - ‰º‚Ì‘w‚Ɉʒu‚·‚é Datasource ‚â - DriverManager ‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð’ŠÛ‰»‚µ‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒöŠJ‚³‚ê‚Ü‚¹‚ñ‚ªAŠJ”­ŽÒ‚ªŒp³‚Ü‚½‚ÍŽÀ‘•‚·‚邱‚Ƃ͉”\‚Å‚·B + (オプション)JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ï¼ˆã¨ãã®ãƒ—ール)ã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã€‚ + 下ã®å±¤ã«ä½ç½®ã™ã‚‹ Datasource ã‚„ + DriverManager ã‹ã‚‰ã‚¢ãƒ—リケーションを抽象化ã—ã¾ã™ã€‚ + アプリケーションã«ã¯å…¬é–‹ã•ã‚Œã¾ã›ã‚“ãŒã€é–‹ç™ºè€…ãŒç¶™æ‰¿ã¾ãŸã¯å®Ÿè£…ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚ @@ -142,8 +144,8 @@ TransactionFactory (org.hibernate.TransactionFactory) - (ƒIƒvƒVƒ‡ƒ“) Transaction ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠB - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒöŠJ‚³‚ê‚Ü‚¹‚ñ‚ªAŠJ”­ŽÒ‚ªŒp³‚Ü‚½‚ÍŽÀ‘•‚·‚邱‚Ƃ͉”\‚Å‚·B + (オプション) Transaction インスタンスã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã€‚ + アプリケーションã«ã¯å…¬é–‹ã•ã‚Œã¾ã›ã‚“ãŒã€é–‹ç™ºè€…ãŒç¶™æ‰¿ã¾ãŸã¯å®Ÿè£…ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚ @@ -151,9 +153,9 @@ Extension Interfaces - Hibernate‚ÍA‰i‘±‘w‚ÌU‚é•‘‚¢‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚邽‚ß‚ÉA - ‘½‚­‚̃IƒvƒVƒ‡ƒ“Šg’£ƒCƒ“ƒ^ƒtƒF[ƒX‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B - ÚׂÍAPIƒhƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateã¯ã€æ°¸ç¶šå±¤ã®æŒ¯ã‚‹èˆžã„をカスタマイズã™ã‚‹ãŸã‚ã«ã€ + 多ãã®ã‚ªãƒ—ション拡張インタフェースを用æ„ã—ã¦ã„ã¾ã™ã€‚ + 詳細ã¯APIドキュメントをå‚ç…§ã—ã¦ãã ã•ã„。 @@ -161,18 +163,18 @@ - uŒy‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í’¼ÚJTA‚âJDBC‚ƑΘb‚·‚邽‚ß‚ÉA - Transaction ‚â TransactionFactory ‚â - ConnectionProvider ‚ðƒoƒCƒpƒX‚µ‚Ü‚·B + 「軽ã„ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã¯ã€ã‚¢ãƒ—リケーションã¯ç›´æŽ¥JTAã‚„JDBCã¨å¯¾è©±ã™ã‚‹ãŸã‚ã«ã€ + Transaction ã‚„ TransactionFactory ã‚„ + ConnectionProvider ã‚’ãƒã‚¤ãƒ‘スã—ã¾ã™ã€‚ - ƒCƒ“ƒXƒ^ƒ“ƒX‚Ìó‘Ô + インスタンスã®çŠ¶æ…‹ - ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍAŽŸ‚Ì‚R‚‚̈قȂéó‘Ô‚Ì‚Ç‚ê‚©‚É‚È‚è‚Ü‚·B - ‚»‚ê‚ÍA ‰i‘±ƒRƒ“ƒeƒLƒXƒg ‚É‚æ‚Á‚ÄŒˆ‚Ü‚è‚Ü‚·B - Hibernate‚Ì Session ƒIƒuƒWƒFƒNƒg‚ªA‰i‘±ƒRƒ“ƒeƒLƒXƒg‚É‚È‚è‚Ü‚·B + 永続クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€æ¬¡ã®ï¼“ã¤ã®ç•°ãªã‚‹çŠ¶æ…‹ã®ã©ã‚Œã‹ã«ãªã‚Šã¾ã™ã€‚ + ãã‚Œã¯ã€ 永続コンテキスト ã«ã‚ˆã£ã¦æ±ºã¾ã‚Šã¾ã™ã€‚ + Hibernateã® Session オブジェクトãŒã€æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã«ãªã‚Šã¾ã™ã€‚ @@ -180,9 +182,9 @@ transient - ‚±‚Ìó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍAŒ»Ý‚à‚»‚µ‚ĉߋŽ‚É‚¨‚¢‚Ä‚àA - ‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¢‚Ä‚¢‚Ü‚¹‚ñB‚Ü‚½A‰i‘±IDiŽåƒL[‚Ì’lj‚ð - Ž‚Á‚Ä‚¢‚Ü‚¹‚ñB + ã“ã®çŠ¶æ…‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ç¾åœ¨ã‚‚ãã—ã¦éŽåŽ»ã«ãŠã„ã¦ã‚‚〠+ 永続コンテキストã«é–¢é€£ã¥ã„ã¦ã„ã¾ã›ã‚“。ã¾ãŸã€æ°¸ç¶šID(主キーã®å€¤ï¼‰ã‚’ + æŒã£ã¦ã„ã¾ã›ã‚“。 @@ -190,12 +192,12 @@ persistent - ‚±‚Ìó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA‚»‚ÌŽž“_‚ʼni‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¢‚Ä‚¢‚Ü‚·B - ‚Ü‚½A‰i‘±IDiŽåƒL[‚Ì’lj‚ðŽ‚¿A - ‚½‚¢‚Ä‚¢‚̓f[ƒ^ƒx[ƒX‚ɑΉž‚·‚és‚ðŽ‚Á‚Ä‚¢‚é‚Å‚µ‚傤B - ŒÂX‚̉i‘±ƒRƒ“ƒeƒLƒXƒg‚Ì‚È‚©‚Å‚ÍA‰i‘±ID‚ª - Java‚ÌIDiƒIƒuƒWƒFƒNƒg‚̃ƒ‚ƒŠã‚̈ʒuj‚Æ“¯‚¶‚Å‚ ‚邱‚Æ‚ð - Hibernate‚ª •ÛØ ‚µ‚Ü‚·B + ã“ã®çŠ¶æ…‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ãã®æ™‚点ã§æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã«é–¢é€£ã¥ã„ã¦ã„ã¾ã™ã€‚ + ã¾ãŸã€æ°¸ç¶šID(主キーã®å€¤ï¼‰ã‚’æŒã¡ã€ + ãŸã„ã¦ã„ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾å¿œã™ã‚‹è¡Œã‚’æŒã£ã¦ã„ã‚‹ã§ã—ょã†ã€‚ + 個々ã®æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã®ãªã‹ã§ã¯ã€æ°¸ç¶šID㌠+ Javaã®ID(オブジェクトã®ãƒ¡ãƒ¢ãƒªä¸Šã®ä½ç½®ï¼‰ã¨åŒã˜ã§ã‚ã‚‹ã“ã¨ã‚’ + Hibernate㌠ä¿è¨¼ ã—ã¾ã™ã€‚ @@ -203,12 +205,12 @@ detached - ‚±‚Ìó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA‚©‚‚ĉi‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¯‚ç‚ꂽ‚ªA - ‚»‚̃Rƒ“ƒeƒLƒXƒg‚ªƒNƒ[ƒY‚³‚ꂽ‚©A‚ ‚é‚¢‚ÍA - ‘¼‚̃vƒƒZƒX‚É‚»‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªƒVƒŠƒAƒ‰ƒCƒY‚³‚ꂽ‚©‚Å‚·B - ‚±‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA‰i‘±ID‚ðŽ‚¿A‚½‚¢‚Ä‚¢‚̓f[ƒ^ƒx[ƒX‚É - ‘Ήž‚·‚és‚ðŽ‚Á‚Ä‚¢‚é‚Å‚µ‚傤B•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚Ä‚ÍA - ‰i‘±ID‚ÆJava‚ÌID‚Æ‚ÌŠÖ˜A‚ÍAHibernate‚ª•ÛØ‚µ‚Ü‚¹‚ñB + ã“ã®çŠ¶æ…‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ã‹ã¤ã¦æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã«é–¢é€£ã¥ã‘られãŸãŒã€ + ãã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚ŒãŸã‹ã€ã‚ã‚‹ã„ã¯ã€ + ä»–ã®ãƒ—ロセスã«ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•ã‚ŒãŸã‹ã§ã™ã€‚ + ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€æ°¸ç¶šIDã‚’æŒã¡ã€ãŸã„ã¦ã„ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã« + 対応ã™ã‚‹è¡Œã‚’æŒã£ã¦ã„ã‚‹ã§ã—ょã†ã€‚分離インスタンスã«å¯¾ã—ã¦ã¯ã€ + 永続IDã¨Javaã®IDã¨ã®é–¢é€£ã¯ã€HibernateãŒä¿è¨¼ã—ã¾ã›ã‚“。 @@ -216,157 +218,157 @@ - JMX‚Æ‚Ì“‡ + JMXã¨ã®çµ±åˆ - JMX‚ÍJavaƒRƒ“ƒ|[ƒlƒ“ƒgŠÇ—‚ÌJ2EE•W€‚Å‚·B - JMX•W€ƒT[ƒrƒX‚ð’Ê‚µ‚ÄAHibernate‚ÍŠÇ—‚³‚ê‚Ü‚·B - ƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì’†‚É org.hibernate.jmx.HibernateService ‚Æ‚¢‚¤ - MBeanŽÀ‘•‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B + JMXã¯Javaコンãƒãƒ¼ãƒãƒ³ãƒˆç®¡ç†ã®J2EE標準ã§ã™ã€‚ + JMX標準サービスを通ã—ã¦ã€Hibernateã¯ç®¡ç†ã•ã‚Œã¾ã™ã€‚ + ディストリビューションã®ä¸­ã« org.hibernate.jmx.HibernateService ã¨ã„ㆠ+ MBean実装を用æ„ã—ã¦ã„ã¾ã™ã€‚ - JBoss ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[ã‚ÉHibernate‚ðJMXƒT[ƒrƒX‚Æ‚µ‚ăfƒvƒƒC‚·‚é•û–@‚Ì—á‚Æ‚µ‚Ä‚ÍA - JBoss ƒ†[ƒUƒKƒCƒh‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B JBoss ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚É‚¨‚¢‚ÄA - JMX‚ðŽg‚Á‚ăfƒvƒƒC‚·‚é‚ÆAŽŸ‚̃ƒŠƒbƒg‚ª“¾‚ç‚ê‚Ü‚·B + JBoss アプリケーションサーãƒãƒ¼ä¸Šã«Hibernateã‚’JMXサービスã¨ã—ã¦ãƒ‡ãƒ—ロイã™ã‚‹æ–¹æ³•ã®ä¾‹ã¨ã—ã¦ã¯ã€ + JBoss ユーザガイドをå‚ç…§ã—ã¦ãã ã•ã„。 JBoss アプリケーションサーãƒãƒ¼ã«ãŠã„ã¦ã€ + JMXを使ã£ã¦ãƒ‡ãƒ—ロイã™ã‚‹ã¨ã€æ¬¡ã®ãƒ¡ãƒªãƒƒãƒˆãŒå¾—られã¾ã™ã€‚ - ƒZƒbƒVƒ‡ƒ“ŠÇ—: Hibernate‚Ì Session ‚̃‰ƒCƒtƒTƒCƒNƒ‹‚ÍA - Ž©“®“I‚ÉJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃XƒR[ƒv‚ÉŒ‹‚т‚¯‚ç‚ê‚Ü‚·B‚±‚ê‚ÍA‚à‚Í‚âŽè“®‚Å - Session ‚ðƒI[ƒvƒ“‚µ‚½‚èAƒNƒ[ƒY‚µ‚½‚è‚·‚é•K—v‚ª‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B - ‚±‚ê‚ÍAJBoss EJB ƒCƒ“ƒ^[ƒZƒvƒ^‚ÌŽdŽ–‚É‚È‚è‚Ü‚·B - ‚Ü‚½AƒR[ƒh‚Ì‚Ç‚±‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðÝ’è‚·‚é‚©‚ɂ‚¢‚ÄA - ‚à‚Í‚â”Y‚Þ•K—v‚ª‚ ‚è‚Ü‚¹‚ñi‚à‚¿‚ë‚ñˆÚA‰Â”\‚ȉi‘±‘w‚ð‘‚©‚©‚È‚­‚Ä‚¢‚¢‚Ì‚È‚ç‚ÎA - ƒIƒvƒVƒ‡ƒ“‚ÌHibernate‚Ì Transaction ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢Bj - Session ‚ɃAƒNƒZƒX‚·‚邽‚ß‚É‚ÍA HibernateContext ‚ð - ƒR[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B + セッション管ç†: Hibernateã® Session ã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã¯ã€ + 自動的ã«JTAトランザクションã®ã‚¹ã‚³ãƒ¼ãƒ—ã«çµã³ã¤ã‘られã¾ã™ã€‚ã“ã‚Œã¯ã€ã‚‚ã¯ã‚„手動㧠+ Session をオープンã—ãŸã‚Šã€ã‚¯ãƒ­ãƒ¼ã‚ºã—ãŸã‚Šã™ã‚‹å¿…è¦ãŒãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ã€JBoss EJB インターセプタã®ä»•äº‹ã«ãªã‚Šã¾ã™ã€‚ + ã¾ãŸã€ã‚³ãƒ¼ãƒ‰ã®ã©ã“ã§ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’設定ã™ã‚‹ã‹ã«ã¤ã„ã¦ã€ + ã‚‚ã¯ã‚„悩む必è¦ãŒã‚ã‚Šã¾ã›ã‚“(もã¡ã‚ん移æ¤å¯èƒ½ãªæ°¸ç¶šå±¤ã‚’書ã‹ã‹ãªãã¦ã„ã„ã®ãªã‚‰ã°ã€ + オプションã®Hibernateã® Transaction を使用ã—ã¦ãã ã•ã„。) + Session ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ã¯ã€ HibernateContext ã‚’ + コールã—ã¦ãã ã•ã„。 - HAR ƒfƒvƒƒC: ’ÊíA(EAR ‚Ü‚½‚Í SAR ƒtƒ@ƒCƒ‹‚É‚ ‚éjJBoss ƒT[ƒrƒX - ƒfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚ðŽg‚Á‚ÄAHibernate JMX ƒT[ƒrƒX‚ðƒfƒvƒƒC‚µ‚Ü‚·B - ‚»‚ê‚ÍAHibernate‚Ì SessionFactory ‚Ì‘S‚Ă̈ê”Ê“I‚ÈÝ’èƒIƒvƒVƒ‡ƒ“‚ð - ƒTƒ|[ƒg‚µ‚Ü‚·B‚µ‚©‚µˆË‘R‚Æ‚µ‚ăfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Ì‚È‚©‚É‚·‚ׂẴ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ì - –¼‘O‚ð‹“‚°‚é•K—v‚ª‚ ‚è‚Ü‚·B - ‚à‚µAƒIƒvƒVƒ‡ƒ“‚ÌHARƒfƒvƒƒCƒƒ“ƒg‚ðŽg‚¤‚±‚Æ‚ðŒˆ‚ß‚½‚È‚çA - JBoss‚ÍŽ©“®“I‚ÉHARƒtƒ@ƒCƒ‹‚Ì‚È‚©‚Ì‘S‚Ẵ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðŒŸo‚µ‚Ü‚·B + HAR デプロイ: 通常ã€(EAR ã¾ãŸã¯ SAR ファイルã«ã‚る)JBoss サービス + デプロイメントディスクリプタを使ã£ã¦ã€Hibernate JMX サービスをデプロイã—ã¾ã™ã€‚ + ãã‚Œã¯ã€Hibernateã® SessionFactory ã®å…¨ã¦ã®ä¸€èˆ¬çš„ãªè¨­å®šã‚ªãƒ—ションを + サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ã—ã‹ã—ä¾ç„¶ã¨ã—ã¦ãƒ‡ãƒ—ロイメントディスクリプタã®ãªã‹ã«ã™ã¹ã¦ã®ãƒžãƒƒãƒ”ングファイル㮠+ åå‰ã‚’挙ã’ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ã‚‚ã—ã€ã‚ªãƒ—ションã®HARデプロイメントを使ã†ã“ã¨ã‚’決ã‚ãŸãªã‚‰ã€ + JBossã¯è‡ªå‹•çš„ã«HARファイルã®ãªã‹ã®å…¨ã¦ã®ãƒžãƒƒãƒ”ングファイルを検出ã—ã¾ã™ã€‚ - ‚±‚ê‚ç‚̃IƒvƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚ÌÚׂÈî•ñ‚ÍAJBossƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoƒ†[ƒUƒKƒCƒh‚ð - ŽQl‚É‚µ‚Ä‚­‚¾‚³‚¢B + ã“れらã®ã‚ªãƒ—ションã«ã¤ã„ã¦ã®è©³ç´°ãªæƒ…å ±ã¯ã€JBossアプリケーションサーãƒãƒ¦ãƒ¼ã‚¶ã‚¬ã‚¤ãƒ‰ã‚’ + å‚考ã«ã—ã¦ãã ã•ã„。 - JMXƒT[ƒrƒX‚Æ‚µ‚Ä—˜—p‰Â”\‚È‘¼‚Ì‹@”\‚ÉAHibernateŽÀsŽž“Œvî•ñ‚ª‚ ‚è‚Ü‚·B - ‚ðŒ©‚Ä‚­‚¾‚³‚¢B + JMXサービスã¨ã—ã¦åˆ©ç”¨å¯èƒ½ãªä»–ã®æ©Ÿèƒ½ã«ã€Hibernate実行時統計情報ãŒã‚ã‚Šã¾ã™ã€‚ + を見ã¦ãã ã•ã„。 - JCA ƒTƒ|[ƒg + JCA サãƒãƒ¼ãƒˆ - Hibernate ‚Í JCA ƒRƒlƒNƒ^‚Æ‚µ‚Ä‚àÝ’è‚Å‚«‚Ü‚·BÚׂɂ‚¢‚Ä‚ÍAWebƒTƒCƒg‚ðŒ©‚Ä‚­‚¾‚³‚¢B - Hibernate JCA ƒTƒ|[ƒg‚ÍA¡‚Ì‚Æ‚±‚ëŽÀŒ±’iŠK‚Æ‚µ‚Äl‚¦‚ç‚ê‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + Hibernate 㯠JCA コãƒã‚¯ã‚¿ã¨ã—ã¦ã‚‚設定ã§ãã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€Webサイトを見ã¦ãã ã•ã„。 + Hibernate JCA サãƒãƒ¼ãƒˆã¯ã€ä»Šã®ã¨ã“ã‚実験段階ã¨ã—ã¦è€ƒãˆã‚‰ã‚Œã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“ + コンテキスト上ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ - Hibernate ‚ðŽg‚Á‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA‚Ù‚Æ‚ñ‚ÇA‚È‚ñ‚ç‚©‚ÌŒ`‚Å"ƒRƒ“ƒeƒLƒXƒgã‚Ì"ƒZƒbƒVƒ‡ƒ“‚ª•K—v‚É‚È‚è‚Ü‚·B - uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ÍA“Á’è‚̃Rƒ“ƒeƒLƒXƒg‚̃XƒR[ƒv‚Ì‚È‚©‚Å—LŒø‚ȃZƒbƒVƒ‡ƒ“‚Ì‚±‚Æ‚Å‚·B - ‚µ‚©‚µA’ÊíƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚²‚ƂɃRƒ“ƒeƒLƒXƒg‚ð\¬‚·‚é‚à‚Ì‚Ì’è‹`‚͈قȂè‚Ü‚·B - ‚µ‚©‚àAˆÙ‚È‚é•¡”‚̃Rƒ“ƒeƒLƒXƒg‚ÍAŒ»Žž“_‚ɑ΂µ‚ĈقȂéƒXƒR[ƒv‚ð’è‹`‚µ‚Ü‚·B - ƒo[ƒWƒ‡ƒ“3.0‚æ‚è‘O‚Ì Hibernate ‚Å‚ÍAŽ©ì‚Ì ThreadLocal ƒx[ƒX‚ÌuƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð - —˜—p‚·‚é‚©A HibernateUtil ‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚ð—˜—p‚·‚é‚©A - proxy/interception ƒx[ƒX‚ÌuƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð’ñ‹Ÿ‚·‚é - iSpring ‚â Pico ‚̂悤‚ÈjƒT[ƒhƒp[ƒeƒB‚̃tƒŒ[ƒ€ƒ[ƒN‚ð—˜—p‚·‚é‚©‚Ì‚¢‚¸‚ê‚©‚Å‚µ‚½B + Hibernate を使ã£ãŸã‚¢ãƒ—リケーションã¯ã€ã»ã¨ã‚“ã©ã€ãªã‚“らã‹ã®å½¢ã§"コンテキスト上ã®"セッションãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + 「コンテキスト上ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã¯ã€ç‰¹å®šã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã®ã‚¹ã‚³ãƒ¼ãƒ—ã®ãªã‹ã§æœ‰åŠ¹ãªã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ã“ã¨ã§ã™ã€‚ + ã—ã‹ã—ã€é€šå¸¸ã‚¢ãƒ—リケーションã”ã¨ã«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’構æˆã™ã‚‹ã‚‚ã®ã®å®šç¾©ã¯ç•°ãªã‚Šã¾ã™ã€‚ + ã—ã‹ã‚‚ã€ç•°ãªã‚‹è¤‡æ•°ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã¯ã€ç¾æ™‚点ã«å¯¾ã—ã¦ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—を定義ã—ã¾ã™ã€‚ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³3.0よりå‰ã® Hibernate ã§ã¯ã€è‡ªä½œã® ThreadLocal ベースã®ã€Œã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆä¸Šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã‚’ + 利用ã™ã‚‹ã‹ã€ HibernateUtil ã®ã‚ˆã†ãªãƒ˜ãƒ«ãƒ‘ークラスを利用ã™ã‚‹ã‹ã€ + proxy/interception ベースã®ã€Œã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆä¸Šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã‚’æä¾›ã™ã‚‹ + (Spring ã‚„ Pico ã®ã‚ˆã†ãªï¼‰ã‚µãƒ¼ãƒ‰ãƒ‘ーティã®ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã‚’利用ã™ã‚‹ã‹ã®ã„ãšã‚Œã‹ã§ã—ãŸã€‚ - ƒo[ƒWƒ‡ƒ“ 3.0.1 ‚©‚çAHibernate ‚É‚Í SessionFactory.getCurrentSession() ‚ª - ‰Á‚í‚è‚Ü‚µ‚½B ‚±‚ê‚ÍA JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽg—p‚ð‘O’ñ‚É‚µ‚Ä‚¢‚Ü‚·B - JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÍAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚̃XƒR[ƒv‚ƃRƒ“ƒeƒLƒXƒg‚Ì—¼•û‚ð’è‹`‚µ‚Ü‚·B - Hibernate ƒ`[ƒ€‚ÍAŽŸ‚Ì‚±‚Æ‚ðŽå’£‚µ‚Ü‚·B - ‹‘å‚ȃXƒ^ƒ“ƒhƒAƒƒ“‚Ì JTA TransactionManager ŽÀ‘•‚ª¬n‚µ‚½‚çA - J2EE ƒRƒ“ƒeƒiã‚ɃfƒvƒƒC‚³‚ê‚é‚©‚Ç‚¤‚©‚É‚©‚©‚í‚炸A - ‚Ù‚Æ‚ñ‚Ç‚Ìi‚·‚ׂĂƂ͌¾‚í‚È‚¢‚ªjƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªA - JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—‚ðŽg—p‚·‚ׂ«‚Å‚ ‚é‚ÆB - ‚±‚Ìl‚¦‚ÉŠî‚­‚ÆA JTA ƒx[ƒX‚ÌuƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð - Žg‚¤‚µ‚©‚È‚¢‚Å‚µ‚傤B + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0.1 ã‹ã‚‰ã€Hibernate ã«ã¯ SessionFactory.getCurrentSession() ㌠+ 加ã‚ã‚Šã¾ã—ãŸã€‚ ã“ã‚Œã¯ã€ JTA トランザクションã®ä½¿ç”¨ã‚’å‰æã«ã—ã¦ã„ã¾ã™ã€‚ + JTA トランザクションã¯ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã®ä¸¡æ–¹ã‚’定義ã—ã¾ã™ã€‚ + Hibernate ãƒãƒ¼ãƒ ã¯ã€æ¬¡ã®ã“ã¨ã‚’主張ã—ã¾ã™ã€‚ + 巨大ãªã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ³ã® JTA TransactionManager 実装ãŒæˆç†Ÿã—ãŸã‚‰ã€ + J2EE コンテナ上ã«ãƒ‡ãƒ—ロイã•ã‚Œã‚‹ã‹ã©ã†ã‹ã«ã‹ã‹ã‚らãšã€ + ã»ã¨ã‚“ã©ã®ï¼ˆã™ã¹ã¦ã¨ã¯è¨€ã‚ãªã„ãŒï¼‰ã‚¢ãƒ—リケーションãŒã€ + JTA トランザクション管ç†ã‚’使用ã™ã¹ãã§ã‚ã‚‹ã¨ã€‚ + ã“ã®è€ƒãˆã«åŸºã¥ãã¨ã€ JTA ベースã®ã€Œã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆä¸Šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã‚’ + 使ã†ã—ã‹ãªã„ã§ã—ょã†ã€‚ - ‚µ‚©‚µAƒo[ƒWƒ‡ƒ“ 3.1 ‚©‚ç‚ÍA SessionFactory.getCurrentSession() ‚ÌŒã‚̈—‚ªA - ƒvƒ‰ƒKƒuƒ‹‚É‚È‚è‚Ü‚µ‚½B - ‚±‚ê‚ðŽó‚¯‚ÄAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ð’è‹`‚·‚éƒXƒR[ƒv‚ƃRƒ“ƒeƒLƒXƒg‚̃vƒ‰ƒKƒrƒŠƒeƒB‚ð‰Â”\‚É‚·‚邽‚ß‚ÉA - V‚µ‚¢Šg’£ƒCƒ“ƒ^ƒtƒF[ƒX ( org.hibernate.context.CurrentSessionContext ) ‚Æ - V‚µ‚¢\¬ƒpƒ‰ƒ[ƒ^ ( hibernate.current_session_context_class ) ‚ª’ljÁ‚³‚ê‚Ü‚µ‚½B + ã—ã‹ã—ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.1 ã‹ã‚‰ã¯ã€ SessionFactory.getCurrentSession() ã®å¾Œã®å‡¦ç†ãŒã€ + プラガブルã«ãªã‚Šã¾ã—ãŸã€‚ + ã“れをå—ã‘ã¦ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’定義ã™ã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã®ãƒ—ラガビリティをå¯èƒ½ã«ã™ã‚‹ãŸã‚ã«ã€ + æ–°ã—ã„拡張インタフェース ( org.hibernate.context.CurrentSessionContext ) 㨠+ æ–°ã—ã„構æˆãƒ‘ラメータ ( hibernate.current_session_context_class ) ãŒè¿½åŠ ã•ã‚Œã¾ã—ãŸã€‚ - org.hibernate.context.CurrentSessionContext ƒCƒ“ƒ^ƒtƒF[ƒX‚Ì‹K–ñ‚ɂ‚¢‚Ä‚Ì - Úׂȓà—e‚Í Javadoc ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚ê‚É‚ÍA currentSession() ‚Æ‚¢‚¤1‚‚̃ƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ä‚¨‚èA - ‚»‚ÌŽÀ‘•‚ÍAŒ»Ý‚ÌuƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð’ÇÕ‚·‚邱‚Æ‚ÉÓ”C‚ðŽ‚¿‚Ü‚·B - ‚»‚Ì‚Ü‚ÜŽg‚¦‚é‚悤‚ÉAHibernate‚Í‚±‚̃Cƒ“ƒ^ƒtƒF[ƒX‚ÌŽÀ‘•‚ð2‚Â’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B + org.hibernate.context.CurrentSessionContext インタフェースã®è¦ç´„ã«ã¤ã„ã¦ã® + 詳細ãªå†…容㯠Javadoc ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + ãã‚Œã«ã¯ã€ currentSession() ã¨ã„ã†1ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®šç¾©ã•ã‚Œã¦ãŠã‚Šã€ + ãã®å®Ÿè£…ã¯ã€ç¾åœ¨ã®ã€Œã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆä¸Šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã‚’追跡ã™ã‚‹ã“ã¨ã«è²¬ä»»ã‚’æŒã¡ã¾ã™ã€‚ + ãã®ã¾ã¾ä½¿ãˆã‚‹ã‚ˆã†ã«ã€Hibernateã¯ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã®å®Ÿè£…ã‚’2ã¤æä¾›ã—ã¦ã„ã¾ã™ã€‚ org.hibernate.context.JTASessionContext - - JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚æ‚Á‚ÄAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ÇÕ‚³‚êA - ƒXƒR[ƒv‚ðŒˆ‚ß‚ç‚ê‚Ü‚·B‚±‚̈—‚ÍAŒÃ‚¢JTA‚¾‚¯‚̃Aƒvƒ[ƒ`‚Æ‚Ü‚Á‚½‚­“¯‚¶‚Å‚·B - ÚׂÍJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + JTA トランザクションã«ã‚ˆã£ã¦ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒè¿½è·¡ã•ã‚Œã€ + スコープを決ã‚られã¾ã™ã€‚ã“ã®å‡¦ç†ã¯ã€å¤ã„JTAã ã‘ã®ã‚¢ãƒ—ローãƒã¨ã¾ã£ãŸãåŒã˜ã§ã™ã€‚ + 詳細ã¯Javadocã‚’å‚ç…§ã—ã¦ãã ã•ã„。 org.hibernate.context.ThreadLocalSessionContext - - ƒXƒŒƒbƒh‚ÌŽÀs‚É‚æ‚Á‚ÄAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ÇÕ‚³‚ê‚Ü‚·B - ÚׂÍJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + スレッドã®å®Ÿè¡Œã«ã‚ˆã£ã¦ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒè¿½è·¡ã•ã‚Œã¾ã™ã€‚ + 詳細ã¯Javadocã‚’å‚ç…§ã—ã¦ãã ã•ã„。 org.hibernate.context.ManagedSessionContext - - ƒXƒŒƒbƒh‚ÌŽÀs‚É‚æ‚Á‚ÄAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ÇÕ‚³‚ê‚Ü‚·B - ‚µ‚©‚µA‚±‚̃Nƒ‰ƒX‚Ìstaticƒƒ\ƒbƒh‚Å Session ƒCƒ“ƒXƒ^ƒ“ƒX‚ð - ƒoƒCƒ“ƒh/ƒAƒ“ƒoƒCƒ“ƒh‚·‚éÓ”C‚Í‚ ‚È‚½‚É‚ ‚è‚Ü‚·B - ‚±‚ê‚ÍŒˆ‚µ‚Ä Session ‚ðƒI[ƒvƒ“Aƒtƒ‰ƒbƒVƒ…AƒNƒ[ƒY‚µ‚Ü‚¹‚ñB + スレッドã®å®Ÿè¡Œã«ã‚ˆã£ã¦ã€ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒè¿½è·¡ã•ã‚Œã¾ã™ã€‚ + ã—ã‹ã—ã€ã“ã®ã‚¯ãƒ©ã‚¹ã®staticメソッド㧠Session インスタンスを + ãƒã‚¤ãƒ³ãƒ‰/アンãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹è²¬ä»»ã¯ã‚ãªãŸã«ã‚ã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯æ±ºã—㦠Session をオープンã€ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã€ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã›ã‚“。 - Žn‚ß‚Ì2‚‚̎À‘•‚ÍA"1ƒZƒbƒVƒ‡ƒ“ - 1ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“" ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ‚±‚ê‚Í ƒŠƒNƒGƒXƒg‚²‚Ƃ̃ZƒbƒVƒ‡ƒ“isession-per-requestj ‚Æ‚µ‚Ä‚à’m‚ç‚ê‚Ä‚¨‚èAŽg‚í‚ê‚Ä‚¢‚Ü‚·B - Hibernate ƒZƒbƒVƒ‡ƒ“‚ÌŠJŽn‚ÆI—¹‚ÍAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠúŠÔ‚ÅŒˆ‚Ü‚è‚Ü‚·B - JTA‚ðŽg‚í‚È‚¢•’Ê‚ÌJSE‚ÅAƒvƒƒOƒ‰ƒ€ã‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠEÝ’è‚ðs‚¤‚È‚çA - ƒR[ƒh‚©‚çŠî‘b‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒVƒXƒeƒ€‚ð‰B•Á‚·‚邽‚ß‚ÉA - Hibernate Transaction API‚ðŽg‚¤‚Æ‚æ‚¢‚Å‚µ‚傤B - JTA‚ðŽg‚¤‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‹«ŠEÝ’è‚É‚ÍAJTAƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - CMT‚ðƒTƒ|[ƒg‚·‚éEJBƒRƒ“ƒeƒi‚ÅŽÀs‚·‚é‚‚à‚è‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Í錾“I‚É’è‹`‚Å‚«‚邽‚ßA - ƒR[ƒhã‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚âƒZƒbƒVƒ‡ƒ“‚Ì‹«ŠE‚ðÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ‚³‚ç‚ÉÚׂÈî•ñ‚âƒR[ƒh‚Ì—á‚ÍA ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 始ã‚ã®2ã¤ã®å®Ÿè£…ã¯ã€"1セッション - 1データベーストランザクション" プログラミングモデルをæä¾›ã—ã¾ã™ã€‚ + ã“れ㯠リクエストã”ã¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ï¼ˆsession-per-request) ã¨ã—ã¦ã‚‚知られã¦ãŠã‚Šã€ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ + Hibernate セッションã®é–‹å§‹ã¨çµ‚了ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æœŸé–“ã§æ±ºã¾ã‚Šã¾ã™ã€‚ + JTAを使ã‚ãªã„普通ã®JSEã§ã€ãƒ—ログラム上ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œè¨­å®šã‚’è¡Œã†ãªã‚‰ã€ + コードã‹ã‚‰åŸºç¤Žã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚·ã‚¹ãƒ†ãƒ ã‚’隠蔽ã™ã‚‹ãŸã‚ã«ã€ + Hibernate Transaction APIを使ã†ã¨ã‚ˆã„ã§ã—ょã†ã€‚ + JTAを使ã†ãªã‚‰ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å¢ƒç•Œè¨­å®šã«ã¯ã€JTAインターフェイスを使ã£ã¦ãã ã•ã„。 + CMTをサãƒãƒ¼ãƒˆã™ã‚‹EJBコンテナã§å®Ÿè¡Œã™ã‚‹ã¤ã‚‚ã‚Šãªã‚‰ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã¯å®£è¨€çš„ã«å®šç¾©ã§ãã‚‹ãŸã‚〠+ コード上ã§ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚„セッションã®å¢ƒç•Œã‚’設定ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã•ã‚‰ã«è©³ç´°ãªæƒ…報やコードã®ä¾‹ã¯ã€ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - hibernate.current_session_context_class Ý’èƒpƒ‰ƒ[ƒ^‚ÍA - org.hibernate.context.CurrentSessionContext ‚Ì‚Ç‚ÌŽÀ‘•‚ðŽg‚¤‚©‚ðŽw’肵‚Ü‚·B - ‰ºˆÊŒÝŠ·«‚Ì‚½‚ßA‚±‚̃pƒ‰ƒ[ƒ^‚ªÝ’肳‚ꂸ - org.hibernate.transaction.TransactionManagerLookup ‚ªÝ’肳‚ê‚Ä‚¢‚½ê‡A - Hibernate‚Í org.hibernate.context.JTASessionContext ‚ðŽg‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ’Ê킱‚̃pƒ‰ƒ[ƒ^‚Ì’l‚É‚ÍA3‚‚̎À‘•‚Ì’†‚©‚çŽg—p‚·‚éŽÀ‘•ƒNƒ‰ƒX‚Ì–¼‘O‚ð’¼ÚŽw’肵‚Ü‚·B - ‚µ‚©‚µA"jta", "thread", "managed"‚Æ‚¢‚¤‚»‚ꂼ‚ê‚ÌÈ—ª–¼‚à—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B + hibernate.current_session_context_class 設定パラメータã¯ã€ + org.hibernate.context.CurrentSessionContext ã®ã©ã®å®Ÿè£…を使ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 下ä½äº’æ›æ€§ã®ãŸã‚ã€ã“ã®ãƒ‘ラメータãŒè¨­å®šã•ã‚Œãš + org.hibernate.transaction.TransactionManagerLookup ãŒè¨­å®šã•ã‚Œã¦ã„ãŸå ´åˆã€ + Hibernate㯠org.hibernate.context.JTASessionContext を使ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + 通常ã“ã®ãƒ‘ラメータã®å€¤ã«ã¯ã€3ã¤ã®å®Ÿè£…ã®ä¸­ã‹ã‚‰ä½¿ç”¨ã™ã‚‹å®Ÿè£…クラスã®åå‰ã‚’直接指定ã—ã¾ã™ã€‚ + ã—ã‹ã—ã€"jta", "thread", "managed"ã¨ã„ã†ãã‚Œãžã‚Œã®çœç•¥åも用æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml b/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml index d1754210a7..e333b9cd4b 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml @@ -1,39 +1,41 @@ - + + + - ŠÖ˜Aƒ}ƒbƒsƒ“ƒO + 関連マッピング - ƒCƒ“ƒgƒƒ_ƒNƒVƒ‡ƒ“ + イントロダクション - ŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚Í‚µ‚΂µ‚Η‰ð‚ªÅ‚à“‚¢‚à‚Ì‚É‚È‚è‚Ü‚·B - ‚±‚ÌÍ‚Å‚ÍAŠî–{“I‚Ȉꂈꂂ̃P[ƒX‚ɂ‚¢‚Äq‚ׂ܂·B - ’P•ûŒü‚̃}ƒbƒsƒ“ƒO‚©‚çŽn‚ßA‚»‚ê‚©‚ç‘o•ûŒü‚̃P[ƒX‚ɂ‚¢‚Äl‚¦‚Ä‚¢‚«‚Ü‚·B - —á‚Æ‚µ‚ÄAPerson ‚Æ Address ‚ð—p‚¢‚Ü‚·B + 関連マッピングã¯ã—ã°ã—ã°ç†è§£ãŒæœ€ã‚‚難ã—ã„ã‚‚ã®ã«ãªã‚Šã¾ã™ã€‚ + ã“ã®ç« ã§ã¯ã€åŸºæœ¬çš„ãªä¸€ã¤ä¸€ã¤ã®ã‚±ãƒ¼ã‚¹ã«ã¤ã„ã¦è¿°ã¹ã¾ã™ã€‚ + å˜æ–¹å‘ã®ãƒžãƒƒãƒ”ングã‹ã‚‰å§‹ã‚ã€ãã‚Œã‹ã‚‰åŒæ–¹å‘ã®ã‚±ãƒ¼ã‚¹ã«ã¤ã„ã¦è€ƒãˆã¦ã„ãã¾ã™ã€‚ + 例ã¨ã—ã¦ã€Person 㨠Address を用ã„ã¾ã™ã€‚ - ŠÖ˜A‚ÍAŒ‹‡ƒe[ƒuƒ‹‚ð“ü‚ê‚é‚©‚©‚Ç‚¤‚©‚ÆA - ‘½d“x‚É‚æ‚Á‚Ä•ª—Þ‚·‚邱‚Æ‚É‚µ‚Ü‚·B + 関連ã¯ã€çµåˆãƒ†ãƒ¼ãƒ–ルを入れるã‹ã‹ã©ã†ã‹ã¨ã€ + 多é‡åº¦ã«ã‚ˆã£ã¦åˆ†é¡žã™ã‚‹ã“ã¨ã«ã—ã¾ã™ã€‚ - ‚·‚ׂĂ̗á‚Ånot null‚ÌŠO•”ƒL[‚ðŽg—p‚µ‚Ü‚·B - ‚±‚ê‚ÍHibernate‚Ì—vŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - not null§–ñ‚ðŠO‚µ‚½‚Æ‚µ‚Ä‚àAƒ}ƒbƒsƒ“ƒO‚Í–â‘è‚È‚­“®ì‚µ‚Ü‚·B + ã™ã¹ã¦ã®ä¾‹ã§not nullã®å¤–部キーを使用ã—ã¾ã™ã€‚ + ã“ã‚Œã¯Hibernateã®è¦ä»¶ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + not null制約を外ã—ãŸã¨ã—ã¦ã‚‚ã€ãƒžãƒƒãƒ”ングã¯å•é¡Œãªã動作ã—ã¾ã™ã€‚ - ’P•ûŒüŠÖ˜A + å˜æ–¹å‘関連 - ‘½‘Έê + 多対一 - ’P•ûŒü‘½‘ΈêŠÖ˜A ‚Í’P•ûŒüŠÖ˜A‚Ì’†‚ÅÅ‚àˆê”Ê“I‚È‚à‚Ì‚Å‚·B + å˜æ–¹å‘多対一関連 ã¯å˜æ–¹å‘関連ã®ä¸­ã§æœ€ã‚‚一般的ãªã‚‚ã®ã§ã™ã€‚ @@ -58,11 +60,11 @@ create table Address ( addressId bigint not null primary key ) - ˆê‘Έê + 一対一 - ŠO•”ƒL[‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A ‚Í‚Ù‚Æ‚ñ‚Ç“¯‚¶‚à‚Ì‚Å‚·B - —Bˆêˆá‚¤‚Ì‚ÍAƒJƒ‰ƒ€‚̃†ƒj[ƒN‚ȧ–ñ‚Å‚·B + 外部キーã®å˜æ–¹å‘一対一関連 ã¯ã»ã¨ã‚“ã©åŒã˜ã‚‚ã®ã§ã™ã€‚ + 唯一é•ã†ã®ã¯ã€ã‚«ãƒ©ãƒ ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªåˆ¶ç´„ã§ã™ã€‚ @@ -86,8 +88,8 @@ create table Address ( addressId bigint not null primary key ) ]]> - ŽåƒL[‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A ‚Í’ÊíA“Á•Ê‚ÈIDƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¢‚Ü‚·B - i‚±‚Ì—á‚Å‚ÍŠÖ˜A‚Ì•ûŒü‚ª‹t‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢j + 主キーã®å˜æ–¹å‘一対一関連 ã¯é€šå¸¸ã€ç‰¹åˆ¥ãªIDジェãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã„ã¾ã™ã€‚ + (ã“ã®ä¾‹ã§ã¯é–¢é€£ã®æ–¹å‘ãŒé€†ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„) @@ -112,11 +114,11 @@ create table Address ( personId bigint not null primary key ) - ˆê‘Α½ + 一対多 - ŠO•”ƒL[‚Ì’P•ûŒüˆê‘Α½ŠÖ˜A ‚Í‚Æ‚Ä‚à“ÁŽê‚ȃP[ƒX‚ÅA - ‚ ‚܂脧‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB + 外部キーã®å˜æ–¹å‘一対多関連 ã¯ã¨ã¦ã‚‚特殊ãªã‚±ãƒ¼ã‚¹ã§ã€ + ã‚ã¾ã‚ŠæŽ¨å¥¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。 @@ -141,7 +143,7 @@ create table Address ( addressId bigint not null primary key, personId bigint no ]]> - ‚±‚̂悤‚ÈŠÖ˜A‚Ì‚½‚ß‚ÉŒ‹‡ƒe[ƒuƒ‹‚ðŽg‚¤‚±‚Æ‚ð‚¨‘E‚ß‚µ‚Ü‚·B + ã“ã®ã‚ˆã†ãªé–¢é€£ã®ãŸã‚ã«çµåˆãƒ†ãƒ¼ãƒ–ルを使ã†ã“ã¨ã‚’ãŠè–¦ã‚ã—ã¾ã™ã€‚ @@ -149,16 +151,16 @@ create table Address ( addressId bigint not null primary key, personId bigint no - Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½’P•ûŒüŠÖ˜A + çµåˆãƒ†ãƒ¼ãƒ–ルを使ã£ãŸå˜æ–¹å‘関連 - ˆê‘Α½ + 一対多 - Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½’P•ûŒüˆê‘Α½ŠÖ˜A - ‚Í‚æ‚èD‚Ü‚µ‚¢‚Å‚·B - unique="true" ‚ÌŽw’è‚É‚æ‚èA‘½d“x‚ª‘½‘Α½‚©‚çˆê‘Α½ - ‚É•Ï‚í‚Á‚½‚±‚Æ‚É’ˆÓ‚µ‚ĉº‚³‚¢B + çµåˆãƒ†ãƒ¼ãƒ–ルを使ã£ãŸå˜æ–¹å‘一対多関連 + ã¯ã‚ˆã‚Šå¥½ã¾ã—ã„ã§ã™ã€‚ + unique="true" ã®æŒ‡å®šã«ã‚ˆã‚Šã€å¤šé‡åº¦ãŒå¤šå¯¾å¤šã‹ã‚‰ä¸€å¯¾å¤š + ã«å¤‰ã‚ã£ãŸã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。 @@ -187,11 +189,11 @@ create table Address ( addressId bigint not null primary key ) - ‘½‘Έê + 多対一 - Œ‹‡ƒe[ƒuƒ‹‚Ì’P•ûŒü‘½‘ΈêŠÖ˜A ‚Í - ŠÖ˜A‚ª”CˆÓ‚Å‚ ‚é‚Æ‚«‚É”ñí‚Ɉê”Ê“I‚È‚à‚Ì‚Å‚·B + çµåˆãƒ†ãƒ¼ãƒ–ルã®å˜æ–¹å‘多対一関連 㯠+ 関連ãŒä»»æ„ã§ã‚ã‚‹ã¨ãã«éžå¸¸ã«ä¸€èˆ¬çš„ãªã‚‚ã®ã§ã™ã€‚ @@ -221,11 +223,11 @@ create table Address ( addressId bigint not null primary key ) - ˆê‘Έê + 一対一 - Œ‹‡ƒe[ƒuƒ‹‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A ‚ÍA–{“–‚É“ÁŽê‚Å‚·‚ª - •s‰Â”\‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + çµåˆãƒ†ãƒ¼ãƒ–ルã®å˜æ–¹å‘一対一関連 ã¯ã€æœ¬å½“ã«ç‰¹æ®Šã§ã™ãŒ + ä¸å¯èƒ½ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 @@ -257,10 +259,10 @@ create table Address ( addressId bigint not null primary key ) - ‘½‘Α½ + 多対多 - ÅŒã‚ÉA’P•ûŒü‘½‘Α½ŠÖ˜A ‚ðŽ¦‚µ‚Ü‚·B + 最後ã«ã€å˜æ–¹å‘多対多関連 を示ã—ã¾ã™ã€‚ @@ -290,14 +292,14 @@ create table Address ( addressId bigint not null primary key ) - ‘o•ûŒüŠÖ˜A + åŒæ–¹å‘関連 - ˆê‘Α½/‘½‘Έê + 一対多/多対一 - ‘o•ûŒü‘½‘ΈêŠÖ˜A ‚ÍÅ‚àˆê”Ê“I‚ÈŠÖ˜A‚Å‚·B - i•W€“I‚ÈeŽqŠÖŒW‚Å‚·j + åŒæ–¹å‘多対一関連 ã¯æœ€ã‚‚一般的ãªé–¢é€£ã§ã™ã€‚ + (標準的ãªè¦ªå­é–¢ä¿‚ã§ã™ï¼‰ @@ -325,12 +327,12 @@ create table Address ( addressId bigint not null primary key ) ]]> - List i‚Ü‚½‚Í‘¼‚̃Cƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“j‚ðŽg‚¤‚È‚çA - ŠO•”ƒL[‚Ì key ƒJƒ‰ƒ€‚ð not null ‚Éݒ肵A - ƒRƒŒƒNƒVƒ‡ƒ“‘¤‚ªŠe—v‘f‚̃Cƒ“ƒfƒbƒNƒX‚ðƒƒ“ƒeƒiƒ“ƒX‚·‚é‚悤‚ÉA - ŠÖ˜A‚ðˆµ‚¤•K—v‚ª‚ ‚è‚Ü‚· - iupdate="false" ‚©‚ insert="false" - ‚Æݒ肵‚ÄA”½‘Α¤‚ð‰¼‘z“I‚Éinverse‚É‚µ‚Ü‚·jF + List (ã¾ãŸã¯ä»–ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼‰ã‚’使ã†ãªã‚‰ã€ + 外部キー㮠key カラムを not null ã«è¨­å®šã—〠+ コレクションå´ãŒå„è¦ç´ ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’メンテナンスã™ã‚‹ã‚ˆã†ã«ã€ + 関連を扱ã†å¿…è¦ãŒã‚ã‚Šã¾ã™ + (update="false" ã‹ã¤ insert="false" + ã¨è¨­å®šã—ã¦ã€å対å´ã‚’仮想的ã«inverseã«ã—ã¾ã™ï¼‰ï¼š @@ -354,21 +356,21 @@ create table Address ( addressId bigint not null primary key ) ]]> - ‚à‚µŠO•”ƒL[ƒJƒ‰ƒ€‚ª NOT NULL ‚Å‚ ‚é‚È‚ç‚ÎA - ƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚Ì <key> —v‘f‚ð - not-null="true" ‚É‚·‚邱‚Æ‚Íd—v‚Å‚·B - “ü‚êŽq‚É‚È‚Á‚½ <column> —v‘f‚¾‚¯‚Å‚Í‚È‚­A - <key> —v‘f‚à not-null="true" - ‚Æ’è‹`‚µ‚È‚¢‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B + ã‚‚ã—外部キーカラム㌠NOT NULL ã§ã‚ã‚‹ãªã‚‰ã°ã€ + コレクションマッピング㮠<key> è¦ç´ ã‚’ + not-null="true" ã«ã™ã‚‹ã“ã¨ã¯é‡è¦ã§ã™ã€‚ + 入れå­ã«ãªã£ãŸ <column> è¦ç´ ã ã‘ã§ã¯ãªã〠+ <key> è¦ç´ ã‚‚ not-null="true" + ã¨å®šç¾©ã—ãªã„よã†ã«ã—ã¦ãã ã•ã„。 - ˆê‘Έê + 一対一 - ŠO•”ƒL[‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A ‚Í”ñí‚Ɉê”Ê“I‚Å‚·B + 外部キーã®åŒæ–¹å‘一対一関連 ã¯éžå¸¸ã«ä¸€èˆ¬çš„ã§ã™ã€‚ @@ -394,7 +396,7 @@ create table Address ( addressId bigint not null primary key ) ]]> - ŽåƒL[‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A ‚Í“ÁŽê‚ÈIDƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¢‚Ü‚·B + 主キーã®åŒæ–¹å‘一対一関連 ã¯ç‰¹æ®ŠãªIDジェãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã„ã¾ã™ã€‚ @@ -423,15 +425,15 @@ create table Address ( personId bigint not null primary key ) - Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½‘o•ûŒüŠÖ˜A + çµåˆãƒ†ãƒ¼ãƒ–ルを使ã£ãŸåŒæ–¹å‘関連 - ˆê‘Α½/‘½‘Έê + 一対多/多対一 - Œ‹‡ƒe[ƒuƒ‹‚Ì‘o•ûŒüˆê‘Α½ŠÖ˜A ‚Å‚·B - inverse="true" ‚ªŠÖ˜A’[AƒRƒŒƒNƒVƒ‡ƒ“AŒ‹‡‚Ì‚¢‚¸‚ê‚©‚É - Ý’è‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + çµåˆãƒ†ãƒ¼ãƒ–ルã®åŒæ–¹å‘一対多関連 ã§ã™ã€‚ + inverse="true" ãŒé–¢é€£ç«¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€çµåˆã®ã„ãšã‚Œã‹ã« + 設定ã§ãã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 @@ -469,11 +471,11 @@ create table Address ( addressId bigint not null primary key ) - ˆê‘Έê + 一対一 - Œ‹‡ƒe[ƒuƒ‹‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A - ‚Í”ñí‚É“ÁŽê‚Å‚·‚ªA‰Â”\‚Å‚·B + çµåˆãƒ†ãƒ¼ãƒ–ルã®åŒæ–¹å‘一対一関連 + ã¯éžå¸¸ã«ç‰¹æ®Šã§ã™ãŒã€å¯èƒ½ã§ã™ã€‚ @@ -515,10 +517,10 @@ create table Address ( addressId bigint not null primary key ) - ‘½‘Α½ + 多対多 - ÅŒã‚ÉA‘o•ûŒü‘½‘Α½ŠÖ˜A ‚ðŽ¦‚µ‚Ü‚·B + 最後ã«ã€åŒæ–¹å‘多対多関連 を示ã—ã¾ã™ã€‚ @@ -554,15 +556,15 @@ create table Address ( addressId bigint not null primary key ) - ‚æ‚è•¡ŽG‚ÈŠÖ˜Aƒ}ƒbƒsƒ“ƒO + より複雑ãªé–¢é€£ãƒžãƒƒãƒ”ング - ‚æ‚è•¡ŽG‚ÈŠÖ˜AŒ‹‡‚Í ‹É‚ß‚Ä ‹H‚Å‚·B - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ÉSQL•¶‚ð–„‚ßž‚Þ‚±‚Æ‚ÅA - ‚³‚ç‚É•¡ŽG‚Èó‹µ‚ðˆµ‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - —Ⴆ‚ÎAaccountNumber, effectiveEndDate, - effectiveStartDate ƒJƒ‰ƒ€‚ðŽ‚ÂaccountiŒûÀjî•ñ‚Ì—š—ð‚ðˆµ‚¤ƒe[ƒuƒ‹‚ÍA - ˆÈ‰º‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B + より複雑ãªé–¢é€£çµåˆã¯ 極ã‚㦠稀ã§ã™ã€‚ + マッピングドキュメントã«SQL文を埋ã‚込むã“ã¨ã§ã€ + ã•ã‚‰ã«è¤‡é›‘ãªçŠ¶æ³ã‚’扱ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + 例ãˆã°ã€accountNumber, effectiveEndDate, + effectiveStartDate カラムをæŒã¤account(å£åº§ï¼‰æƒ…å ±ã®å±¥æ­´ã‚’扱ã†ãƒ†ãƒ¼ãƒ–ルã¯ã€ + 以下ã®ã‚ˆã†ã«ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ @@ -575,9 +577,9 @@ create table Address ( addressId bigint not null primary key ) ]]> - ‚»‚µ‚ÄAŠÖ˜A‚𠌻Žž“_‚Ì ƒCƒ“ƒXƒ^ƒ“ƒX - ieffectiveEndDate ‚ªnull‚Å‚ ‚é‚à‚Ìj‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - ˆÈ‰º‚̂悤‚É‚È‚è‚Ü‚·F + ãã—ã¦ã€é–¢é€£ã‚’ ç¾æ™‚点㮠インスタンス + (effectiveEndDate ãŒnullã§ã‚ã‚‹ã‚‚ã®ï¼‰ã«ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + 以下ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼š ]]> - ‚³‚ç‚É•¡ŽG‚È—á‚Å‚ÍAEmployeei]‹Æˆõj ‚Æ Organizationi‘gDj - ŠÔ‚ÌŠÖ˜A‚ª EmploymentiŒÙ—pj ƒe[ƒuƒ‹‚Å•ÛŽ‚³‚ê‚éꇂð‘z‘œ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚̃e[ƒuƒ‹‚ɂ͌ٗpƒf[ƒ^‚Ì—š—ð‚ª‚·‚ׂĊ܂܂ê‚Ü‚·B - ‚·‚é‚Æ]‹Æˆõ‚Ì Å‚àÅ‹ß‚Ì ŒÙ—pŽÒ‚ð•\‚·ŠÖ˜A - iÅ‚àÅ‹ß‚Ì startDate ‚ðŽ‚‚à‚Ìj‚ÍA‚±‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·F + ã•ã‚‰ã«è¤‡é›‘ãªä¾‹ã§ã¯ã€Employee(従業員) 㨠Organization(組織) + é–“ã®é–¢é€£ãŒ Employment(雇用) テーブルã§ä¿æŒã•ã‚Œã‚‹å ´åˆã‚’想åƒã—ã¦ãã ã•ã„。 + ã“ã®ãƒ†ãƒ¼ãƒ–ルã«ã¯é›‡ç”¨ãƒ‡ãƒ¼ã‚¿ã®å±¥æ­´ãŒã™ã¹ã¦å«ã¾ã‚Œã¾ã™ã€‚ + ã™ã‚‹ã¨å¾“業員㮠最も最近㮠雇用者を表ã™é–¢é€£ + (最も最近㮠startDate ã‚’æŒã¤ã‚‚ã®ï¼‰ã¯ã€ã“ã®ã‚ˆã†ã«ãƒžãƒƒãƒ”ングã§ãã¾ã™ï¼š @@ -609,8 +611,8 @@ create table Address ( addressId bigint not null primary key ) ]]> - ‚±‚Ì‹@”\‚Í”ñí‚É‹­—Í‚Å‚·B - ‚µ‚©‚µ‚±‚̂悤‚Èê‡A•’Ê‚ÍHQL‚âcriteriaƒNƒGƒŠ‚ðŽg‚¤•û‚ª‚æ‚èŽÀ‘H“I‚Å‚·B + ã“ã®æ©Ÿèƒ½ã¯éžå¸¸ã«å¼·åŠ›ã§ã™ã€‚ + ã—ã‹ã—ã“ã®ã‚ˆã†ãªå ´åˆã€æ™®é€šã¯HQLã‚„criteriaクエリを使ã†æ–¹ãŒã‚ˆã‚Šå®Ÿè·µçš„ã§ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml b/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml index 00894a3e0a..d85da12a02 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml @@ -1,25 +1,26 @@ - + + - Šî–{“I‚ÈO/Rƒ}ƒbƒsƒ“ƒO + 基本的ãªO/Rマッピング - ƒ}ƒbƒsƒ“ƒO’è‹` + マッピング定義 - ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚Í’ÊíXMLƒhƒLƒ…ƒƒ“ƒg‚Å’è‹`‚µ‚Ü‚·B - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ÍA“Ç‚Ý‚â‚·‚­Žèì‹Æ‚Å•ÒW‚µ‚â‚·‚¢‚悤‚ɃfƒUƒCƒ“‚³‚ê‚Ä‚¢‚Ü‚·B - ƒ}ƒbƒsƒ“ƒOŒ¾Œê‚ÍJava’†SA‚‚܂èƒe[ƒuƒ‹’è‹`‚Å‚Í‚È‚­‰i‘±ƒNƒ‰ƒX‚Ì’è‹`‚ÉŠî‚¢‚Ä\’z‚³‚ê‚Ä‚¢‚Ü‚·B + オブジェクト/リレーショナルマッピングã¯é€šå¸¸XMLドキュメントã§å®šç¾©ã—ã¾ã™ã€‚ + マッピングドキュメントã¯ã€èª­ã¿ã‚„ã™ã手作業ã§ç·¨é›†ã—ã‚„ã™ã„よã†ã«ãƒ‡ã‚¶ã‚¤ãƒ³ã•ã‚Œã¦ã„ã¾ã™ã€‚ + マッピング言語ã¯Java中心ã€ã¤ã¾ã‚Šãƒ†ãƒ¼ãƒ–ル定義ã§ã¯ãªã永続クラスã®å®šç¾©ã«åŸºã¥ã„ã¦æ§‹ç¯‰ã•ã‚Œã¦ã„ã¾ã™ã€‚ - ‘½‚­‚ÌHibernateƒ†[ƒU‚ÍXMLƒ}ƒbƒsƒ“ƒO‚Ì‹Lq‚ðŽèì‹Æ‚Ås‚¢‚Ü‚·‚ªA - XDoclet, Middlegen, AndroMDA‚Æ‚¢‚¤‚悤‚ȃ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚𶬂·‚éƒc[ƒ‹‚ª - ‚¢‚­‚‚©‘¶Ý‚µ‚Ü‚·B + 多ãã®Hibernateユーザã¯XMLマッピングã®è¨˜è¿°ã‚’手作業ã§è¡Œã„ã¾ã™ãŒã€ + XDoclet, Middlegen, AndroMDAã¨ã„ã†ã‚ˆã†ãªãƒžãƒƒãƒ”ングドキュメントを生æˆã™ã‚‹ãƒ„ール㌠+ ã„ãã¤ã‹å­˜åœ¨ã—ã¾ã™ã€‚ - ƒTƒ“ƒvƒ‹‚̃}ƒbƒsƒ“ƒO‚©‚çŽn‚ß‚Ü‚µ‚傤F + サンプルã®ãƒžãƒƒãƒ”ングã‹ã‚‰å§‹ã‚ã¾ã—ょã†ï¼š @@ -82,16 +83,16 @@ - + ]]> - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ì“à—e‚ðà–¾‚µ‚Ü‚·BB - ‚½‚¾‚µA‚±‚±‚Å‚ÍHibernate‚ªŽÀsŽž‚ÉŽg‚¤ƒhƒLƒ…ƒƒ“ƒg—v‘f‚Æ‘®«‚ɂ‚¢‚Ä‚Ì‚Ýà–¾‚µ‚Ü‚·B - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ÍA‚¢‚­‚‚©‚̃IƒvƒVƒ‡ƒ“‘®«‚Æ—v‘f‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·i—Ⴆ‚Î not-null ‘®«jB - ‚»‚ê‚ç‚̓XƒL[ƒ}ƒGƒNƒXƒ|[ƒgƒc[ƒ‹‚ªo—Í‚·‚éƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ɉe‹¿‚ð—^‚¦‚é‚à‚Ì‚Å‚·B + マッピングドキュメントã®å†…容を説明ã—ã¾ã™ã€‚。 + ãŸã ã—ã€ã“ã“ã§ã¯HibernateãŒå®Ÿè¡Œæ™‚ã«ä½¿ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆè¦ç´ ã¨å±žæ€§ã«ã¤ã„ã¦ã®ã¿èª¬æ˜Žã—ã¾ã™ã€‚ + マッピングドキュメントã¯ã€ã„ãã¤ã‹ã®ã‚ªãƒ—ション属性ã¨è¦ç´ ã‚’å«ã‚“ã§ã„ã¾ã™ï¼ˆä¾‹ãˆã° not-null 属性)。 + ãれらã¯ã‚¹ã‚­ãƒ¼ãƒžã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ„ールãŒå‡ºåŠ›ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã«å½±éŸ¿ã‚’与ãˆã‚‹ã‚‚ã®ã§ã™ã€‚ @@ -101,51 +102,51 @@ Doctype - XMLƒ}ƒbƒsƒ“ƒO‚Å‚ÍA‚¨Œ©‚¹‚µ‚½‚悤‚ȃhƒLƒ…ƒƒ“ƒgŒ^‚ð•K‚¸’è‹`‚·‚ׂ«‚Å‚·B - ŽÀÛ‚ÌDTD‚ÍAã‹L‚ÌURL‚Ì hibernate-x.x.x/src/org/hibernate ƒfƒBƒŒƒNƒgƒŠA ‚Ü‚½‚Í - hibernate.jar “à‚É‚ ‚è‚Ü‚·B - Hibernate‚Íí‚ÉA‚»‚̃Nƒ‰ƒXƒpƒX“à‚ÅDTD‚ð’T‚µŽn‚ß‚Ü‚·B - ƒCƒ“ƒ^[ƒlƒbƒg‚É‚ ‚éDTDƒtƒ@ƒCƒ‹‚ð’T‚»‚¤‚Æ‚µ‚½‚È‚çA - ƒNƒ‰ƒXƒpƒX‚Ì“à—e‚ðŒ©‚ÄADTD錾‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B + XMLマッピングã§ã¯ã€ãŠè¦‹ã›ã—ãŸã‚ˆã†ãªãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆåž‹ã‚’å¿…ãšå®šç¾©ã™ã¹ãã§ã™ã€‚ + 実際ã®DTDã¯ã€ä¸Šè¨˜ã®URLã® hibernate-x.x.x/src/org/hibernate ディレクトリ〠ã¾ãŸã¯ + hibernate.jar 内ã«ã‚ã‚Šã¾ã™ã€‚ + Hibernateã¯å¸¸ã«ã€ãã®ã‚¯ãƒ©ã‚¹ãƒ‘ス内ã§DTDを探ã—始ã‚ã¾ã™ã€‚ + インターãƒãƒƒãƒˆã«ã‚ã‚‹DTDファイルを探ãã†ã¨ã—ãŸãªã‚‰ã€ + クラスパスã®å†…容を見ã¦ã€DTD宣言を確èªã—ã¦ãã ã•ã„。 - ƒGƒ“ƒeƒBƒeƒBEƒŠƒ]ƒ‹ƒo + エンティティ・リゾルム- ‘Oq‚µ‚½‚悤‚ÉAHibernate‚Í‚Ü‚¸ƒNƒ‰ƒXƒpƒX“à‚ÅDTD‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B - org.xml.sax.EntityResolver ‚̃JƒXƒ^ƒ€ŽÀ‘•‚ð - XMLƒtƒ@ƒCƒ‹‚ð“Ç‚Ýž‚Þ‚½‚ß‚ÌSAXReader‚É“o˜^‚·‚邱‚Æ‚É‚æ‚Á‚ÄADTD‚ð‰ðŒˆ‚µ‚Ü‚·B - ‚±‚̃JƒXƒ^ƒ€‚Ì EntityResolver ‚Í2‚‚̈قȂéƒVƒXƒeƒ€ID–¼‘O‹óŠÔ‚ð”FŽ¯‚µ‚Ü‚·B + å‰è¿°ã—ãŸã‚ˆã†ã«ã€Hibernateã¯ã¾ãšã‚¯ãƒ©ã‚¹ãƒ‘ス内ã§DTDを解決ã—よã†ã¨ã—ã¾ã™ã€‚ + org.xml.sax.EntityResolver ã®ã‚«ã‚¹ã‚¿ãƒ å®Ÿè£…ã‚’ + XMLファイルを読ã¿è¾¼ã‚€ãŸã‚ã®SAXReaderã«ç™»éŒ²ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€DTDを解決ã—ã¾ã™ã€‚ + ã“ã®ã‚«ã‚¹ã‚¿ãƒ ã® EntityResolver ã¯2ã¤ã®ç•°ãªã‚‹ã‚·ã‚¹ãƒ†ãƒ IDåå‰ç©ºé–“ã‚’èªè­˜ã—ã¾ã™ã€‚ - Hibernate–¼‘O‹óŠÔ ‚ÍAƒŠƒ]ƒ‹ƒo‚ª - http://hibernate.sourceforge.net/ ‚ÅŽn‚Ü‚éƒVƒXƒeƒ€ID‚É“ž’B‚µ‚½‚Æ‚«‚ÉA - ”FŽ¯‚³‚ê‚Ü‚·B - ‚»‚µ‚ăŠƒ]ƒ‹ƒo‚ÍAHibernate‚̃Nƒ‰ƒX‚ðƒ[ƒh‚µ‚½ƒNƒ‰ƒXƒ[ƒ_‚ð—p‚¢‚ÄA - ‚±‚ê‚ç‚̃Gƒ“ƒeƒBƒeƒB‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B + Hibernateåå‰ç©ºé–“ ã¯ã€ãƒªã‚¾ãƒ«ãƒãŒ + http://hibernate.sourceforge.net/ ã§å§‹ã¾ã‚‹ã‚·ã‚¹ãƒ†ãƒ IDã«åˆ°é”ã—ãŸã¨ãã«ã€ + èªè­˜ã•ã‚Œã¾ã™ã€‚ + ãã—ã¦ãƒªã‚¾ãƒ«ãƒã¯ã€Hibernateã®ã‚¯ãƒ©ã‚¹ã‚’ロードã—ãŸã‚¯ãƒ©ã‚¹ãƒ­ãƒ¼ãƒ€ã‚’用ã„ã¦ã€ + ã“れらã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’解決ã—よã†ã¨ã—ã¾ã™ã€‚ - ƒ†[ƒU–¼‘O‹óŠÔ ‚ÍAƒŠƒ]ƒ‹ƒo‚ª - URLƒvƒƒgƒRƒ‹‚Ì classpath:// ‚ðŽg‚Á‚½ƒVƒXƒeƒ€ID‚É“ž’B‚µ‚½‚Æ‚«‚ÉA - ”FŽ¯‚³‚ê‚Ü‚·B‚»‚µ‚ăŠƒ]ƒ‹ƒo‚ÍA(1)ƒJƒŒƒ“ƒgƒXƒŒƒbƒh‚̃Rƒ“ƒeƒLƒXƒgƒNƒ‰ƒXƒ[ƒ_[A - ‚Ü‚½‚Í(2)Hibernate‚̃Nƒ‰ƒX‚ðƒ[ƒh‚µ‚½ƒNƒ‰ƒXƒ[ƒ_‚ðŽg‚Á‚ÄA - ‚±‚ê‚ç‚̃Gƒ“ƒeƒBƒeƒB‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B + ユーザåå‰ç©ºé–“ ã¯ã€ãƒªã‚¾ãƒ«ãƒãŒ + URLプロトコル㮠classpath:// を使ã£ãŸã‚·ã‚¹ãƒ†ãƒ IDã«åˆ°é”ã—ãŸã¨ãã«ã€ + èªè­˜ã•ã‚Œã¾ã™ã€‚ãã—ã¦ãƒªã‚¾ãƒ«ãƒã¯ã€(1)カレントスレッドã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚¯ãƒ©ã‚¹ãƒ­ãƒ¼ãƒ€ãƒ¼ã€ + ã¾ãŸã¯(2)Hibernateã®ã‚¯ãƒ©ã‚¹ã‚’ロードã—ãŸã‚¯ãƒ©ã‚¹ãƒ­ãƒ¼ãƒ€ã‚’使ã£ã¦ã€ + ã“れらã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’解決ã—よã†ã¨ã—ã¾ã™ã€‚ - ‰º‹L‚ÍAƒ†[ƒU–¼‘O‹óŠÔ‚ðŽg‚Á‚½—á‚Å‚·F + 下記ã¯ã€ãƒ¦ãƒ¼ã‚¶åå‰ç©ºé–“を使ã£ãŸä¾‹ã§ã™ï¼š @@ -164,8 +165,8 @@ &types; ]]> - ‚±‚±‚Å types.xml ‚Í your.domain ƒpƒbƒP[ƒW“à‚̃Šƒ\[ƒX‚Å‚ ‚èA - ƒJƒXƒ^ƒ€ typedef ‚ðŠÜ‚Þ‚Ü‚·B + ã“ã“㧠types.xml 㯠your.domain パッケージ内ã®ãƒªã‚½ãƒ¼ã‚¹ã§ã‚り〠+ カスタム typedef ã‚’å«ã‚€ã¾ã™ã€‚ @@ -176,14 +177,14 @@ hibernate-mapping - ‚±‚Ì—v‘f‚É‚Í‚¢‚­‚‚©ƒIƒvƒVƒ‡ƒ“‘®«‚ª‚ ‚è‚Ü‚·Bschema ‘®«‚Æ catalog ‘®«‚ÍA - ‚±‚̃}ƒbƒsƒ“ƒO‚ªŽQÆ‚·‚éƒe[ƒuƒ‹‚ªA‚±‚Ì‘®«‚É‚æ‚Á‚ÄŽw’肳‚ꂽƒXƒL[ƒ}‚Æ(‚Ü‚½‚Í)ƒJƒ^ƒƒO‚É‘®‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B - ‚±‚Ì‘®«‚ªŽw’肳‚ê‚é‚ÆAƒe[ƒuƒ‹–¼‚Í—^‚¦‚ç‚ꂽƒXƒL[ƒ}–¼‚ƃJƒ^ƒƒO–¼‚ÅCü‚³‚ê‚Ü‚·B‚±‚ê‚ç‚Ì‘®«‚ªŽw’肳‚ê‚Ä‚¢‚È‚¯‚ê‚ÎA - ƒe[ƒuƒ‹–¼‚ÍCü‚³‚ê‚Ü‚¹‚ñBdefault-cascade ‘®«‚ÍA - cascade ‘®«‚ðŽw’肵‚Ä‚¢‚È‚¢ƒvƒƒpƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚ÉA - ‚ǂ̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ðŠ„‚è“–‚Ä‚é‚©‚ðŽw’肵‚Ü‚·B - auto-import ‘®«‚ÍA - ƒNƒGƒŠŒ¾Œê“à‚ÅCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ðAƒfƒtƒHƒ‹ƒg‚ÅŽg‚¦‚é‚悤‚É‚µ‚Ü‚·B + ã“ã®è¦ç´ ã«ã¯ã„ãã¤ã‹ã‚ªãƒ—ション属性ãŒã‚ã‚Šã¾ã™ã€‚schema 属性㨠catalog 属性ã¯ã€ + ã“ã®ãƒžãƒƒãƒ”ングãŒå‚ç…§ã™ã‚‹ãƒ†ãƒ¼ãƒ–ルãŒã€ã“ã®å±žæ€§ã«ã‚ˆã£ã¦æŒ‡å®šã•ã‚ŒãŸã‚¹ã‚­ãƒ¼ãƒžã¨(ã¾ãŸã¯)カタログã«å±žã™ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + ã“ã®å±žæ€§ãŒæŒ‡å®šã•ã‚Œã‚‹ã¨ã€ãƒ†ãƒ¼ãƒ–ルåã¯ä¸Žãˆã‚‰ã‚ŒãŸã‚¹ã‚­ãƒ¼ãƒžåã¨ã‚«ã‚¿ãƒ­ã‚°åã§ä¿®é£¾ã•ã‚Œã¾ã™ã€‚ã“れらã®å±žæ€§ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã‘ã‚Œã°ã€ + テーブルåã¯ä¿®é£¾ã•ã‚Œã¾ã›ã‚“。default-cascade 属性ã¯ã€ + cascade 属性を指定ã—ã¦ã„ãªã„プロパティやコレクションã«ã€ + ã©ã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã‚¹ã‚¿ã‚¤ãƒ«ã‚’割り当ã¦ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ + auto-import 属性ã¯ã€ + クエリ言語内ã§ä¿®é£¾ã•ã‚Œã¦ã„ãªã„クラスåã‚’ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ä½¿ãˆã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ @@ -208,62 +209,62 @@ - schemaiƒIƒvƒVƒ‡ƒ“jFƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Ì–¼‘OB + schema(オプション):データベーススキーマã®åå‰ã€‚ - catalog iƒIƒvƒVƒ‡ƒ“jFƒf[ƒ^ƒx[ƒXƒJƒ^ƒƒO‚Ì–¼‘OB + catalog (オプション):データベースカタログã®åå‰ã€‚ - default-cascade iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í nonejF - ƒfƒtƒHƒ‹ƒg‚̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹B + default-cascade (オプション - デフォルト㯠none): + デフォルトã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã‚¹ã‚¿ã‚¤ãƒ«ã€‚ - default-access (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - Hibernate‚ªƒvƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚éÛ‚ÉÌ‚é‚ׂ«í—ªB PropertyAccessor - ‚ðŽÀ‘•‚·‚邱‚ƂŃJƒXƒ^ƒ}ƒCƒY‰Â”\B + default-access (オプション - デフォルト㯠property ): + HibernateãŒãƒ—ロパティã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã«æŽ¡ã‚‹ã¹ã戦略。 PropertyAccessor + を実装ã™ã‚‹ã“ã¨ã§ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºå¯èƒ½ã€‚ - default-lazy (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true )F - lazy ‘®«‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚ɑ΂·‚éƒfƒtƒHƒ‹ƒg’lB + default-lazy (オプション - デフォルト㯠true ): + lazy 属性ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„クラスやコレクションマッピングã«å¯¾ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã€‚ - auto-import iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í truejF - ƒNƒGƒŠŒ¾Œê“à‚ÅAi‚±‚̃}ƒbƒsƒ“ƒO“à‚̃Nƒ‰ƒX‚ÌjCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ðŽg‚¦‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + auto-import (オプション - デフォルト㯠true): + クエリ言語内ã§ã€ï¼ˆã“ã®ãƒžãƒƒãƒ”ング内ã®ã‚¯ãƒ©ã‚¹ã®ï¼‰ä¿®é£¾ã•ã‚Œã¦ã„ãªã„クラスåを使ãˆã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - package (ƒIƒvƒVƒ‡ƒ“): ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg“à‚ÅCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ɑ΂µ‚ÄŠ„‚è“–‚Ä‚éA - ƒpƒbƒP[ƒW‚ÌÚ“ªŽ«(prefix)‚ðŽw’肵‚Ü‚·B + package (オプション): マッピングドキュメント内ã§ä¿®é£¾ã•ã‚Œã¦ã„ãªã„クラスåã«å¯¾ã—ã¦å‰²ã‚Šå½“ã¦ã‚‹ã€ + パッケージã®æŽ¥é ­è¾ž(prefix)を指定ã—ã¾ã™ã€‚ - iCü‚³‚ê‚Ä‚¢‚È‚¢j“¯‚¶–¼‘O‚̉i‘±ƒNƒ‰ƒX‚ª2‚‚ ‚é‚È‚çA - auto-import="false" ‚ðÝ’è‚·‚ׂ«‚Å‚·B - 2‚‚̃Nƒ‰ƒX‚ÉhƒCƒ“ƒ|[ƒg‚³‚ꂽh“¯‚¶–¼‘O‚ðŠ„‚è“–‚Ă悤‚Æ‚·‚é‚ÆAHibernate‚Í—áŠO‚ð“Š‚°‚Ü‚·B + (修飾ã•ã‚Œã¦ã„ãªã„)åŒã˜åå‰ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ãŒ2ã¤ã‚ã‚‹ãªã‚‰ã€ + auto-import="false" を設定ã™ã¹ãã§ã™ã€‚ + 2ã¤ã®ã‚¯ãƒ©ã‚¹ã«â€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•ã‚ŒãŸâ€åŒã˜åå‰ã‚’割り当ã¦ã‚ˆã†ã¨ã™ã‚‹ã¨ã€Hibernateã¯ä¾‹å¤–を投ã’ã¾ã™ã€‚ - hibernate-mapping —v‘f‚ÍAʼn‚Ì—á‚ÅŽ¦‚µ‚½‚悤‚É‚¢‚­‚‚©‚̉i‘± <class> - ƒ}ƒbƒsƒ“ƒO‚ðƒlƒXƒg‚Å‚«‚Ü‚·B - ‚µ‚©‚µA‚P‚‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å‚Í‚½‚¾‚ЂƂ‚̉i‘±ƒNƒ‰ƒX(‚Ü‚½‚͂ЂƂ‚̃Nƒ‰ƒXŠK‘w)‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚悤‚É‚µA - ‚³‚ç‚ɉi‘±ƒX[ƒp[ƒNƒ‰ƒX‚ÌŒã‚ÅŽw’è‚·‚é‚ׂ«‚Å‚µ‚傤(‚¢‚­‚‚©‚̃c[ƒ‹‚Í‚±‚̂悤‚ȃ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð‘z’肵‚Ä‚¢‚Ü‚·)B - —Ⴆ‚ÎŽŸ‚̂悤‚É‚È‚è‚Ü‚·BF Cat.hbm.xml , - Dog.hbm.xml , ‚Ü‚½‚ÍŒp³‚ðŽg‚¤‚È‚ç Animal.hbm.xml B + hibernate-mapping è¦ç´ ã¯ã€æœ€åˆã®ä¾‹ã§ç¤ºã—ãŸã‚ˆã†ã«ã„ãã¤ã‹ã®æ°¸ç¶š <class> + マッピングをãƒã‚¹ãƒˆã§ãã¾ã™ã€‚ + ã—ã‹ã—ã€ï¼‘ã¤ã®ãƒžãƒƒãƒ”ングファイルã§ã¯ãŸã ã²ã¨ã¤ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹(ã¾ãŸã¯ã²ã¨ã¤ã®ã‚¯ãƒ©ã‚¹éšŽå±¤)ã«ãƒžãƒƒãƒ”ングã™ã‚‹ã‚ˆã†ã«ã—〠+ ã•ã‚‰ã«æ°¸ç¶šã‚¹ãƒ¼ãƒ‘ークラスã®å¾Œã§æŒ‡å®šã™ã‚‹ã¹ãã§ã—ょã†(ã„ãã¤ã‹ã®ãƒ„ールã¯ã“ã®ã‚ˆã†ãªãƒžãƒƒãƒ”ングファイルを想定ã—ã¦ã„ã¾ã™)。 + 例ãˆã°æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚: Cat.hbm.xml , + Dog.hbm.xml , ã¾ãŸã¯ç¶™æ‰¿ã‚’使ã†ãªã‚‰ Animal.hbm.xml 。 @@ -272,7 +273,7 @@ class - class —v‘f‚ðŽg‚Á‚ÄA‰i‘±ƒNƒ‰ƒX‚ð錾‚Å‚«‚Ü‚·B + class è¦ç´ ã‚’使ã£ã¦ã€æ°¸ç¶šã‚¯ãƒ©ã‚¹ã‚’宣言ã§ãã¾ã™ã€‚ @@ -328,140 +329,140 @@ - name (ƒIƒvƒVƒ‡ƒ“)F‰i‘±ƒNƒ‰ƒXi‚Ü‚½‚̓Cƒ“ƒ^[ƒtƒFƒCƒXj‚ÌŠ®‘SCüJavaƒNƒ‰ƒX–¼B - ‚à‚µ‚±‚Ì‘®«‚ðŽw’肵‚È‚¯‚ê‚ÎAPOJO‚Å‚Í‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚ɑ΂·‚éƒ}ƒbƒsƒ“ƒO‚Æ‚µ‚Ĉµ‚í‚ê‚Ü‚·B + name (オプション):永続クラス(ã¾ãŸã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ï¼‰ã®å®Œå…¨ä¿®é£¾Javaクラスå。 + ã‚‚ã—ã“ã®å±žæ€§ã‚’指定ã—ãªã‘ã‚Œã°ã€POJOã§ã¯ãªã„エンティティã«å¯¾ã™ã‚‹ãƒžãƒƒãƒ”ングã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™ã€‚ - table (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚ÍCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼)Fƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚Ì–¼‘O + table (オプション - デフォルトã¯ä¿®é£¾ã•ã‚Œã¦ã„ãªã„クラスå):データベーステーブルã®åå‰ - discriminator-value (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼)F - ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈU‚é•‘‚¢‚ÉŽg‚í‚ê‚éŒÂX‚̃TƒuƒNƒ‰ƒX‚ðŽ¯•Ê‚·‚邽‚ß‚Ì’lB - ’l‚Í null ‚© not null ‚Ì‚¢‚¸‚ê‚©‚ðŽæ‚è‚Ü‚·B + discriminator-value (オプション - デフォルトã¯ã‚¯ãƒ©ã‚¹å): + ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªæŒ¯ã‚‹èˆžã„ã«ä½¿ã‚れる個々ã®ã‚µãƒ–クラスを識別ã™ã‚‹ãŸã‚ã®å€¤ã€‚ + 値㯠null ã‹ not null ã®ã„ãšã‚Œã‹ã‚’å–ã‚Šã¾ã™ã€‚ - mutable (ƒIƒvƒVƒ‡ƒ“A ƒfƒtƒHƒ‹ƒg‚Í true )F - ‚»‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªXV‰Â”\i‚Ü‚½‚Í•s‰Â”\j‚Å‚ ‚邱‚Æ‚ðŽw’肵‚Ü‚·B + mutable (オプション〠デフォルト㯠true ): + ãã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ›´æ–°å¯èƒ½ï¼ˆã¾ãŸã¯ä¸å¯èƒ½ï¼‰ã§ã‚ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ - schema iƒIƒvƒVƒ‡ƒ“jF - ƒ‹[ƒg‚Ì <hibernate-mapping> —v‘f‚ÅŽw’肳‚ꂽƒXƒL[ƒ}–¼‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B + schema (オプション): + ルート㮠<hibernate-mapping> è¦ç´ ã§æŒ‡å®šã•ã‚ŒãŸã‚¹ã‚­ãƒ¼ãƒžåをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™ã€‚ - catalog iƒIƒvƒVƒ‡ƒ“jFƒ‹[ƒg‚Ì <hibernate-mapping> - —v‘f‚ÅŽw’肳‚ꂽƒJƒ^ƒƒO–¼‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B + catalog (オプション):ルート㮠<hibernate-mapping> + è¦ç´ ã§æŒ‡å®šã•ã‚ŒãŸã‚«ã‚¿ãƒ­ã‚°åをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™ã€‚ - proxy iƒIƒvƒVƒ‡ƒ“jF’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg‚¤ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B - ‰i‘±‰»‚·‚éƒNƒ‰ƒX–¼‚»‚Ì‚à‚Ì‚ðŽw’è‚·‚邱‚Æ‚à‰Â”\‚Å‚·B + proxy (オプション):é…延åˆæœŸåŒ–プロキシã«ä½¿ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’指定ã—ã¾ã™ã€‚ + 永続化ã™ã‚‹ã‚¯ãƒ©ã‚¹åãã®ã‚‚ã®ã‚’指定ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ - dynamic-update iƒIƒvƒVƒ‡ƒ“A ƒfƒtƒHƒ‹ƒg‚Í false jF - ’l‚ª•ÏX‚³‚ꂽƒJƒ‰ƒ€‚¾‚¯‚ðŠÜ‚ÞSQL‚Ì UPDATE •¶‚ðAŽÀsŽž‚ɶ¬‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B + dynamic-update (オプション〠デフォルト㯠false ): + 値ãŒå¤‰æ›´ã•ã‚ŒãŸã‚«ãƒ©ãƒ ã ã‘ã‚’å«ã‚€SQLã® UPDATE 文をã€å®Ÿè¡Œæ™‚ã«ç”Ÿæˆã™ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ - dynamic-insert iƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í false jF - ’l‚ªnull‚Å‚Í‚È‚¢ƒJƒ‰ƒ€‚¾‚¯‚ðŠÜ‚ÞSQL‚Ì INSERT •¶‚ðAŽÀsŽž‚ɶ¬‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B + dynamic-insert (オプション, デフォルト㯠false ): + 値ãŒnullã§ã¯ãªã„カラムã ã‘ã‚’å«ã‚€SQLã® INSERT 文をã€å®Ÿè¡Œæ™‚ã«ç”Ÿæˆã™ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ - select-before-update (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í false): - ƒIƒuƒWƒFƒNƒg‚ª•ÏX‚³‚ꂽ‚Ì‚ªŠmŽÀ‚Å‚È‚¢‚È‚ç‚ÎAHibernate‚ªSQL‚Ì UPDATE ‚ð - Œˆ‚µ‚ÄŽÀs‚µ‚È‚¢ ‚±‚Æ‚ðŽw’肵‚Ü‚·B - ‚ ‚é“Á’è‚Ìê‡(ŽÀÛ“I‚É‚ÍAˆêŽžƒIƒuƒWƒFƒNƒg‚ª update() ‚ðŽg‚¢A - V‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A•t‚¯‚ç‚ꂽŽž‚¾‚¯)AUPDATE ‚ªŽÀÛ‚É•K—v‚©‚Ç‚¤‚©‚ðŒˆ’è‚·‚邽‚ß‚ÉA - Hibernate‚ª—]•ª‚ÈSQL‚Ì SELECT •¶‚ðŽÀs‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + select-before-update (オプション, デフォルト㯠false): + オブジェクトãŒå¤‰æ›´ã•ã‚ŒãŸã®ãŒç¢ºå®Ÿã§ãªã„ãªã‚‰ã°ã€HibernateãŒSQLã® UPDATE ã‚’ + 決ã—ã¦å®Ÿè¡Œã—ãªã„ ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + ã‚る特定ã®å ´åˆ(実際的ã«ã¯ã€ä¸€æ™‚オブジェクト㌠update() を使ã„〠+ æ–°ã—ã„セッションã¨é–¢é€£ä»˜ã‘られãŸæ™‚ã ã‘)ã€UPDATE ãŒå®Ÿéš›ã«å¿…è¦ã‹ã©ã†ã‹ã‚’決定ã™ã‚‹ãŸã‚ã«ã€ + HibernateãŒä½™åˆ†ãªSQLã® SELECT 文を実行ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - (optional, ƒfƒtƒHƒ‹ƒg‚Å‚Í implicit ): implicitiˆÃ–Ùj‚©expliciti–¾Ž¦j‚ÌA - ‚Ç‚¿‚ç‚̃NƒGƒŠƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg‚¤‚©Œˆ’肵‚Ü‚·B + (optional, デフォルトã§ã¯ implicit ): implicit(暗黙)ã‹explicit(明示)ã®ã€ + ã©ã¡ã‚‰ã®ã‚¯ã‚¨ãƒªãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã‚’使ã†ã‹æ±ºå®šã—ã¾ã™ã€‚ - where iƒIƒvƒVƒ‡ƒ“jF - ‚±‚̃Nƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ðŒŸõ‚·‚é‚Æ‚«‚ÉŽg—p‚·‚éA”CˆÓ‚ÌSQL‚Ì WHERE ðŒ‚ðŽw’肵‚Ü‚·B + where (オプション): + ã“ã®ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトを検索ã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹ã€ä»»æ„ã®SQLã® WHERE æ¡ä»¶ã‚’指定ã—ã¾ã™ã€‚ - persister iƒIƒvƒVƒ‡ƒ“jFƒJƒXƒ^ƒ€ ClassPersister ‚ðŽw’肵‚Ü‚·B + persister (オプション):カスタム ClassPersister を指定ã—ã¾ã™ã€‚ - batch-size iƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í 1 jF - Ž¯•ÊŽq‚Å‚±‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚𕜌³‚·‚é‚Æ‚«‚Ìuƒoƒbƒ`ƒTƒCƒYv‚ðŽw’肵‚Ü‚·B + batch-size (オプション, デフォルト㯠1 ): + 識別å­ã§ã“ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’復元ã™ã‚‹ã¨ãã®ã€Œãƒãƒƒãƒã‚µã‚¤ã‚ºã€ã‚’指定ã—ã¾ã™ã€‚ - optimistic-lock iƒIƒvƒVƒ‡ƒ“,ƒfƒtƒHƒ‹ƒg‚Í version jF - ŠyŠÏƒƒbƒNí—ª‚ðŒˆ’è‚µ‚Ü‚·B + optimistic-lock (オプション,デフォルト㯠version ): + 楽観ロック戦略を決定ã—ã¾ã™ã€‚ - lazy iƒIƒvƒVƒ‡ƒ“jF lazy="false" ‚ÆÝ’è‚·‚邱‚Æ‚ÅA - ’x‰„ƒtƒFƒbƒ`‚ª‚Å‚«‚È‚­‚È‚è‚Ü‚·B + lazy (オプション): lazy="false" ã¨è¨­å®šã™ã‚‹ã“ã¨ã§ã€ + é…延フェッãƒãŒã§ããªããªã‚Šã¾ã™ã€‚ - entity-name iƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼jF - Hibernate3‚ł̓Nƒ‰ƒX‚ª•¡”‰ñƒ}ƒbƒsƒ“ƒO‚Å‚«iꇂɂæ‚Á‚Ă͈Ⴄƒe[ƒuƒ‹‚ɑ΂µ‚Ä‚àjA - JavaƒŒƒxƒ‹‚ÅMap‚âXML‚Å•\Œ»‚³‚ê‚éƒGƒ“ƒeƒBƒeƒBƒ}ƒbƒsƒ“ƒO‚ª‰Â”\‚Å‚·B - ‚±‚ê‚ç‚Ìê‡AƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä”CˆÓ‚Ì–¼‘O‚ðA–¾Ž¦“I‚É•t‚¯‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB - Ú‚µ‚­‚Í ‚Æ ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + entity-name (オプションã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã‚¯ãƒ©ã‚¹å): + Hibernate3ã§ã¯ã‚¯ãƒ©ã‚¹ãŒè¤‡æ•°å›žãƒžãƒƒãƒ”ングã§ã(場åˆã«ã‚ˆã£ã¦ã¯é•ã†ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã—ã¦ã‚‚)〠+ Javaレベルã§Mapã‚„XMLã§è¡¨ç¾ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒžãƒƒãƒ”ングãŒå¯èƒ½ã§ã™ã€‚ + ã“れらã®å ´åˆã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—ã¦ä»»æ„ã®åå‰ã‚’ã€æ˜Žç¤ºçš„ã«ä»˜ã‘ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。 + 詳ã—ã㯠㨠をå‚ç…§ã—ã¦ãã ã•ã„。 - check iƒIƒvƒVƒ‡ƒ“jFŽ©“®“I‚ɃXƒL[ƒ}‚𶬂·‚邽‚ß‚ÉA - •¡”s‚Ì check §–ñ‚𶬂·‚éSQLŽ®B + check (オプション):自動的ã«ã‚¹ã‚­ãƒ¼ãƒžã‚’生æˆã™ã‚‹ãŸã‚ã«ã€ + 複数行㮠check 制約を生æˆã™ã‚‹SQLå¼ã€‚ - rowid iƒIƒvƒVƒ‡ƒ“jFHibernate‚ÍA‚»‚ê‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ÅROWID‚Æ - ŒÄ‚΂ê‚é‚à‚Ì‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - —Ⴆ‚ÎOracle‚ðŽg‚Á‚Ä‚¢‚é‚Æ‚«A‚±‚̃IƒvƒVƒ‡ƒ“‚É rowid ‚ðÝ’è‚·‚ê‚ÎA - Hiberante‚Íupdate‚ð‚‘¬‰»‚·‚邽‚ß‚É rowid ‚Æ‚¢‚¤“Á•Ê‚ȃJƒ‰ƒ€‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ROWID‚ÍÚׂȎÀ‘•‚Å‚ ‚èA•Û‘¶‚³‚ꂽƒ^ƒvƒ‹‚Ì•¨—“I‚Ȉʒu‚ð•\‚µ‚Ä‚¢‚Ü‚·B + rowid (オプション):Hibernateã¯ã€ãれをサãƒãƒ¼ãƒˆã—ã¦ã„るデータベースã§ROWID㨠+ 呼ã°ã‚Œã‚‹ã‚‚ã®ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + 例ãˆã°Oracleを使ã£ã¦ã„ã‚‹ã¨ãã€ã“ã®ã‚ªãƒ—ション㫠rowid を設定ã™ã‚Œã°ã€ + Hiberanteã¯updateを高速化ã™ã‚‹ãŸã‚ã« rowid ã¨ã„ã†ç‰¹åˆ¥ãªã‚«ãƒ©ãƒ ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + ROWIDã¯è©³ç´°ãªå®Ÿè£…ã§ã‚ã‚Šã€ä¿å­˜ã•ã‚ŒãŸã‚¿ãƒ—ルã®ç‰©ç†çš„ãªä½ç½®ã‚’表ã—ã¦ã„ã¾ã™ã€‚ - subselect iƒIƒvƒVƒ‡ƒ“jF•s•Ï‚©‚“ǂݎæ‚èê—p‚Å‚ ‚éƒGƒ“ƒeƒBƒeƒB‚ð - ƒf[ƒ^ƒx[ƒX‚Ì•›–⇂¹isubselectj‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - ‚à‚µŒ³‚̃e[ƒuƒ‹‚Ì‘ã‚í‚è‚Ƀrƒ…[‚ðŽ‚¿‚½‚¯‚ê‚ΗL—p‚Å‚·‚ªA - ‚»‚¤‚Å‚È‚¢‚Ì‚È‚ç—L—p‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚æ‚èÚ‚µ‚¢î•ñ‚͉º‹L‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + subselect (オプション):ä¸å¤‰ã‹ã¤èª­ã¿å–り専用ã§ã‚るエンティティを + データベースã®å‰¯å•åˆã›ï¼ˆsubselect)ã«ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + ã‚‚ã—å…ƒã®ãƒ†ãƒ¼ãƒ–ルã®ä»£ã‚ã‚Šã«ãƒ“ューをæŒã¡ãŸã‘ã‚Œã°æœ‰ç”¨ã§ã™ãŒã€ + ãã†ã§ãªã„ã®ãªã‚‰æœ‰ç”¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。より詳ã—ã„情報ã¯ä¸‹è¨˜ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - abstract iƒIƒvƒVƒ‡ƒ“jF - <union-subclass> ŠK‘w“à‚Ì’ŠÛƒX[ƒp[ƒNƒ‰ƒX‚Ƀ}[ƒN‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B + abstract (オプション): + <union-subclass> 階層内ã®æŠ½è±¡ã‚¹ãƒ¼ãƒ‘ークラスã«ãƒžãƒ¼ã‚¯ã™ã‚‹ãŸã‚ã«ä½¿ã„ã¾ã™ã€‚ @@ -469,102 +470,102 @@ - ‰i‘±ƒNƒ‰ƒX‚Ì–¼‘O‚ɃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ä‚à‚Ü‚Á‚½‚­–â‘è‚ ‚è‚Ü‚¹‚ñB - ‚»‚Ì‚Æ‚«‚Í <subclass> —v‘f‚ðŽg‚Á‚ÄA - ‚»‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚·‚éƒNƒ‰ƒX‚ð’è‹`‚µ‚Ä‚­‚¾‚³‚¢B - static ‚È“à•”ƒNƒ‰ƒX‚Å‚à‰i‘±‰»‚Å‚«‚Ü‚·B - ‚»‚Ì‚Æ‚«‚Í•W€Œ`Ž®A—Ⴆ‚Î eg.Foo$Bar ‚ðŽg‚Á‚ăNƒ‰ƒX–¼‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B + 永続クラスã®åå‰ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’指定ã—ã¦ã‚‚ã¾ã£ãŸãå•é¡Œã‚ã‚Šã¾ã›ã‚“。 + ãã®ã¨ã㯠<subclass> è¦ç´ ã‚’使ã£ã¦ã€ + ãã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’定義ã—ã¦ãã ã•ã„。 + static ãªå†…部クラスã§ã‚‚永続化ã§ãã¾ã™ã€‚ + ãã®ã¨ãã¯æ¨™æº–å½¢å¼ã€ä¾‹ãˆã° eg.Foo$Bar を使ã£ã¦ã‚¯ãƒ©ã‚¹åを指定ã—ã¦ãã ã•ã„。 - mutable="false" Žw’è‚ð‚µ‚½•s•ÏƒNƒ‰ƒX‚ÍA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éXV‚â휂ªo—ˆ‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B - ‚±‚ê‚É‚æ‚èAHibernate‚ªƒpƒtƒH[ƒ}ƒ“ƒX‚ð­‚µ‰ü‘P‚µ‚Ü‚·B + mutable="false" 指定をã—ãŸä¸å¤‰ã‚¯ãƒ©ã‚¹ã¯ã€ + アプリケーションã«ã‚ˆã‚‹æ›´æ–°ã‚„削除ãŒå‡ºæ¥ãªã„ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šã€HibernateãŒãƒ‘フォーマンスを少ã—改善ã—ã¾ã™ã€‚ - ƒIƒvƒVƒ‡ƒ“‚Ì proxy ‘®«‚É‚æ‚èAƒNƒ‰ƒX‚̉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚Ì’x‰„‰Šú‰»‚ª‰Â”\‚É‚È‚è‚Ü‚·B - Hibernate‚Íʼn‚ÉAŽw’肵‚½ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚½CGLIBƒvƒƒLƒV‚ð•Ô‚µ‚Ü‚·B - ŽÀۂ̉i‘±ƒIƒuƒWƒFƒNƒg‚̓vƒƒLƒV‚̃ƒ\ƒbƒh‚ðŒÄ‚Ño‚·‚Æ‚«‚Ƀ[ƒh‚µ‚Ü‚·B - ˆÈ‰º‚Ìu’x‰„‰Šú‰»‚Ì‚½‚߂̃vƒƒLƒVv‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + オプション㮠proxy 属性ã«ã‚ˆã‚Šã€ã‚¯ãƒ©ã‚¹ã®æ°¸ç¶šã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®é…延åˆæœŸåŒ–ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ + Hibernateã¯æœ€åˆã«ã€æŒ‡å®šã—ãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã—ãŸCGLIBプロキシを返ã—ã¾ã™ã€‚ + 実際ã®æ°¸ç¶šã‚ªãƒ–ジェクトã¯ãƒ—ロキシã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã¨ãã«ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚ + 以下ã®ã€Œé…延åˆæœŸåŒ–ã®ãŸã‚ã®ãƒ—ロキシã€ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ˆÃ–Ù“I ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚Æ‚ÍAŽŸ‚Ì“ñ‚‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B - ˆê‚‚̓Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªAƒX[ƒp[ƒNƒ‰ƒX‚âŽÀ‘•‚µ‚½ƒCƒ“ƒ^[ƒtƒFƒCƒXA‚Ü‚½‚»‚̃Nƒ‰ƒX‚ðŽw’è‚·‚éƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚邱‚Æ‚ÅA - ‚à‚¤ˆê‚‚͂»‚̃Nƒ‰ƒX‚̃TƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA‚»‚̃Nƒ‰ƒXŽ©g‚ðŽw’肵‚½ƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚邱‚Æ‚Å‚·B - ‚Ü‚½A–¾Ž¦“I ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚Æ‚ÍAŽŸ‚Ì“ñ‚‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B - ˆê‚‚̓Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA‚»‚̃Nƒ‰ƒX‚𖾎¦“I‚ÉŽw’肵‚½ƒNƒGƒŠ‚É‚æ‚Á‚Ä‚Ì‚Ý•Ô‚³‚ê‚邱‚Æ‚ÅA - ‚à‚¤ˆê‚‚̓Nƒ‰ƒX‚ðŽw’肵‚½ƒNƒGƒŠ‚ªA<class> —v‘f‚Ì’†‚Å <subclass> ‚â - <joined-subclass> ‚ƃ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚éƒTƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚ð•Ô‚·‚±‚Æ‚Å‚·B - ‚Ù‚Æ‚ñ‚Ç‚Ì—p“r‚ł̓fƒtƒHƒ‹ƒg‚Ì polymorphism="implicit" ‚ª“KØ‚Å‚·B - –¾Ž¦“I‚ȃ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ÍA2‚‚̈á‚Á‚½ƒNƒ‰ƒX‚ª“¯‚¶ƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚é‚Æ‚«‚É—L—p‚Å‚· - i‚±‚ê‚É‚æ‚Á‚ăe[ƒuƒ‹ƒJƒ‰ƒ€‚̃TƒuƒZƒbƒg‚ðŠÜ‚ÞAuŒy—Ê‚ÈvƒNƒ‰ƒX‚ª‰Â”\‚É‚È‚è‚Ü‚·jB + 暗黙的 ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã¨ã¯ã€æ¬¡ã®äºŒã¤ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ + 一ã¤ã¯ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã€ã‚¹ãƒ¼ãƒ‘ークラスや実装ã—ãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã€ã¾ãŸãã®ã‚¯ãƒ©ã‚¹ã‚’指定ã™ã‚‹ã‚¯ã‚¨ãƒªã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹ã“ã¨ã§ã€ + ã‚‚ã†ä¸€ã¤ã¯ãã®ã‚¯ãƒ©ã‚¹ã®ã‚µãƒ–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã€ãã®ã‚¯ãƒ©ã‚¹è‡ªèº«ã‚’指定ã—ãŸã‚¯ã‚¨ãƒªã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹ã“ã¨ã§ã™ã€‚ + ã¾ãŸã€æ˜Žç¤ºçš„ ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã¨ã¯ã€æ¬¡ã®äºŒã¤ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ + 一ã¤ã¯ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã€ãã®ã‚¯ãƒ©ã‚¹ã‚’明示的ã«æŒ‡å®šã—ãŸã‚¯ã‚¨ãƒªã«ã‚ˆã£ã¦ã®ã¿è¿”ã•ã‚Œã‚‹ã“ã¨ã§ã€ + ã‚‚ã†ä¸€ã¤ã¯ã‚¯ãƒ©ã‚¹ã‚’指定ã—ãŸã‚¯ã‚¨ãƒªãŒã€<class> è¦ç´ ã®ä¸­ã§ <subclass> ã‚„ + <joined-subclass> ã¨ãƒžãƒƒãƒ”ングã•ã‚Œã¦ã„るサブクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã ã‘ã‚’è¿”ã™ã“ã¨ã§ã™ã€‚ + ã»ã¨ã‚“ã©ã®ç”¨é€”ã§ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã® polymorphism="implicit" ãŒé©åˆ‡ã§ã™ã€‚ + 明示的ãªãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã¯ã€2ã¤ã®é•ã£ãŸã‚¯ãƒ©ã‚¹ãŒåŒã˜ãƒ†ãƒ¼ãƒ–ルã«ãƒžãƒƒãƒ”ングã•ã‚Œã¦ã„ã‚‹ã¨ãã«æœ‰ç”¨ã§ã™ + (ã“ã‚Œã«ã‚ˆã£ã¦ãƒ†ãƒ¼ãƒ–ルカラムã®ã‚µãƒ–セットをå«ã‚€ã€ã€Œè»½é‡ãªã€ã‚¯ãƒ©ã‚¹ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ï¼‰ã€‚ - persister ‘®«‚ðŽw’è‚·‚邱‚Æ‚ÅAƒNƒ‰ƒX‚̉i‘±‰»í—ª‚ðƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B - —Ⴆ‚Î org.hibernate.persister.EntityPersister Ž©g‚̃TƒuƒNƒ‰ƒX‚ðŽw’肵‚½‚èA - ‚Ü‚½—Ⴆ‚΃XƒgƒAƒhƒvƒƒV[ƒWƒƒƒR[ƒ‹Aƒtƒ‰ƒbƒgƒtƒ@ƒCƒ‹‚ÖƒVƒŠƒAƒ‰ƒCƒYA - LDAP‚È‚Ç‚ð’Ê‚µ‚½‰i‘±«‚ðŽÀ‘•‚·‚é org.hibernate.persister.ClassPersister - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŠ®‘S‚ÉV‚µ‚¢ŽÀ‘•‚ð’ñ‹Ÿ‚Å‚«‚Ü‚·BŠÈ’P‚È—á‚Æ‚µ‚Ä org.hibernate.test.CustomPersister - ‚ðŒ©‚Ä‚­‚¾‚³‚¢i‚±‚ê‚Í Hashtable ‚Ìu‰i‘±‰»v‚Å‚·jB + persister 属性を指定ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¹ã®æ°¸ç¶šåŒ–戦略をカスタマイズã§ãã¾ã™ã€‚ + 例ãˆã° org.hibernate.persister.EntityPersister 自身ã®ã‚µãƒ–クラスを指定ã—ãŸã‚Šã€ + ã¾ãŸä¾‹ãˆã°ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャコールã€ãƒ•ãƒ©ãƒƒãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã€ + LDAPãªã©ã‚’通ã—ãŸæ°¸ç¶šæ€§ã‚’実装ã™ã‚‹ org.hibernate.persister.ClassPersister + インターフェイスã®å®Œå…¨ã«æ–°ã—ã„実装をæä¾›ã§ãã¾ã™ã€‚ç°¡å˜ãªä¾‹ã¨ã—㦠org.hibernate.test.CustomPersister + を見ã¦ãã ã•ã„(ã“れ㯠Hashtable ã®ã€Œæ°¸ç¶šåŒ–ã€ã§ã™ï¼‰ã€‚ - dynamic-update ‚Æ dynamic-insert ‚ÌÝ’è‚̓TƒuƒNƒ‰ƒX‚ÉŒp³‚³‚ê‚Ü‚¹‚ñB - ‚»‚Ì‚½‚ß <subclass> ‚â <joined-subclass> —v‘f‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B - ‚±‚ê‚ç‚ÌÝ’è‚̓pƒtƒH[ƒ}ƒ“ƒX‚ðŒüコ‚¹‚鎖‚à‚ ‚è‚Ü‚·‚ªA—Ž‚Æ‚·‚±‚Æ‚à‚ ‚è‚Ü‚·‚Ì‚ÅATd‚ÉŽg—p‚µ‚Ä‚­‚¾‚³‚¢B + dynamic-update 㨠dynamic-insert ã®è¨­å®šã¯ã‚µãƒ–クラスã«ç¶™æ‰¿ã•ã‚Œã¾ã›ã‚“。 + ãã®ãŸã‚ <subclass> ã‚„ <joined-subclass> è¦ç´ ã‚’指定ã™ã‚‹ã“ã¨ã‚‚出æ¥ã¾ã™ã€‚ + ã“れらã®è¨­å®šã¯ãƒ‘フォーマンスをå‘上ã•ã›ã‚‹äº‹ã‚‚ã‚ã‚Šã¾ã™ãŒã€è½ã¨ã™ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã®ã§ã€æ…Žé‡ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。 - select-before-update ‚ÌŽg—p‚Í’ÊíƒpƒtƒH[ƒ}ƒ“ƒX‚ð—Ž‚Æ‚µ‚Ü‚·B - ‚à‚µ Session ‚Ö•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚̃Oƒ‰ƒt‚ðĒljÁ‚·‚é‚È‚çA - ƒf[ƒ^ƒx[ƒXXV‚̃gƒŠƒK‚ð•s•K—v‚ɌĂÑo‚·‚Ì‚ð”ð‚¯‚é‚Æ‚¢‚¤“_‚ÅA”ñí‚É—L—p‚Å‚·B + select-before-update ã®ä½¿ç”¨ã¯é€šå¸¸ãƒ‘フォーマンスをè½ã¨ã—ã¾ã™ã€‚ + ã‚‚ã— Session ã¸åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ã‚°ãƒ©ãƒ•ã‚’å†è¿½åŠ ã™ã‚‹ãªã‚‰ã€ + データベース更新ã®ãƒˆãƒªã‚¬ã‚’ä¸å¿…è¦ã«å‘¼ã³å‡ºã™ã®ã‚’é¿ã‘ã‚‹ã¨ã„ã†ç‚¹ã§ã€éžå¸¸ã«æœ‰ç”¨ã§ã™ã€‚ - dynamic-update ‚ð—LŒø‚É‚·‚ê‚ÎAŠyŠÏƒƒbƒNí—ª‚ð‘I‚Ô‚±‚Æ‚É‚È‚è‚Ü‚·B + dynamic-update を有効ã«ã™ã‚Œã°ã€æ¥½è¦³ãƒ­ãƒƒã‚¯æˆ¦ç•¥ã‚’é¸ã¶ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - version ƒo[ƒWƒ‡ƒ“/ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µ‚Ü‚· + version ãƒãƒ¼ã‚¸ãƒ§ãƒ³/タイムスタンプカラムをãƒã‚§ãƒƒã‚¯ã—ã¾ã™ - all ‚·‚ׂẴJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B + all ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ - dirty •ÏX‚µ‚½ƒJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µA“¯ŽžXV‚Å‚«‚é‚悤‚É‚µ‚Ü‚·B + dirty 変更ã—ãŸã‚«ãƒ©ãƒ ã‚’ãƒã‚§ãƒƒã‚¯ã—ã€åŒæ™‚æ›´æ–°ã§ãるよã†ã«ã—ã¾ã™ã€‚ - none ŠyŠÏƒƒbƒN‚ðŽg—p‚µ‚Ü‚¹‚ñ + none 楽観ロックを使用ã—ã¾ã›ã‚“ - Hibernate‚ÅŠyŠÏ“IƒƒbƒNí—ª‚ðŽg‚¤‚È‚çAƒo[ƒWƒ‡ƒ“/ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒJƒ‰ƒ€‚ðŽg‚¤‚±‚Æ‚ð - ”ñí‚É ‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B - ŠyŠÏ“IƒƒbƒN‚̓pƒtƒH[ƒ}ƒ“ƒX‚ÌŠÏ“_‚©‚ç‚àÅ“K‚Å‚ ‚èA‚³‚ç‚É•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌC³ - i‚‚܂è Session.marge() ‚ªŽg‚í‚ê‚é‚Æ‚«j - ‚ð³Šm‚Ɉµ‚¤‚±‚Æ‚Ì‚Å‚«‚é—Bˆê‚Ìí—ª‚Å‚à‚ ‚è‚Ü‚·B + Hibernateã§æ¥½è¦³çš„ロック戦略を使ã†ãªã‚‰ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³/タイムスタンプカラムを使ã†ã“ã¨ã‚’ + éžå¸¸ã« å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚ + 楽観的ロックã¯ãƒ‘フォーマンスã®è¦³ç‚¹ã‹ã‚‰ã‚‚最é©ã§ã‚ã‚Šã€ã•ã‚‰ã«åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¸ã®ä¿®æ­£ + (ã¤ã¾ã‚Š Session.marge() ãŒä½¿ã‚れるã¨ã) + を正確ã«æ‰±ã†ã“ã¨ã®ã§ãる唯一ã®æˆ¦ç•¥ã§ã‚‚ã‚ã‚Šã¾ã™ã€‚ - Hibernate‚̃}ƒbƒsƒ“ƒO‚É‚Æ‚Á‚ărƒ…[‚Æ•’ʂ̃e[ƒuƒ‹‚̊ԂɈႢ‚Í‚È‚­A - ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚Å‚Í“§‰ß“I‚Å‚· - i‚½‚¾‚µƒrƒ…[‚ðŠ®‘S‚ɂ̓Tƒ|[ƒg‚µ‚Ä‚¢‚È‚¢DBMS‚à‚ ‚è‚Ü‚·B - “Á‚ÉAXV‚Ì‚ ‚éƒrƒ…[‚ɑ΂µ‚Ä‚Í‚»‚¤‚Å‚·jB - ƒrƒ…[‚ðŽg‚¢‚½‚­‚Ä‚àAƒf[ƒ^ƒx[ƒX‚Å쬂ł«‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚· - i—Ⴆ‚ÎAƒŒƒKƒV[ƒXƒL[ƒ}‚Ìê‡jB - ‚±‚ÌꇂɂÍA•s•Ï‚©‚“ǂݎæ‚èê—p‚̃Gƒ“ƒeƒBƒeƒB‚É—^‚¦‚ç‚ꂽSQL‚Ì•›–⇂¹•¶‚ðƒ}ƒbƒv‚Å‚«‚Ü‚·B + Hibernateã®ãƒžãƒƒãƒ”ングã«ã¨ã£ã¦ãƒ“ューã¨æ™®é€šã®ãƒ†ãƒ¼ãƒ–ルã®é–“ã«é•ã„ã¯ãªã〠+ データベースレベルã§ã¯é€éŽçš„ã§ã™ + (ãŸã ã—ビューを完全ã«ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„DBMSã‚‚ã‚ã‚Šã¾ã™ã€‚ + 特ã«ã€æ›´æ–°ã®ã‚るビューã«å¯¾ã—ã¦ã¯ãã†ã§ã™ï¼‰ã€‚ + ビューを使ã„ãŸãã¦ã‚‚ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ä½œæˆã§ããªã„ã“ã¨ãŒã‚ã‚Šã¾ã™ + (例ãˆã°ã€ãƒ¬ã‚¬ã‚·ãƒ¼ã‚¹ã‚­ãƒ¼ãƒžã®å ´åˆï¼‰ã€‚ + ã“ã®å ´åˆã«ã¯ã€ä¸å¤‰ã‹ã¤èª­ã¿å–り専用ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«ä¸Žãˆã‚‰ã‚ŒãŸSQLã®å‰¯å•åˆã›æ–‡ã‚’マップã§ãã¾ã™ã€‚ @@ -581,10 +582,10 @@ ]]> - ƒe[ƒuƒ‹‚ð‚±‚ÌƒGƒ“ƒeƒBƒeƒB‚Æ“¯Šú‚·‚é‚悤‚É’è‹`‚µ‚Ä‚­‚¾‚³‚¢B - ƒI[ƒgƒtƒ‰ƒbƒVƒ…‚ªŠmŽÀ‚É‹N‚±‚é‚悤‚ÉA‚Ü‚½“±oƒGƒ“ƒeƒBƒeƒB‚ɑ΂·‚éƒNƒGƒŠ‚ªŒÃ‚¢ƒf[ƒ^‚ð - •Ô‚³‚È‚¢‚悤‚É‚·‚邽‚ß‚Å‚·B - <subselect> ‚Í‘®«‚ƃlƒXƒg‚µ‚½ƒ}ƒbƒsƒ“ƒO‘®«‚Ì‚Ç‚¿‚ç‚Å‚à—˜—p‚Å‚«‚Ü‚·B + テーブルをã“ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨åŒæœŸã™ã‚‹ã‚ˆã†ã«å®šç¾©ã—ã¦ãã ã•ã„。 + オートフラッシュãŒç¢ºå®Ÿã«èµ·ã“るよã†ã«ã€ã¾ãŸå°Žå‡ºã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã™ã‚‹ã‚¯ã‚¨ãƒªãŒå¤ã„データを + è¿”ã•ãªã„よã†ã«ã™ã‚‹ãŸã‚ã§ã™ã€‚ + <subselect> ã¯å±žæ€§ã¨ãƒã‚¹ãƒˆã—ãŸãƒžãƒƒãƒ”ング属性ã®ã©ã¡ã‚‰ã§ã‚‚利用ã§ãã¾ã™ã€‚ @@ -593,9 +594,9 @@ id - ƒ}ƒbƒv‚³‚ꂽƒNƒ‰ƒX‚̓f[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚ð’è‹` ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ B - ‚Ù‚Æ‚ñ‚ǂ̃Nƒ‰ƒX‚ɂ̓Cƒ“ƒXƒ^ƒ“ƒX‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚ð•ÛŽ‚·‚éJavaBeansƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚à‚ ‚è‚Ü‚·B - <id> —v‘f‚ÍA‚»‚̃vƒƒpƒeƒB‚©‚çŽåƒL[ƒJƒ‰ƒ€‚ւ̃}ƒbƒsƒ“ƒO‚ð’è‹`‚µ‚Ü‚·B + マップã•ã‚ŒãŸã‚¯ãƒ©ã‚¹ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã®ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã‚’定義 ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ 。 + ã»ã¨ã‚“ã©ã®ã‚¯ãƒ©ã‚¹ã«ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã‚’ä¿æŒã™ã‚‹JavaBeansスタイルã®ãƒ—ロパティもã‚ã‚Šã¾ã™ã€‚ + <id> è¦ç´ ã¯ã€ãã®ãƒ—ロパティã‹ã‚‰ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã¸ã®ãƒžãƒƒãƒ”ングを定義ã—ã¾ã™ã€‚ @@ -619,60 +620,60 @@ - nameiƒIƒvƒVƒ‡ƒ“jFŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì–¼‘OB + name(オプション):識別å­ãƒ—ロパティã®åå‰ã€‚ - typeiƒIƒvƒVƒ‡ƒ“jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB + type(オプション):Hibernateã®åž‹ã‚’示ã™åå‰ã€‚ - columniƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF - ŽåƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB + column(オプション - デフォルトã¯ãƒ—ロパティå): + 主キーカラムã®åå‰ã€‚ - unsaved-valueiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Ì’l‚ÍsensiblejF - ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ - iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢j‚±‚Æ‚ðŽ¦‚·AŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì’lB - ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“IƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‹æ•Ê‚·‚邽‚ß‚É - Žg‚¢‚Ü‚·B + unsaved-value(オプション - デフォルトã®å€¤ã¯sensible): + インスタンスãŒæ–°ã—ãインスタンス化ã•ã‚ŒãŸ + (セーブã•ã‚Œã¦ã„ãªã„)ã“ã¨ã‚’示ã™ã€è­˜åˆ¥å­ãƒ—ロパティã®å€¤ã€‚ + 以å‰ã®Sessionã§ã‚»ãƒ¼ãƒ–ã¾ãŸã¯ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸä¸€æ™‚的インスタンスã¨åŒºåˆ¥ã™ã‚‹ãŸã‚ã« + 使ã„ã¾ã™ã€‚ - accessiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ÖƒAƒNƒZƒX‚·‚邽‚ß‚ÉHibernate‚ªŽg‚¤í—ª‚Å‚·B + access(オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã§ã™ã€‚ - name ‘®«‚ª‚È‚¯‚ê‚ÎAƒNƒ‰ƒX‚É‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚ª‚È‚¢‚à‚Ì‚Æ‚Ý‚È‚³‚ê‚Ü‚·B + name 属性ãŒãªã‘ã‚Œã°ã€ã‚¯ãƒ©ã‚¹ã«ã¯è­˜åˆ¥å­ãƒ—ロパティãŒãªã„ã‚‚ã®ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚ - unsaved-value ‘®«‚ÍHibernate3‚Å‚Í‚Ù‚Æ‚ñ‚Ç‚Ìê‡A•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + unsaved-value 属性ã¯Hibernate3ã§ã¯ã»ã¨ã‚“ã©ã®å ´åˆã€å¿…è¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - •¡‡ƒL[‚ðŽ‚ƒŒƒKƒV[ƒf[ƒ^‚ɃAƒNƒZƒX‚Å‚«‚é‚悤‚ÉA - <composite-id> ‚Æ‚¢‚¤‘ã‘ւ̃}ƒbƒsƒ“ƒO’è‹`‚ª‚ ‚è‚Ü‚·B - ‚µ‚©‚µ‘¼‚Ì—p“r‚Ö‚ÌŽg—p‚Í‘S‚­‚¨‚·‚·‚ß‚Å‚«‚Ü‚¹‚ñB + 複åˆã‚­ãƒ¼ã‚’æŒã¤ãƒ¬ã‚¬ã‚·ãƒ¼ãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã€ + <composite-id> ã¨ã„ã†ä»£æ›¿ã®ãƒžãƒƒãƒ”ング定義ãŒã‚ã‚Šã¾ã™ã€‚ + ã—ã‹ã—ä»–ã®ç”¨é€”ã¸ã®ä½¿ç”¨ã¯å…¨ããŠã™ã™ã‚ã§ãã¾ã›ã‚“。 - ƒWƒFƒlƒŒ[ƒ^ + ジェãƒãƒ¬ãƒ¼ã‚¿ - ƒIƒvƒVƒ‡ƒ“‚Ì <generator> Žq—v‘f‚ÍA - ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚𶬂·‚邽‚ß‚ÉŽg‚¤AJavaƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B - ƒWƒFƒlƒŒ[ƒ^ƒCƒ“ƒXƒ^ƒ“ƒX‚ÌÝ’èA‚à‚µ‚­‚͉Šú‰»‚Ƀpƒ‰ƒ[ƒ^‚ª•K—v‚Å‚ ‚ê‚ÎA<param> - —v‘f‚ðŽg‚Á‚Ä“n‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B + オプション㮠<generator> å­è¦ç´ ã¯ã€ + 永続クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã‚’生æˆã™ã‚‹ãŸã‚ã«ä½¿ã†ã€Javaクラスを指定ã—ã¾ã™ã€‚ + ジェãƒãƒ¬ãƒ¼ã‚¿ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®è¨­å®šã€ã‚‚ã—ãã¯åˆæœŸåŒ–ã«ãƒ‘ラメータãŒå¿…è¦ã§ã‚ã‚Œã°ã€<param> + è¦ç´ ã‚’使ã£ã¦æ¸¡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -683,11 +684,11 @@ ]]> - ‚·‚ׂẴWƒFƒlƒŒ[ƒ^‚ÍAƒCƒ“ƒ^[ƒtƒFƒCƒX - org.hibernate.id.IdentifierGenerator ‚ðŽÀ‘•‚µ‚Ü‚·B - ‚±‚ê‚Í‚Æ‚Ä‚à’Pƒ‚ȃCƒ“ƒ^[ƒtƒFƒCƒX‚È‚Ì‚ÅA“Á•Ê‚ÈŽÀ‘•‚ð“ÆŽ©‚É—pˆÓ‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚à‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚µ‚©‚µHibernate‚Í‘g‚Ýž‚Ý‚ÌŽÀ‘•‚ð‚¢‚­‚‚à—pˆÓ‚µ‚Ä‚¢‚Ü‚·B - ‘g‚Ýž‚݂̃WƒFƒlƒŒ[ƒ^‚ɂ͈ȉº‚̃Vƒ‡[ƒgƒJƒbƒg–¼‚ª‚ ‚è‚Ü‚·F + ã™ã¹ã¦ã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ + org.hibernate.id.IdentifierGenerator を実装ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ã¨ã¦ã‚‚å˜ç´”ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ãªã®ã§ã€ç‰¹åˆ¥ãªå®Ÿè£…を独自ã«ç”¨æ„ã™ã‚‹ã‚¢ãƒ—リケーションもã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã—ã‹ã—Hibernateã¯çµ„ã¿è¾¼ã¿ã®å®Ÿè£…ã‚’ã„ãã¤ã‚‚用æ„ã—ã¦ã„ã¾ã™ã€‚ + 組ã¿è¾¼ã¿ã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã«ã¯ä»¥ä¸‹ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆåãŒã‚ã‚Šã¾ã™ï¼š @@ -695,9 +696,9 @@ long , short , - int Œ^‚ÌŽ¯•ÊŽq‚𶬂µ‚Ü‚·B - ‚±‚ê‚ç‚Í‘¼‚̃vƒƒZƒX‚ª“¯‚¶ƒe[ƒuƒ‹‚Ƀf[ƒ^‚ð‘}“ü‚µ‚È‚¢‚Æ‚«‚¾‚¯ƒ†ƒj[ƒN‚Å‚·B - ƒNƒ‰ƒXƒ^“à‚Å‚ÍŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢ B + int åž‹ã®è­˜åˆ¥å­ã‚’生æˆã—ã¾ã™ã€‚ + ã“れらã¯ä»–ã®ãƒ—ロセスãŒåŒã˜ãƒ†ãƒ¼ãƒ–ルã«ãƒ‡ãƒ¼ã‚¿ã‚’挿入ã—ãªã„ã¨ãã ã‘ユニークã§ã™ã€‚ + クラスタ内ã§ã¯ä½¿ã‚ãªã„ã§ãã ã•ã„ 。 @@ -705,10 +706,10 @@ identity - DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL‚ÌŽ¯•ÊŽqƒJƒ‰ƒ€‚ð - ƒTƒ|[ƒg‚µ‚Ü‚·B - •Ô‚³‚ê‚鎯•ÊŽq‚ÌŒ^‚Í long , short , - int ‚Ì‚¢‚¸‚ê‚©‚Å‚·B + DB2, MySQL, MS SQL Server, Sybase, HypersonicSQLã®è­˜åˆ¥å­ã‚«ãƒ©ãƒ ã‚’ + サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ + è¿”ã•ã‚Œã‚‹è­˜åˆ¥å­ã®åž‹ã¯ long , short , + int ã®ã„ãšã‚Œã‹ã§ã™ã€‚ @@ -716,9 +717,9 @@ sequence - DB2, PostgreSQL, Oracle, SAP DB, McKoi‚̃V[ƒPƒ“ƒX‚âAInterbase‚̃WƒFƒlƒŒ[ƒ^‚ðŽg—p‚µ‚Ü‚·B - •Ô‚³‚ê‚鎯•ÊŽq‚ÌŒ^‚Í long , short , - int ‚Ì‚¢‚¸‚ê‚©‚Å‚·B + DB2, PostgreSQL, Oracle, SAP DB, McKoiã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚„ã€Interbaseã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã‚’使用ã—ã¾ã™ã€‚ + è¿”ã•ã‚Œã‚‹è­˜åˆ¥å­ã®åž‹ã¯ long , short , + int ã®ã„ãšã‚Œã‹ã§ã™ã€‚ @@ -727,11 +728,11 @@ long , short , - int Œ^‚ÌŽ¯•ÊŽq‚ðŒø—¦“I‚ɶ¬‚·‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg‚¢‚Ü‚·B - hi’l‚̃\[ƒX‚Æ‚µ‚ÄAƒe[ƒuƒ‹‚ƃJƒ‰ƒ€‚ð—^‚¦‚Ü‚·(ƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚ꂼ‚ê hibernate_unique_key ‚Æ - next_hi )B + int åž‹ã®è­˜åˆ¥å­ã‚’効率的ã«ç”Ÿæˆã™ã‚‹hi/loアルゴリズムを使ã„ã¾ã™ã€‚ + hi値ã®ã‚½ãƒ¼ã‚¹ã¨ã—ã¦ã€ãƒ†ãƒ¼ãƒ–ルã¨ã‚«ãƒ©ãƒ ã‚’与ãˆã¾ã™(デフォルトã§ã¯ãã‚Œãžã‚Œ hibernate_unique_key 㨠+ next_hi )。 - hi/loƒAƒ‹ƒSƒŠƒYƒ€‚Í“Á’è‚̃f[ƒ^ƒx[ƒX‚ɑ΂µ‚Ă̂݃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚𶬂µ‚Ü‚·B + hi/loアルゴリズムã¯ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã—ã¦ã®ã¿ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã‚’生æˆã—ã¾ã™ã€‚ @@ -740,8 +741,8 @@ long , short , - int Œ^‚ÌŽ¯•ÊŽq‚ðŒø—¦“I‚ɶ¬‚·‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg‚¢‚Ü‚·B - Žw’肳‚ꂽƒf[ƒ^ƒx[ƒXƒV[ƒPƒ“ƒX‚ð—^‚¦‚Ü‚·B + int åž‹ã®è­˜åˆ¥å­ã‚’効率的ã«ç”Ÿæˆã™ã‚‹hi/loアルゴリズムを使ã„ã¾ã™ã€‚ + 指定ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’与ãˆã¾ã™ã€‚ @@ -750,8 +751,8 @@ uuid - (IPƒAƒhƒŒƒX‚ªŽg—p‚³‚ê‚é)ƒlƒbƒgƒ[ƒN“à‚цƒj[ƒN‚È•¶Žš—ñŒ^‚ÌŽ¯•ÊŽq‚𶬂·‚邽‚ß‚ÉA - 128ƒrƒbƒg‚ÌUUIDƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg—p‚µ‚Ü‚·BUUID‚Í’·‚³32‚Ì16i”Žš‚Ì•¶Žš—ñ‚Æ‚µ‚ăGƒ“ƒR[ƒh‚³‚ê‚Ü‚·B + (IPアドレスãŒä½¿ç”¨ã•ã‚Œã‚‹)ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å†…ã§ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªæ–‡å­—列型ã®è­˜åˆ¥å­ã‚’生æˆã™ã‚‹ãŸã‚ã«ã€ + 128ビットã®UUIDアルゴリズムを使用ã—ã¾ã™ã€‚UUIDã¯é•·ã•32ã®16進数字ã®æ–‡å­—列ã¨ã—ã¦ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•ã‚Œã¾ã™ã€‚ @@ -759,7 +760,7 @@ guid - MS SQLƒT[ƒo‚ÆMySQL‚Ńf[ƒ^ƒx[ƒX‚ª¶¬‚·‚éGUID•¶Žš—ñ‚ðŽg—p‚µ‚Ü‚·B + MS SQLサーãƒã¨MySQLã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒç”Ÿæˆã™ã‚‹GUID文字列を使用ã—ã¾ã™ã€‚ @@ -767,8 +768,8 @@ native - Žg—p‚·‚éƒf[ƒ^ƒx[ƒX‚Ì«”\‚É‚æ‚è identity , sequence , - hilo ‚Ì‚¢‚¸‚ê‚©‚ª‘I‚΂ê‚Ü‚·B + 使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ€§èƒ½ã«ã‚ˆã‚Š identity , sequence , + hilo ã®ã„ãšã‚Œã‹ãŒé¸ã°ã‚Œã¾ã™ã€‚ @@ -776,9 +777,9 @@ assigned - save() ‚ªŒÄ‚΂ê‚é‘O‚ÉA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒIƒuƒWƒFƒNƒg‚ÉŽ¯•ÊŽq‚ð‘ã“ü‚Å‚«‚é‚悤‚É‚µ‚Ü‚·B - <generator> ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¯‚ê‚ÎA‚±‚ꂪƒfƒtƒHƒ‹ƒg‚Ìí—ª‚É‚È‚è‚Ü‚·B + save() ãŒå‘¼ã°ã‚Œã‚‹å‰ã«ã€ + アプリケーションãŒã‚ªãƒ–ジェクトã«è­˜åˆ¥å­ã‚’代入ã§ãるよã†ã«ã—ã¾ã™ã€‚ + <generator> ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã‘ã‚Œã°ã€ã“ã‚ŒãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æˆ¦ç•¥ã«ãªã‚Šã¾ã™ã€‚ @@ -786,8 +787,8 @@ select - ‚ ‚郆ƒj[ƒNƒL[‚É‚æ‚és‚Ì‘I‘ð‚ÆŽåƒL[‚Ì’l‚Ì•œŒ³‚É‚æ‚èA - ƒf[ƒ^ƒx[ƒXƒgƒŠƒK‚ªŠ„‚è“–‚Ä‚½ŽåƒL[‚ðŽæ“¾‚µ‚Ü‚·B + ã‚るユニークキーã«ã‚ˆã‚‹è¡Œã®é¸æŠžã¨ä¸»ã‚­ãƒ¼ã®å€¤ã®å¾©å…ƒã«ã‚ˆã‚Šã€ + データベーストリガãŒå‰²ã‚Šå½“ã¦ãŸä¸»ã‚­ãƒ¼ã‚’å–å¾—ã—ã¾ã™ã€‚ @@ -795,8 +796,8 @@ foreign - ‘¼‚ÌŠÖ˜AƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ðŽg‚¢‚Ü‚·B - •’Ê‚ÍA<one-to-one> ŽåƒL[ŠÖ˜A‚Æ‘g‚݇‚킹‚ÄŽg‚¢‚Ü‚·B + ä»–ã®é–¢é€£ã‚ªãƒ–ジェクトã®è­˜åˆ¥å­ã‚’使ã„ã¾ã™ã€‚ + 普通ã¯ã€<one-to-one> 主キー関連ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ã„ã¾ã™ã€‚ @@ -806,14 +807,14 @@ - Hi/lo ƒAƒ‹ƒSƒŠƒYƒ€ + Hi/lo アルゴリズム - hilo ‚Æ seqhilo ƒWƒFƒlƒŒ[ƒ^‚ÍA - Ž¯•ÊŽq¶¬‚Ì‘ã•\“I‚ȃAƒvƒ[ƒ`‚Å‚ ‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚Ì2‚‚̑ã‘ÖŽÀ‘•‚ð’ñ‹Ÿ‚µ‚Ü‚·B + hilo 㨠seqhilo ジェãƒãƒ¬ãƒ¼ã‚¿ã¯ã€ + 識別å­ç”Ÿæˆã®ä»£è¡¨çš„ãªã‚¢ãƒ—ローãƒã§ã‚ã‚‹hi/loアルゴリズムã®2ã¤ã®ä»£æ›¿å®Ÿè£…ã‚’æä¾›ã—ã¾ã™ã€‚ - 1”Ô–Ú‚ÌŽÀ‘•‚ÍAŽŸ‰ñ‚É—˜—p‚³‚ê‚é"hi"’l‚ð•ÛŽ‚·‚éu“Á•Ê‚Èvƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ð - •K—v‚Æ‚µ‚Ü‚·B - 2”Ô–Ú‚ÌŽÀ‘•‚ÍAOracleƒXƒ^ƒCƒ‹‚̃V[ƒPƒ“ƒX‚ðŽg‚¢‚Ü‚·iƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚éê‡jB + 1番目ã®å®Ÿè£…ã¯ã€æ¬¡å›žã«åˆ©ç”¨ã•ã‚Œã‚‹"hi"値をä¿æŒã™ã‚‹ã€Œç‰¹åˆ¥ãªã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルを + å¿…è¦ã¨ã—ã¾ã™ã€‚ + 2番目ã®å®Ÿè£…ã¯ã€Oracleスタイルã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã‚’使ã„ã¾ã™ï¼ˆã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã‚‹å ´åˆï¼‰ã€‚ @@ -832,31 +833,31 @@ ]]> - Žc”O‚È‚ª‚çHibernate‚Ö‚Ì“ÆŽ©‚Ì Connection ‚ð’ñ‹Ÿ‚·‚é‚Æ‚«‚É‚ÍAhilo ‚ðŽg‚¦‚Ü‚¹‚ñB - Hibernate‚ªJTA‚ŃŠƒXƒg‚³‚ê‚Ä‚¢‚éÚ‘±‚ðŽæ“¾‚·‚邽‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚̃f[ƒ^ƒ\[ƒX‚ðŽg—p‚µ‚Ä‚¢‚é‚Æ‚«‚É‚ÍA - hibernate.transaction.manager_lookup_class ‚ð“KØ‚Éݒ肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 残念ãªãŒã‚‰Hibernateã¸ã®ç‹¬è‡ªã® Connection ã‚’æä¾›ã™ã‚‹ã¨ãã«ã¯ã€hilo を使ãˆã¾ã›ã‚“。 + HibernateãŒJTAã§ãƒªã‚¹ãƒˆã•ã‚Œã¦ã„る接続をå–å¾—ã™ã‚‹ãŸã‚ã«ã‚¢ãƒ—リケーションサーãƒãƒ¼ã®ãƒ‡ãƒ¼ã‚¿ã‚½ãƒ¼ã‚¹ã‚’使用ã—ã¦ã„ã‚‹ã¨ãã«ã¯ã€ + hibernate.transaction.manager_lookup_class ã‚’é©åˆ‡ã«è¨­å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - UUID ƒAƒ‹ƒSƒŠƒYƒ€ + UUID アルゴリズム - UUID‚ɂ͈ȉº‚Ì‚à‚Ì‚ªŠÜ‚Ü‚ê‚Ü‚·F - IPƒAƒhƒŒƒXAJVM‚̃Xƒ^[ƒgƒAƒbƒvƒ^ƒCƒ€i4•ª‚Ì1•b‚̳Šm‚³jA - ƒVƒXƒeƒ€ŽžŠÔAiJVM‚ɑ΂µ‚ă†ƒj[ƒN‚ÈjƒJƒEƒ“ƒ^’lB - JavaƒR[ƒh‚©‚çMACƒAƒhƒŒƒX‚⃃‚ƒŠƒAƒhƒŒƒX‚ðŽæ“¾‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢‚Ì‚ÅA - JNI‚ªŽg‚¦‚È‚¢‚Æ‚«‚ÌÅ—Ç‚Ì•û–@‚Å‚·B + UUIDã«ã¯ä»¥ä¸‹ã®ã‚‚ã®ãŒå«ã¾ã‚Œã¾ã™ï¼š + IPアドレスã€JVMã®ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—タイム(4分ã®1秒ã®æ­£ç¢ºã•ï¼‰ã€ + システム時間ã€ï¼ˆJVMã«å¯¾ã—ã¦ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªï¼‰ã‚«ã‚¦ãƒ³ã‚¿å€¤ã€‚ + Javaコードã‹ã‚‰MACアドレスやメモリアドレスをå–å¾—ã™ã‚‹ã“ã¨ã¯ã§ããªã„ã®ã§ã€ + JNIãŒä½¿ãˆãªã„ã¨ãã®æœ€è‰¯ã®æ–¹æ³•ã§ã™ã€‚ - Ž¯•ÊŽqƒJƒ‰ƒ€‚ƃV[ƒPƒ“ƒX + 識別å­ã‚«ãƒ©ãƒ ã¨ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ - Ž¯•ÊŽqƒJƒ‰ƒ€‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒXiDB2, MySQL, Sybase, MS SQLj‚Å‚ÍA - identity ƒL[¶¬‚ðŽg‚¦‚Ü‚·B - ƒV[ƒPƒ“ƒX‚ðƒTƒ|[ƒg‚·‚éƒf[ƒ^ƒx[ƒXiDB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DBj‚Å‚ÍA - sequence ƒXƒ^ƒCƒ‹‚̃L[¶¬‚ðŽg‚¦‚Ü‚·B - ‚Ç‚¿‚ç‚Ìí—ª‚àAV‚µ‚¢ƒIƒuƒWƒFƒNƒg‚ð‘}“ü‚·‚邽‚ß‚ÉASQLƒNƒGƒŠ‚ð2‚•K—v‚Æ‚µ‚Ü‚·B + 識別å­ã‚«ãƒ©ãƒ ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„るデータベース(DB2, MySQL, Sybase, MS SQL)ã§ã¯ã€ + identity キー生æˆã‚’使ãˆã¾ã™ã€‚ + シーケンスをサãƒãƒ¼ãƒˆã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ï¼ˆDB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)ã§ã¯ã€ + sequence スタイルã®ã‚­ãƒ¼ç”Ÿæˆã‚’使ãˆã¾ã™ã€‚ + ã©ã¡ã‚‰ã®æˆ¦ç•¥ã‚‚ã€æ–°ã—ã„オブジェクトを挿入ã™ã‚‹ãŸã‚ã«ã€SQLクエリを2ã¤å¿…è¦ã¨ã—ã¾ã™ã€‚ @@ -870,36 +871,36 @@ ]]> - ƒNƒƒXƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ÌŠJ”­‚Å‚ÍAnative í—ª‚Í + クロスプラットフォームã®é–‹ç™ºã§ã¯ã€native 戦略㯠identity , sequence , - hilo í—ª‚Ì’†‚©‚ç1‚‚ð‘I‘ð‚µ‚Ü‚·‚ªA - ‚±‚ê‚ÍŽg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚Ì”\—͂Ɉˑ¶‚µ‚Ü‚·B + hilo 戦略ã®ä¸­ã‹ã‚‰1ã¤ã‚’é¸æŠžã—ã¾ã™ãŒã€ + ã“ã‚Œã¯ä½¿ç”¨ã—ã¦ã„るデータベースã®èƒ½åŠ›ã«ä¾å­˜ã—ã¾ã™ã€‚ - Ž¯•ÊŽq‚ÌŠ„‚è“–‚Ä + 識別å­ã®å‰²ã‚Šå½“㦠- ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŽ¯•ÊŽq‚ðŠ„‚è“–‚Ä‚³‚¹‚½‚¢‚Ì‚Å‚ ‚ê‚Î(Hibernate‚ª¶¬‚·‚é‚à‚Ì‚Å‚Í‚È‚­jA - assigned ƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚Ì“Á•Ê‚ȃWƒFƒlƒŒ[ƒ^‚ÍA‚·‚łɃIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽqƒvƒƒpƒeƒB‚É‘ã“ü‚³‚ꂽ’l‚ð - Ž¯•ÊŽq‚ÉŽg‚¢‚Ü‚·B‚±‚̃WƒFƒlƒŒ[ƒ^‚ÍŽåƒL[‚ª‘ã—ƒL[‚Ì‘ã‚í‚è‚ÉŽ©‘RƒL[‚Å‚ ‚éꇂɎg—p‚µ‚Ü‚·B - <generator> —v‘f‚ðŽw’肵‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg‚Ì“®ì‚É‚È‚è‚Ü‚·B + アプリケーションã«è­˜åˆ¥å­ã‚’割り当ã¦ã•ã›ãŸã„ã®ã§ã‚ã‚Œã°(HibernateãŒç”Ÿæˆã™ã‚‹ã‚‚ã®ã§ã¯ãªã)〠+ assigned ジェãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã®ç‰¹åˆ¥ãªã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã¯ã€ã™ã§ã«ã‚ªãƒ–ジェクトã®è­˜åˆ¥å­ãƒ—ロパティã«ä»£å…¥ã•ã‚ŒãŸå€¤ã‚’ + 識別å­ã«ä½¿ã„ã¾ã™ã€‚ã“ã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã¯ä¸»ã‚­ãƒ¼ãŒä»£ç†ã‚­ãƒ¼ã®ä»£ã‚ã‚Šã«è‡ªç„¶ã‚­ãƒ¼ã§ã‚ã‚‹å ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚ + <generator> è¦ç´ ã‚’指定ã—ãªã„å ´åˆã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‹•ä½œã«ãªã‚Šã¾ã™ã€‚ - assigned ƒWƒFƒlƒŒ[ƒ^‚ð‘I‘ð‚·‚é‚ÆA - Hibernate‚Í unsaved-value="undefined" ‚ðŽg—p‚µ‚Ü‚·B - ‚»‚µ‚ÄAƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ª‚È‚¢ê‡‚â Interceptor.isUnsaved() - ‚ð’è‹`‚µ‚È‚©‚Á‚½ê‡‚É‚ÍAƒCƒ“ƒXƒ^ƒ“ƒX‚ªˆêŽž“I(transient)‚È‚à‚Ì‚Å‚ ‚é‚Ì‚©A - ‚Ü‚½‚̓ZƒbƒVƒ‡ƒ“‚©‚番—£(detached)‚µ‚½‚à‚Ì‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚é‚½‚ß‚ÉAƒf[ƒ^ƒx[ƒX‚𒲂ׂ܂·B + assigned ジェãƒãƒ¬ãƒ¼ã‚¿ã‚’é¸æŠžã™ã‚‹ã¨ã€ + Hibernate㯠unsaved-value="undefined" を使用ã—ã¾ã™ã€‚ + ãã—ã¦ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„タイムスタンプã®ãƒ—ロパティãŒãªã„å ´åˆã‚„ Interceptor.isUnsaved() + を定義ã—ãªã‹ã£ãŸå ´åˆã«ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒä¸€æ™‚çš„(transient)ãªã‚‚ã®ã§ã‚ã‚‹ã®ã‹ã€ + ã¾ãŸã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‹ã‚‰åˆ†é›¢(detached)ã—ãŸã‚‚ã®ã‹ã©ã†ã‹ã‚’決ã‚ã‚‹ãŸã‚ã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’調ã¹ã¾ã™ã€‚ - ƒgƒŠƒK‚É‚æ‚芄‚è“–‚Ä‚ç‚ꂽŽåƒL[ + トリガã«ã‚ˆã‚Šå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸä¸»ã‚­ãƒ¼ - ƒŒƒKƒV[ƒXƒL[ƒ}‚Ì‚½‚ß‚É‚Ì‚ÝŽw’肵‚Ü‚·(Hibernate‚̓gƒŠƒK‚ðŽg‚Á‚ÄDDL‚𶬂µ‚Ü‚¹‚ñ)B + レガシースキーマã®ãŸã‚ã«ã®ã¿æŒ‡å®šã—ã¾ã™(Hibernateã¯ãƒˆãƒªã‚¬ã‚’使ã£ã¦DDLを生æˆã—ã¾ã›ã‚“)。 @@ -909,9 +910,9 @@ ]]> - ã‚Ì—á‚Ì’†‚ÅAƒNƒ‰ƒX‚ÅŽ©‘RƒL[‚Æ‚µ‚Ä’è‹`‚³‚ꂽ - socialSecurityNumber ‚Æ‚¢‚¤–¼‘O‚̃†ƒj[ƒN‚È’l‚̃vƒƒpƒeƒB‚ÆA - ’l‚ªƒgƒŠƒK‚É‚æ‚趬‚³‚ê‚é person_id ‚Æ‚¢‚¤–¼‘O‚Ì‘ã—ƒL[‚ª‚ ‚è‚Ü‚·B + 上ã®ä¾‹ã®ä¸­ã§ã€ã‚¯ãƒ©ã‚¹ã§è‡ªç„¶ã‚­ãƒ¼ã¨ã—ã¦å®šç¾©ã•ã‚ŒãŸ + socialSecurityNumber ã¨ã„ã†åå‰ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªå€¤ã®ãƒ—ロパティã¨ã€ + 値ãŒãƒˆãƒªã‚¬ã«ã‚ˆã‚Šç”Ÿæˆã•ã‚Œã‚‹ person_id ã¨ã„ã†åå‰ã®ä»£ç†ã‚­ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚ @@ -934,11 +935,11 @@ ]]> - •¡‡ƒL[‚Ì‚ ‚éƒe[ƒuƒ‹‚ɑ΂µA - Ž¯•ÊŽqƒvƒƒpƒeƒB‚Æ‚µ‚ăNƒ‰ƒX‚Ì•¡”‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - <composite-id> —v‘f‚ÍAŽq—v‘f‚Æ‚µ‚Ä - <key-property> ƒvƒƒpƒeƒBƒ}ƒbƒsƒ“ƒO‚Æ - <key-many-to-one> ƒ}ƒbƒsƒ“ƒO‚ðŽó‚¯“ü‚ê‚Ü‚·B + 複åˆã‚­ãƒ¼ã®ã‚るテーブルã«å¯¾ã—〠+ 識別å­ãƒ—ロパティã¨ã—ã¦ã‚¯ãƒ©ã‚¹ã®è¤‡æ•°ã®ãƒ—ロパティをマッピングã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + <composite-id> è¦ç´ ã¯ã€å­è¦ç´ ã¨ã—㦠+ <key-property> プロパティマッピング㨠+ <key-many-to-one> マッピングをå—ã‘入れã¾ã™ã€‚ @@ -947,27 +948,27 @@ ]]> - •¡‡Ž¯•ÊŽq‚Ì“™‰¿«‚ðŽÀ‘•‚·‚邽‚ß‚É‚ÍA‰i‘±ƒNƒ‰ƒX‚ª equals() ‚Æ - hashCode() ‚ðƒI[ƒo[ƒ‰ƒCƒh ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ B - ‚Ü‚½ Serializable ‚àŽÀ‘•‚µ‚È‚¯‚ê‚΂¢‚¯‚Ü‚¹‚ñB + 複åˆè­˜åˆ¥å­ã®ç­‰ä¾¡æ€§ã‚’実装ã™ã‚‹ãŸã‚ã«ã¯ã€æ°¸ç¶šã‚¯ãƒ©ã‚¹ãŒ equals() 㨠+ hashCode() をオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ 。 + ã¾ãŸ Serializable も実装ã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。 - Žc”O‚È‚ª‚ç•¡‡Ž¯•ÊŽq‚Ì‚½‚ß‚Ì‚±‚Ì•û–@‚ÍA - ‰i‘±ƒIƒuƒWƒFƒNƒg‚ªŽ©g‚ÌŽ¯•ÊŽq‚Å‚ ‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B - ƒIƒuƒWƒFƒNƒgŽ©g‚ðŽ¯•ÊŽq‚Æ‚·‚éˆÈã‚Ì•Ö—˜‚Èuˆµ‚¢•ûv‚Í‚ ‚è‚Ü‚¹‚ñB - •¡‡ƒL[‚ÉŠÖ˜A‚µ‚½‰i‘±ó‘Ô‚ð load() o—ˆ‚é‚悤‚É‚È‚é‘O‚ÉA - ‰i‘±ƒNƒ‰ƒXŽ©g‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µAŽ¯•ÊŽqƒvƒƒpƒeƒB‚ðݒ肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‘g‚Ýž‚Ý‚Ì •¡‡Ž¯•ÊŽq‚ƌĂ΂ê‚邱‚̃Aƒvƒ[ƒ`‚ÍA - –{Ši“I‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒü‚¢‚Ä‚¢‚Ü‚¹‚ñB + 残念ãªãŒã‚‰è¤‡åˆè­˜åˆ¥å­ã®ãŸã‚ã®ã“ã®æ–¹æ³•ã¯ã€ + 永続オブジェクトãŒè‡ªèº«ã®è­˜åˆ¥å­ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ + オブジェクト自身を識別å­ã¨ã™ã‚‹ä»¥ä¸Šã®ä¾¿åˆ©ãªã€Œæ‰±ã„æ–¹ã€ã¯ã‚ã‚Šã¾ã›ã‚“。 + 複åˆã‚­ãƒ¼ã«é–¢é€£ã—ãŸæ°¸ç¶šçŠ¶æ…‹ã‚’ load() 出æ¥ã‚‹ã‚ˆã†ã«ãªã‚‹å‰ã«ã€ + 永続クラス自身をインスタンス化ã—ã€è­˜åˆ¥å­ãƒ—ロパティを設定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 組ã¿è¾¼ã¿ã® 複åˆè­˜åˆ¥å­ã¨å‘¼ã°ã‚Œã‚‹ã“ã®ã‚¢ãƒ—ローãƒã¯ã€ + 本格的ãªã‚¢ãƒ—リケーションã«ã¯å‘ã„ã¦ã„ã¾ã›ã‚“。 - 2‚–ڂ̕û–@‚Í ƒ}ƒbƒv‚³‚ꂽ •¡‡Ž¯•ÊŽq‚ƌĂ΂ê‚é‚à‚Ì‚ÅA - <composite-id>ƒGƒŒƒƒ“ƒg“à‚ÅŽw’肵‚½Ž¯•ÊƒvƒƒpƒeƒB‚ª - ‰i‘±ƒNƒ‰ƒX‚Æ•ª—£‚µ‚½Ž¯•ÊŽqƒNƒ‰ƒX‚Ì—¼•û‚Éd•¡‚µ‚Ä‘¶Ý‚µ‚Ü‚·B + 2ã¤ç›®ã®æ–¹æ³•ã¯ マップã•ã‚ŒãŸ 複åˆè­˜åˆ¥å­ã¨å‘¼ã°ã‚Œã‚‹ã‚‚ã®ã§ã€ + <composite-id>エレメント内ã§æŒ‡å®šã—ãŸè­˜åˆ¥ãƒ—ロパティ㌠+ 永続クラスã¨åˆ†é›¢ã—ãŸè­˜åˆ¥å­ã‚¯ãƒ©ã‚¹ã®ä¸¡æ–¹ã«é‡è¤‡ã—ã¦å­˜åœ¨ã—ã¾ã™ã€‚ @@ -976,65 +977,65 @@ ]]> - ‚±‚Ì—á‚Å‚ÍA•¡‡Ž¯•ÊŽqƒNƒ‰ƒXi MedicareId j‚ƃGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXŽ©g‚Ì—¼•û‚ªA - medicareNumber ‚Æ dependent ‚Æ‚¢‚¤–¼‘O‚̃vƒƒpƒeƒB‚ðŽ‚¿‚Ü‚·B - Ž¯•ÊŽqƒNƒ‰ƒX‚ÍAequals() ‚Æ hashCode() ‚ðƒI[ƒoƒ‰ƒCƒh‚µA - Serializable ‚ðŽÀ‘•‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB - ‚±‚Ì•û–@‚É‚ÍA–¾‚ç‚©‚ɃR[ƒh‚ªd•¡‚·‚é‚Æ‚¢‚¤•s“s‡‚ª‚ ‚è‚Ü‚·B + ã“ã®ä¾‹ã§ã¯ã€è¤‡åˆè­˜åˆ¥å­ã‚¯ãƒ©ã‚¹ï¼ˆ MedicareId )ã¨ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹è‡ªèº«ã®ä¸¡æ–¹ãŒã€ + medicareNumber 㨠dependent ã¨ã„ã†åå‰ã®ãƒ—ロパティをæŒã¡ã¾ã™ã€‚ + 識別å­ã‚¯ãƒ©ã‚¹ã¯ã€equals() 㨠hashCode() をオーãƒãƒ©ã‚¤ãƒ‰ã—〠+ Serializable を実装ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。 + ã“ã®æ–¹æ³•ã«ã¯ã€æ˜Žã‚‰ã‹ã«ã‚³ãƒ¼ãƒ‰ãŒé‡è¤‡ã™ã‚‹ã¨ã„ã†ä¸éƒ½åˆãŒã‚ã‚Šã¾ã™ã€‚ - ŽŸ‚Ì‘®«‚̓}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚ðŽw’è‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B + 次ã®å±žæ€§ã¯ãƒžãƒƒãƒ”ングã—ãŸè¤‡åˆè­˜åˆ¥å­ã‚’指定ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ - mapped (ƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚Í false ): - ƒ}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚ªŽg—p‚³‚ê‚邱‚Æ‚ÆA•ïŠÜ‚³‚ꂽƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚ªA - ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚Æ•¡‡Ž¯•ÊŽqƒNƒ‰ƒX‚Ì—¼•û‚ðŽQÆ‚·‚邱‚Æ‚ðŽ¦‚µ‚Ü‚·B + mapped (オプションã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ false ): + マッピングã—ãŸè¤‡åˆè­˜åˆ¥å­ãŒä½¿ç”¨ã•ã‚Œã‚‹ã“ã¨ã¨ã€åŒ…å«ã•ã‚ŒãŸãƒ—ロパティã®ãƒžãƒƒãƒ”ングãŒã€ + エンティティクラスã¨è¤‡åˆè­˜åˆ¥å­ã‚¯ãƒ©ã‚¹ã®ä¸¡æ–¹ã‚’å‚ç…§ã™ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ - class (ƒIƒvƒVƒ‡ƒ“,‚½‚¾‚µƒ}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚É‚Í•K{): - •¡‡Ž¯•ÊŽq‚Æ‚µ‚ÄŽg—p‚·‚éƒNƒ‰ƒXB + class (オプション,ãŸã ã—マッピングã—ãŸè¤‡åˆè­˜åˆ¥å­ã«ã¯å¿…é ˆ): + 複åˆè­˜åˆ¥å­ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¹ã€‚ - 3‚–ڂ̂³‚ç‚É•Ö—˜‚È•û–@‚ÍA•¡‡Ž¯•ÊŽq‚ð“à‚Ì - ƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚Æ‚µ‚ÄŽÀ‘•‚·‚邱‚Æ‚Å‚·B - ‰º‚Å‹Lq‚µ‚Ä‚¢‚é‘®«‚ÍA‚±‚Ì‘ã‘Ö•û–@‚É‚Ì‚Ý“K—p‚³‚ê‚Ü‚·B + 3ã¤ç›®ã®ã•ã‚‰ã«ä¾¿åˆ©ãªæ–¹æ³•ã¯ã€è¤‡åˆè­˜åˆ¥å­ã‚’内㮠+ コンãƒãƒ¼ãƒãƒ³ãƒˆã‚¯ãƒ©ã‚¹ã¨ã—ã¦å®Ÿè£…ã™ã‚‹ã“ã¨ã§ã™ã€‚ + 下ã§è¨˜è¿°ã—ã¦ã„る属性ã¯ã€ã“ã®ä»£æ›¿æ–¹æ³•ã«ã®ã¿é©ç”¨ã•ã‚Œã¾ã™ã€‚ - name (ƒIƒvƒVƒ‡ƒ“, ‚±‚̃Aƒvƒ[ƒ`‚Å‚Í•K{): - •¡‡Ž¯•ÊŽq‚ð•ÛŽ‚·‚éƒRƒ“ƒ|[ƒlƒ“ƒgƒ^ƒCƒv‚̃vƒƒpƒeƒB(9Í‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢). + name (オプション, ã“ã®ã‚¢ãƒ—ローãƒã§ã¯å¿…é ˆ): + 複åˆè­˜åˆ¥å­ã‚’ä¿æŒã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚¿ã‚¤ãƒ—ã®ãƒ—ロパティ(9ç« ã‚’å‚ç…§ã—ã¦ãã ã•ã„). - access (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property ): - Hibernate‚ªƒvƒƒpƒeƒB‚Ì’l‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg—p‚·‚ׂ«í—ªB + access (オプション - デフォルト㯠property ): + HibernateãŒãƒ—ロパティã®å€¤ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã¹ã戦略。 class - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF - •¡‡Ž¯•ÊŽq‚Æ‚µ‚ÄŽg‚í‚ê‚éƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Nƒ‰ƒXiŽŸ‚Ìß‚ðŒ©‚Ä‚­‚¾‚³‚¢jB + (オプション - デフォルトã¯ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ˆã‚Šæ±ºå®šã•ã‚Œã‚‹ãƒ—ロパティã®åž‹ï¼‰ï¼š + 複åˆè­˜åˆ¥å­ã¨ã—ã¦ä½¿ã‚れるコンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¯ãƒ©ã‚¹ï¼ˆæ¬¡ã®ç¯€ã‚’見ã¦ãã ã•ã„)。 - ‚±‚Ì3‚–ڂ̕û–@‚Í Ž¯•ÊŽqƒRƒ“ƒ|[ƒlƒ“ƒg ‚ƌĂÑA - ‚Ù‚Æ‚ñ‚Ç‚·‚ׂẴAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚Ä„§‚·‚é•û–@‚Å‚·B + ã“ã®3ã¤ç›®ã®æ–¹æ³•ã¯ 識別å­ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ ã¨å‘¼ã³ã€ + ã»ã¨ã‚“ã©ã™ã¹ã¦ã®ã‚¢ãƒ—リケーションã«å¯¾ã—ã¦æŽ¨å¥¨ã™ã‚‹æ–¹æ³•ã§ã™ã€‚ @@ -1043,12 +1044,12 @@ discriminator - <discriminator> —v‘f‚ÍA - table-per-class-hierarchyƒ}ƒbƒsƒ“ƒOí—ª‚ðŽg‚¤ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚É•K—v‚Å‚ ‚èA - ƒe[ƒuƒ‹‚ÌŽ¯•ÊƒJƒ‰ƒ€‚ð’è‹`‚µ‚Ü‚·B - Ž¯•ÊƒJƒ‰ƒ€‚ÍA‚ ‚és‚ɑ΂µ‚ĉi‘±‘w‚ª‚ǂ̃TƒuƒNƒ‰ƒX‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚·‚é‚©‚ð - “`‚¦‚éƒ}[ƒJ[’l‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B - ˆÈ‰º‚̂悤‚ÈŒ^‚ɧŒÀ‚³‚ê‚Ü‚·F string , character , + <discriminator> è¦ç´ ã¯ã€ + table-per-class-hierarchyマッピング戦略を使ã†ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªæ°¸ç¶šåŒ–ã«å¿…è¦ã§ã‚り〠+ テーブルã®è­˜åˆ¥ã‚«ãƒ©ãƒ ã‚’定義ã—ã¾ã™ã€‚ + 識別カラムã¯ã€ã‚ã‚‹è¡Œã«å¯¾ã—ã¦æ°¸ç¶šå±¤ãŒã©ã®ã‚µãƒ–クラスをインスタンス化ã™ã‚‹ã‹ã‚’ + ä¼ãˆã‚‹ãƒžãƒ¼ã‚«ãƒ¼å€¤ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚ + 以下ã®ã‚ˆã†ãªåž‹ã«åˆ¶é™ã•ã‚Œã¾ã™ï¼š string , character , integer, byte , short , boolean , yes_no , true_false. @@ -1072,56 +1073,56 @@ - columniƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í class jF - Ž¯•ÊƒJƒ‰ƒ€‚Ì–¼‘OB + column(オプション - デフォルト㯠class ): + 識別カラムã®åå‰ã€‚ type - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í string jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB + (オプション - デフォルト㯠string ):Hibernateã®åž‹ã‚’示ã™åå‰ã€‚ force - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í false jF - ƒ‹[ƒgƒNƒ‰ƒX‚Ì‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ðŒŸõ‚·‚éꇂł ‚Á‚Ä‚àA - Hibernate‚ªŽg—p‚Å‚«‚鎯•ÊƒJƒ‰ƒ€‚ÌŽw’è‚ðu‹­§v‚µ‚Ü‚·B + (オプション - デフォルト㯠false ): + ルートクラスã®ã™ã¹ã¦ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’検索ã™ã‚‹å ´åˆã§ã‚ã£ã¦ã‚‚〠+ HibernateãŒä½¿ç”¨ã§ãる識別カラムã®æŒ‡å®šã‚’「強制ã€ã—ã¾ã™ã€‚ insert - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true jF - ‚à‚µŽ¯•ÊƒJƒ‰ƒ€‚ªƒ}ƒbƒsƒ“ƒO‚·‚é•¡‡Ž¯•ÊŽq‚̈ꕔ‚È‚ç‚ÎAfalse ‚Æݒ肵‚Ä‚­‚¾‚³‚¢B - (Hibernate‚ÉSQL‚Ì INSERT ‚É‚ÍŠÜ‚Ü‚ê‚È‚¢‚±‚Æ‚ð’m‚点‚é) + (オプション - デフォルト㯠true ): + ã‚‚ã—識別カラムãŒãƒžãƒƒãƒ”ングã™ã‚‹è¤‡åˆè­˜åˆ¥å­ã®ä¸€éƒ¨ãªã‚‰ã°ã€false ã¨è¨­å®šã—ã¦ãã ã•ã„。 + (Hibernateã«SQLã® INSERT ã«ã¯å«ã¾ã‚Œãªã„ã“ã¨ã‚’知らã›ã‚‹) - formula (ƒIƒvƒVƒ‡ƒ“)Œ^‚ª•]‰¿‚³‚ê‚é‚Æ‚«‚ÉŽÀs‚³‚ê‚é”CˆÓ‚ÌSQLŽ®B - ƒRƒ“ƒeƒ“ƒcƒx[ƒX‚ÌŽ¯•Ê‚ð‰Â”\‚É‚µ‚Ü‚·B + formula (オプション)åž‹ãŒè©•ä¾¡ã•ã‚Œã‚‹ã¨ãã«å®Ÿè¡Œã•ã‚Œã‚‹ä»»æ„ã®SQLå¼ã€‚ + コンテンツベースã®è­˜åˆ¥ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ - Ž¯•ÊƒJƒ‰ƒ€‚ÌŽÀÛ‚Ì’l‚ÍA <class> ‚Æ - <subclass> —v‘f‚Ì - discriminator-value ‘®«‚ÅŽw’肳‚ê‚Ü‚·B + 識別カラムã®å®Ÿéš›ã®å€¤ã¯ã€ <class> 㨠+ <subclass> è¦ç´ ã® + discriminator-value 属性ã§æŒ‡å®šã•ã‚Œã¾ã™ã€‚ - ‰i‘±ƒNƒ‰ƒX‚Öƒ}ƒbƒsƒ“ƒO‚³‚ê‚È‚¢¢—]•ª‚ÈvŽ¯•Ê’l‚ðŽ‚Âs‚ª - ƒe[ƒuƒ‹‚É‚ ‚ê‚ÎAi‚»‚Ì‚Æ‚«‚ÉŒÀ‚èjforce ‘®«‚Í—LŒø‚Å‚·B - ‚½‚¾‚µA•’Ê‚Í‚»‚¤‚¢‚¤‚±‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB + 永続クラスã¸ãƒžãƒƒãƒ”ングã•ã‚Œãªã„「余分ãªã€è­˜åˆ¥å€¤ã‚’æŒã¤è¡ŒãŒ + テーブルã«ã‚ã‚Œã°ã€ï¼ˆãã®ã¨ãã«é™ã‚Šï¼‰force 属性ã¯æœ‰åŠ¹ã§ã™ã€‚ + ãŸã ã—ã€æ™®é€šã¯ãã†ã„ã†ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 - formula ‘®«‚ðŽg‚¤‚ÆAs‚ÌŒ^‚ð•]‰¿‚·‚邽‚ß‚É”CˆÓ‚ÌSQLŽ®‚ð錾‚Å‚«‚Ü‚·B + formula 属性を使ã†ã¨ã€è¡Œã®åž‹ã‚’評価ã™ã‚‹ãŸã‚ã«ä»»æ„ã®SQLå¼ã‚’宣言ã§ãã¾ã™ã€‚ - versioniƒIƒvƒVƒ‡ƒ“j + version(オプション) - <version> —v‘f‚̓IƒvƒVƒ‡ƒ“‚Å‚ ‚èA - ƒe[ƒuƒ‹‚ªƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚ðŠÜ‚Þ‚±‚Æ‚ðŽ¦‚µ‚Ü‚·B - ‚±‚ê‚Í ƒƒ“ƒOƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ - ‚ðŽg‚¤‚‚à‚è‚È‚çA“Á‚ɖ𗧂¿‚Ü‚·iˆÈ‰º‚ðŒ©‚Ä‚­‚¾‚³‚¢jB + <version> è¦ç´ ã¯ã‚ªãƒ—ションã§ã‚り〠+ テーブルãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚€ã“ã¨ã‚’示ã—ã¾ã™ã€‚ + ã“れ㯠ロングトランザクション + を使ã†ã¤ã‚‚ã‚Šãªã‚‰ã€ç‰¹ã«å½¹ç«‹ã¡ã¾ã™ï¼ˆä»¥ä¸‹ã‚’見ã¦ãã ã•ã„)。 @@ -1163,85 +1164,85 @@ - columniƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼j: - ƒo[ƒWƒ‡ƒ“”Ô†‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB + column(オプション - デフォルトã¯ãƒ—ロパティå): + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’ä¿æŒã™ã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã€‚ - name F‰i‘±ƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚Ì–¼‘OB + name :永続クラスã®ãƒ—ロパティã®åå‰ã€‚ type - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í integer jFƒo[ƒWƒ‡ƒ“”Ô†‚ÌŒ^B + (オプション - デフォルト㯠integer ):ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã®åž‹ã€‚ access - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + (オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ unsaved-value - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í undefined jF - ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚±‚Æ‚ðŽ¦‚· - iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŽ¦‚·jƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒB‚Ì’lB - ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚Æ‹æ•Ê‚·‚邽‚ß‚É - Žg‚¢‚Ü‚·B - i undefined ‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì’l‚ªŽg‚í‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·Bj + (オプション - デフォルト㯠undefined ): + インスタンスãŒæ–°ã—ãインスタンス化ã•ã‚ŒãŸã“ã¨ã‚’示㙠+ (セーブã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’示ã™ï¼‰ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ—ロパティã®å€¤ã€‚ + 以å‰ã®Sessionã§ã‚»ãƒ¼ãƒ–ã¾ãŸã¯ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸä¸€æ™‚çš„ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨åŒºåˆ¥ã™ã‚‹ãŸã‚ã« + 使ã„ã¾ã™ã€‚ + ( undefined ã¯è­˜åˆ¥å­ãƒ—ロパティã®å€¤ãŒä½¿ã‚れるã“ã¨ã‚’指定ã—ã¾ã™ã€‚) - generated (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í never ): - ‚±‚̃o[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚Ķ¬‚³‚ꂽ‚±‚Æ‚ðŽw’肵‚Ü‚·B - ¶¬ƒvƒƒpƒeƒB ‚Ì‹c˜_‚ðŒ©‚Ä‚­‚¾‚³‚¢B + generated (オプション - デフォルト㯠never ): + ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ—ロパティã®å€¤ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ç”Ÿæˆã•ã‚ŒãŸã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + 生æˆãƒ—ロパティ ã®è­°è«–を見ã¦ãã ã•ã„。 - insert (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - SQL‚Ìinsert•¶‚Ƀo[ƒWƒ‡ƒ“EƒJƒ‰ƒ€‚ðŠÜ‚ß‚é‚ׂ«‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - ‚à‚µƒf[ƒ^ƒx[ƒXEƒJƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ª 0 ‚Æ’è‹`‚³‚ê‚é‚Æ‚«‚É‚ÍA - false ‚ÉÝ’è‚·‚é‚Æ—Ç‚¢‚Å‚µ‚傤B + insert (オプション - デフォルト㯠true ): + SQLã®insertæ–‡ã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ»ã‚«ãƒ©ãƒ ã‚’å«ã‚ã‚‹ã¹ãã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + ã‚‚ã—データベース・カラムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒ 0 ã¨å®šç¾©ã•ã‚Œã‚‹ã¨ãã«ã¯ã€ + false ã«è¨­å®šã™ã‚‹ã¨è‰¯ã„ã§ã—ょã†ã€‚ - ƒo[ƒWƒ‡ƒ“”Ô†‚Í Hibernate‚Ì long , integer , + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã¯ Hibernateã® long , integer , short , timestamp , - calendar Œ^‚Ì‚¢‚¸‚ê‚©‚Å‚·B + calendar åž‹ã®ã„ãšã‚Œã‹ã§ã™ã€‚ - ƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ÍA•ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚Änull‚Å‚ ‚Á‚Ä‚Í‚È‚è‚Ü‚¹‚ñB - ‚»‚Ì‚½‚߂ǂ̂悤‚È unsaved-value í—ª‚ªŽw’肳‚ê‚Ä‚àA - Hibernate‚Ínull‚̃o[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðŽ‚Á‚½‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ðA - ˆêŽž“I‚È‚à‚Ì‚Å‚ ‚é‚Æ”»’f‚µ‚Ü‚·B + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„タイムスタンプã®ãƒ—ロパティã¯ã€åˆ†é›¢ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å¯¾ã—ã¦nullã§ã‚ã£ã¦ã¯ãªã‚Šã¾ã›ã‚“。 + ãã®ãŸã‚ã©ã®ã‚ˆã†ãª unsaved-value 戦略ãŒæŒ‡å®šã•ã‚Œã¦ã‚‚〠+ Hibernateã¯nullã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„タイムスタンプをæŒã£ãŸã™ã¹ã¦ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’〠+ 一時的ãªã‚‚ã®ã§ã‚ã‚‹ã¨åˆ¤æ–­ã—ã¾ã™ã€‚ - null‚ð‹–—e‚·‚éƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ð’è‹`‚·‚邱‚Æ‚ÍA - ‰ß“n“I‚ɈꎞƒIƒuƒWƒFƒNƒg‚Æ‚·‚邱‚Æ‚ð–h‚®ŠÈ’P‚È•û–@‚Å‚·B - “Á‚ÉŽ¯•ÊŽq‚ÌŠ„‚è“–‚Ä‚â•¡‡ƒL[‚ðŽg—p‚µ‚Ä‚¢‚é‚Æ‚«‚É‚Í“Á‚É—L—p‚Å‚·B + nullを許容ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„タイムスタンプã®ãƒ—ロパティを定義ã™ã‚‹ã“ã¨ã¯ã€ + éŽæ¸¡çš„ã«ä¸€æ™‚オブジェクトã¨ã™ã‚‹ã“ã¨ã‚’防ãç°¡å˜ãªæ–¹æ³•ã§ã™ã€‚ + 特ã«è­˜åˆ¥å­ã®å‰²ã‚Šå½“ã¦ã‚„複åˆã‚­ãƒ¼ã‚’使用ã—ã¦ã„ã‚‹ã¨ãã«ã¯ç‰¹ã«æœ‰ç”¨ã§ã™ã€‚ - timestampiƒIƒvƒVƒ‡ƒ“j + timestamp(オプション) - ƒIƒvƒVƒ‡ƒ“‚Ì <timestamp> —v‘f‚ÍA - ƒe[ƒuƒ‹‚ªƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒf[ƒ^‚ðŠÜ‚Þ‚±‚Æ‚ðŽ¦‚µ‚Ü‚·B - ‚±‚ê‚̓o[ƒWƒ‡ƒ“•t‚¯‚Ì‘ã‚í‚è‚Ì•û–@‚Æ‚µ‚Ä—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B - ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚Í‚à‚Æ‚à‚ÆŠyŠÏ“IƒƒbƒN‚É‚¨‚¯‚éˆÀ‘S«‚Ì’á‚¢ŽÀ‘•‚Å‚·B - ‚µ‚©‚µƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚͈قȂé—p“r‚ÅŽg‚¤‚±‚Æ‚à‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + オプション㮠<timestamp> è¦ç´ ã¯ã€ + テーブルãŒã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—データをå«ã‚€ã“ã¨ã‚’示ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ä»˜ã‘ã®ä»£ã‚ã‚Šã®æ–¹æ³•ã¨ã—ã¦ç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚ + タイムスタンプã¯ã‚‚ã¨ã‚‚ã¨æ¥½è¦³çš„ロックã«ãŠã‘る安全性ã®ä½Žã„実装ã§ã™ã€‚ + ã—ã‹ã—アプリケーションã¯ç•°ãªã‚‹ç”¨é€”ã§ä½¿ã†ã“ã¨ã‚‚ã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 @@ -1265,66 +1266,66 @@ - columniƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF - ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB + column(オプション - デフォルトã¯ãƒ—ロパティå): + タイムスタンプをä¿æŒã™ã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã€‚ - name F - ‰i‘±ƒNƒ‰ƒX‚Å‚ ‚éJava ‚Ì DateŒ^ ‚Ü‚½‚Í - Timestamp Œ^ ‚ÌAJavaBeansƒXƒ^ƒCƒ‹ƒvƒƒpƒeƒB‚Ì–¼‘OB + name : + 永続クラスã§ã‚ã‚‹Java ã® Dateåž‹ ã¾ãŸã¯ + Timestamp åž‹ ã®ã€JavaBeansスタイルプロパティã®åå‰ã€‚ access - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + (オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ unsaved-value - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í null jF - ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ - iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢j‚±‚Æ‚ðŽ¦‚·ƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒB‚Ì’lB - ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚Æ - ‹æ•Ê‚·‚邽‚ß‚ÉŽg‚í‚ê‚Ü‚·B - i undefined ‚ÆŽw’è‚·‚é‚ÆA - Ž¯•ÊŽqƒvƒƒpƒeƒB‚Ì’l‚ªŽg‚í‚ê‚Ü‚·Bj + (オプション - デフォルト㯠null ): + インスタンスãŒæ–°ã—ãインスタンス化ã•ã‚ŒãŸ + (セーブã•ã‚Œã¦ã„ãªã„)ã“ã¨ã‚’示ã™ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ—ロパティã®å€¤ã€‚ + 以å‰ã®Sessionã§ã‚»ãƒ¼ãƒ–ã¾ãŸã¯ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸä¸€æ™‚çš„ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ + 区別ã™ã‚‹ãŸã‚ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ + ( undefined ã¨æŒ‡å®šã™ã‚‹ã¨ã€ + 識別å­ãƒ—ロパティã®å€¤ãŒä½¿ã‚ã‚Œã¾ã™ã€‚) - source (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í vm ): - Hibernate‚Í‚Ç‚±‚©‚çƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚Ì’l‚ðŽæ“¾‚·‚é‚ׂ«‚Å‚µ‚傤‚©H - ƒf[ƒ^ƒx[ƒX‚©‚ç‚Å‚µ‚傤‚©AŒ»Ý‚ÌJVM‚©‚ç‚Å‚µ‚傤‚©H - ƒf[ƒ^ƒx[ƒX‚É‚æ‚éƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ÍAHibernate‚ª"ŽŸ‚Ì’l"‚ðŒˆ’è‚·‚邽‚ß‚É - ƒf[ƒ^ƒx[ƒX‚ðƒqƒbƒg‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚ßAƒI[ƒoƒwƒbƒh‚𵂫‚Ü‚·B - ‚µ‚©‚µƒNƒ‰ƒXƒ^ŠÂ‹«‚Å‚ÍJVM‚©‚çŽæ“¾‚·‚é‚æ‚èˆÀ‘S‚Å‚·B - ƒf[ƒ^ƒx[ƒX‚ÌŒ»Ý‚̃^ƒCƒ€ƒXƒ^ƒ“ƒv‚̎擾‚ðƒTƒ|[ƒg‚·‚é - ‚·‚×‚Ä‚Ì ƒf[ƒ^ƒx[ƒX•ûŒ¾ ‚ª’m‚ç‚ê‚Ä‚¢‚é‚킯‚Å‚Í‚È‚¢‚±‚Æ‚É - ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚Ü‚½ˆê•û‚ÅA¸–§‚³‚ðŒ‡‚­‚½‚ß‚ÉA - ƒƒbƒN‚ÅŽg—p‚·‚é‚ɂ͈À‘S‚Å‚È‚¢‚à‚Ì‚à‚ ‚è‚Ü‚·(—Ⴆ‚ÎOracle 8)B + source (オプション - デフォルト㯠vm ): + Hibernateã¯ã©ã“ã‹ã‚‰ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã®å€¤ã‚’å–å¾—ã™ã‚‹ã¹ãã§ã—ょã†ã‹ï¼Ÿ + データベースã‹ã‚‰ã§ã—ょã†ã‹ã€ç¾åœ¨ã®JVMã‹ã‚‰ã§ã—ょã†ã‹ï¼Ÿ + データベースã«ã‚ˆã‚‹ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã¯ã€HibernateãŒ"次ã®å€¤"を決定ã™ã‚‹ãŸã‚ã« + データベースをヒットã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ãŸã‚ã€ã‚ªãƒ¼ãƒãƒ˜ãƒƒãƒ‰ã‚’æ‹›ãã¾ã™ã€‚ + ã—ã‹ã—クラスタ環境ã§ã¯JVMã‹ã‚‰å–å¾—ã™ã‚‹ã‚ˆã‚Šå®‰å…¨ã§ã™ã€‚ + データベースã®ç¾åœ¨ã®ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã®å–得をサãƒãƒ¼ãƒˆã™ã‚‹ + ã™ã¹ã¦ã® データベース方言 ãŒçŸ¥ã‚‰ã‚Œã¦ã„ã‚‹ã‚ã‘ã§ã¯ãªã„ã“ã¨ã« + 注æ„ã—ã¦ãã ã•ã„。ã¾ãŸä¸€æ–¹ã§ã€ç²¾å¯†ã•ã‚’欠ããŸã‚ã«ã€ + ロックã§ä½¿ç”¨ã™ã‚‹ã«ã¯å®‰å…¨ã§ãªã„ã‚‚ã®ã‚‚ã‚ã‚Šã¾ã™(例ãˆã°Oracle 8)。 - generated (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í never ): - ‚±‚̃^ƒCƒ€ƒXƒ^ƒ“ƒvEƒvƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚Ķ¬‚³‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B - ¶¬ƒvƒƒpƒeƒB ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + generated (オプション - デフォルト㯠never ): + ã“ã®ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—・プロパティã®å€¤ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ç”Ÿæˆã•ã‚Œã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + 生æˆãƒ—ロパティ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - <timestamp> ‚Í - <version type="timestamp"> ‚Æ“™‰¿‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - <timestamp source="db"> ‚Í - <version type="dbtimestamp"> ‚Æ“™‰¿‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + <timestamp> 㯠+ <version type="timestamp"> ã¨ç­‰ä¾¡ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + <timestamp source="db"> 㯠+ <version type="dbtimestamp"> ã¨ç­‰ä¾¡ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 @@ -1332,7 +1333,7 @@ property - <property> —v‘f‚ÍAƒNƒ‰ƒX‚̉i‘±“I‚ÈJavaBeanƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚·B + <property> è¦ç´ ã¯ã€ã‚¯ãƒ©ã‚¹ã®æ°¸ç¶šçš„ãªJavaBeanスタイルã®ãƒ—ロパティを定義ã—ã¾ã™ã€‚ @@ -1375,135 +1376,135 @@ - nameF¬•¶Žš‚ÅŽn‚Ü‚éƒvƒƒpƒeƒB–¼B + name:å°æ–‡å­—ã§å§‹ã¾ã‚‹ãƒ—ロパティå。 - columniƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF - ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ì–¼‘OB - ƒlƒXƒg‚µ‚½ <column> —v‘f‚Å‚àŽw’è‚Å‚«‚Ü‚·B + column(オプション - デフォルトã¯ãƒ—ロパティå): + マッピングã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ ã®åå‰ã€‚ + ãƒã‚¹ãƒˆã—㟠<column> è¦ç´ ã§ã‚‚指定ã§ãã¾ã™ã€‚ - typeiƒIƒvƒVƒ‡ƒ“jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB + type(オプション):Hibernateã®åž‹ã‚’示ã™åå‰ã€‚ update, insert - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true jF - ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì - UPDATE ‚â INSERT ‚ÉŠÜ‚Ü‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B - —¼•û‚Æ‚à false ‚ÉÝ’è‚·‚é‚ÆA - “¯‚¶ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚³‚ꂽ‘¼‚̃vƒƒpƒeƒB‚âƒgƒŠƒK‚â - ‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚ĉŠú‰»‚³‚ꂽƒˆ‚Èu“±ovƒvƒƒpƒeƒB‚ª‰Â”\‚É‚È‚è‚Ü‚·B + (オプション - デフォルト㯠true ): + マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQLã® + UPDATE ã‚„ INSERT ã«å«ã¾ã‚Œã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + 両方ã¨ã‚‚ false ã«è¨­å®šã™ã‚‹ã¨ã€ + åŒã˜ã‚«ãƒ©ãƒ ã«ãƒžãƒƒãƒ”ングã•ã‚ŒãŸä»–ã®ãƒ—ロパティやトリガや + ä»–ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦åˆæœŸåŒ–ã•ã‚ŒãŸç´”粋ãªã€Œå°Žå‡ºã€ãƒ—ロパティãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ - formulaiƒIƒvƒVƒ‡ƒ“jF - ŒvŽZ ƒvƒƒpƒeƒB‚Ì‚½‚ß‚Ì’l‚ð’è‹`‚·‚éSQLŽ®B - ŒvŽZ‚³‚ꂽƒvƒƒpƒeƒB‚ÍŽ©g‚̃Jƒ‰ƒ€‚ւ̃}ƒbƒsƒ“ƒO‚ª‚ ‚è‚Ü‚¹‚ñB + formula(オプション): + 計算 プロパティã®ãŸã‚ã®å€¤ã‚’定義ã™ã‚‹SQLå¼ã€‚ + 計算ã•ã‚ŒãŸãƒ—ロパティã¯è‡ªèº«ã®ã‚«ãƒ©ãƒ ã¸ã®ãƒžãƒƒãƒ”ングãŒã‚ã‚Šã¾ã›ã‚“。 - accessiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + access(オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ - lazy (optional - ƒfƒtƒHƒ‹ƒg‚Í false ): - ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Éʼn‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ÉAƒvƒƒpƒeƒB‚ð’x‰„‚µ‚Ď擾‚·‚é‚悤Žw’肵‚Ü‚·B - (ƒoƒCƒgƒR[ƒhŽÀ‘•‚ð쬂·‚鎞ŠÔ‚ª•K—v‚É‚È‚è‚Ü‚·)B + lazy (optional - デフォルト㯠false ): + インスタンス変数ã«æœ€åˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã¨ãã«ã€ãƒ—ロパティをé…延ã—ã¦å–å¾—ã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ã€‚ + (ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰å®Ÿè£…を作æˆã™ã‚‹æ™‚é–“ãŒå¿…è¦ã«ãªã‚Šã¾ã™)。 - unique (ƒIƒvƒVƒ‡ƒ“):ƒJƒ‰ƒ€‚Ƀ†ƒj[ƒN§–ñ‚ð‚‚¯‚éDDL‚̶¬‚ð‰Â”\‚É‚µ‚Ü‚·B - ‚Ü‚½Aproperty-ref ‚̃^[ƒQƒbƒg‚Æ‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + unique (オプション):カラムã«ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã‚’ã¤ã‘ã‚‹DDLã®ç”Ÿæˆã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ + ã¾ãŸã€property-ref ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - not-null (ƒIƒvƒVƒ‡ƒ“):ƒJƒ‰ƒ€‚Énull’l‚ð‹–‰Â‚·‚éDDL‚̶¬‚ð‰Â”\‚É‚µ‚Ü‚·B + not-null (オプション):カラムã«null値を許å¯ã™ã‚‹DDLã®ç”Ÿæˆã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ - optimistic-lock (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - ‚±‚̃vƒƒpƒeƒB‚ÌXV‚ÉŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎA‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚ð‘‚â‚·‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B + optimistic-lock (オプション - デフォルト㯠true ): + ã“ã®ãƒ—ロパティã®æ›´æ–°ã«æ¥½è¦³ãƒ­ãƒƒã‚¯ã®å–å¾—ã‚’è¦æ±‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ã“ã®ãƒ—ロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹ã¨ãã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’増やã™ã¹ãã‹ã‚’決定ã—ã¾ã™ã€‚ - generated (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í never ): - ƒvƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚Ķ¬‚³‚ꂽ‚±‚Æ‚ðŽw’肵‚Ü‚·B - ¶¬ƒvƒƒpƒeƒB ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + generated (オプション - デフォルト㯠never ): + プロパティã®å€¤ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ç”Ÿæˆã•ã‚ŒãŸã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + 生æˆãƒ—ロパティ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - typename ‚ɂ͈ȉº‚Ì’l‚ª‰Â”\‚Å‚·F + typename ã«ã¯ä»¥ä¸‹ã®å€¤ãŒå¯èƒ½ã§ã™ï¼š - Hibernate‚ÌŠî–{Œ^‚Ì–¼‘Oi—á integer, string, character, - date, timestamp, float, binary, serializable, object, blob jB + Hibernateã®åŸºæœ¬åž‹ã®åå‰ï¼ˆä¾‹ integer, string, character, + date, timestamp, float, binary, serializable, object, blob )。 - ƒfƒtƒHƒ‹ƒg‚ÌŠî–{Œ^‚ÌJavaƒNƒ‰ƒX–¼ i—á int, float, - char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob jB + デフォルトã®åŸºæœ¬åž‹ã®Javaクラスå (例 int, float, + char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob )。 - ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaƒNƒ‰ƒX‚Ì–¼‘OB + シリアライズå¯èƒ½ãªJavaクラスã®åå‰ã€‚ - ƒJƒXƒ^ƒ€Œ^‚̃Nƒ‰ƒX–¼i—á com.illflow.type.MyCustomType jB + カスタム型ã®ã‚¯ãƒ©ã‚¹å(例 com.illflow.type.MyCustomType )。 - Œ^‚ðŽw’肵‚È‚¯‚ê‚ÎAHibernate‚ͳ‚µ‚¢Hibernate‚ÌŒ^‚ð„‘ª‚·‚邽‚ß‚ÉA - Žw’肳‚ꂽƒvƒƒpƒeƒB‚ɑ΂µ‚ăŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚¢‚Ü‚·B - Hibernate‚̓‹[ƒ‹2, 3, 4‚ð‚»‚Ì‡˜‚ÉŽg‚¢A - getterƒvƒƒpƒeƒB‚Ì•Ô‚è’l‚̃Nƒ‰ƒX‚Ì–¼‘O‚ð‰ðŽß‚µ‚悤‚Æ‚µ‚Ü‚·B - ‚µ‚©‚µ‚±‚ê‚Åí‚É\•ª‚Å‚ ‚é‚Æ‚ÍŒÀ‚è‚Ü‚¹‚ñB - ꇂɂæ‚Á‚Ä‚ÍAtype ‘®«‚ª•K—v‚Èꇂª‚ ‚è‚Ü‚·B - i—Ⴆ‚Î Hibernate.DATE ‚Æ Hibernate.TIMESTAMP ‚ð‹æ•Ê‚·‚邽‚ßA - ‚Ü‚½‚̓JƒXƒ^ƒ€Œ^‚ðŽw’è‚·‚邽‚ß‚È‚Ç‚Å‚·Bj + 型を指定ã—ãªã‘ã‚Œã°ã€Hibernateã¯æ­£ã—ã„Hibernateã®åž‹ã‚’推測ã™ã‚‹ãŸã‚ã«ã€ + 指定ã•ã‚ŒãŸãƒ—ロパティã«å¯¾ã—ã¦ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ + Hibernateã¯ãƒ«ãƒ¼ãƒ«2, 3, 4ã‚’ãã®é †åºã«ä½¿ã„〠+ getterプロパティã®è¿”り値ã®ã‚¯ãƒ©ã‚¹ã®åå‰ã‚’解釈ã—よã†ã¨ã—ã¾ã™ã€‚ + ã—ã‹ã—ã“ã‚Œã§å¸¸ã«å分ã§ã‚ã‚‹ã¨ã¯é™ã‚Šã¾ã›ã‚“。 + å ´åˆã«ã‚ˆã£ã¦ã¯ã€type 属性ãŒå¿…è¦ãªå ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + (例ãˆã° Hibernate.DATE 㨠Hibernate.TIMESTAMP を区別ã™ã‚‹ãŸã‚〠+ ã¾ãŸã¯ã‚«ã‚¹ã‚¿ãƒ åž‹ã‚’指定ã™ã‚‹ãŸã‚ãªã©ã§ã™ã€‚) - access ‘®«‚ÅA - ŽÀsŽž‚ÉHibernate‚ª‚ǂ̂悤‚ɃvƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚é‚©‚ð§Œä‚Å‚«‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚ÍHibernate‚̓vƒƒpƒeƒB‚Ìget/set‚̃yƒA‚ðƒR[ƒ‹‚µ‚Ü‚·B - access="field" ‚ÆŽw’è‚·‚ê‚ÎA - Hibernate‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚¢get/set‚̃yƒA‚ð‰î‚³‚¸‚ÉA’¼ÚƒtƒB[ƒ‹ƒh‚ɃAƒNƒZƒX‚µ‚Ü‚·B - ƒCƒ“ƒ^[ƒtƒFƒCƒX org.hibernate.property.PropertyAccessor ‚ð - ŽÀ‘•‚·‚éƒNƒ‰ƒX‚ðŽw’è‚·‚邱‚Æ‚ÅAƒvƒƒpƒeƒB‚ւ̃AƒNƒZƒX‚É“ÆŽ©‚Ìí—ª‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + access 属性ã§ã€ + 実行時ã«HibernateãŒã©ã®ã‚ˆã†ã«ãƒ—ロパティã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‹ã‚’制御ã§ãã¾ã™ã€‚ + デフォルトã§ã¯Hibernateã¯ãƒ—ロパティã®get/setã®ãƒšã‚¢ã‚’コールã—ã¾ã™ã€‚ + access="field" ã¨æŒ‡å®šã™ã‚Œã°ã€ + Hibernateã¯ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„get/setã®ãƒšã‚¢ã‚’介ã•ãšã«ã€ç›´æŽ¥ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™ã€‚ + インターフェイス org.hibernate.property.PropertyAccessor ã‚’ + 実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’指定ã™ã‚‹ã“ã¨ã§ã€ãƒ—ロパティã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«ç‹¬è‡ªã®æˆ¦ç•¥ã‚’指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - “Á‚É‹­—Í‚È“Á’¥‚Ͷ¬ƒvƒƒpƒeƒB‚Å‚·B - ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í“–‘R“Ç‚ÝŽæ‚èê—p‚Å‚ ‚èAƒvƒƒpƒeƒB‚Ì’l‚̓[ƒhŽž‚ÉŒvŽZ‚³‚ê‚Ü‚·B - ŒvŽZ‚ðSQLŽ®‚Æ‚µ‚Ä錾‚·‚é‚ÆA‚±‚̃vƒƒpƒeƒB‚Í - ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒ[ƒh‚·‚éSQLƒNƒGƒŠ‚Ì SELECT ‹å‚̃TƒuƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B + 特ã«å¼·åŠ›ãªç‰¹å¾´ã¯ç”Ÿæˆãƒ—ロパティã§ã™ã€‚ + ã“れらã®ãƒ—ロパティã¯å½“然読ã¿å–り専用ã§ã‚ã‚Šã€ãƒ—ロパティã®å€¤ã¯ãƒ­ãƒ¼ãƒ‰æ™‚ã«è¨ˆç®—ã•ã‚Œã¾ã™ã€‚ + 計算をSQLå¼ã¨ã—ã¦å®£è¨€ã™ã‚‹ã¨ã€ã“ã®ãƒ—ロパティ㯠+ インスタンスをロードã™ã‚‹SQLクエリ㮠SELECT å¥ã®ã‚µãƒ–クエリã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ ]]> - “Á’è‚̃Jƒ‰ƒ€(—á‚Å‚Í customerId ‚ª‚»‚ê‚É‚ ‚½‚è‚Ü‚·)‚̃GƒCƒŠƒAƒX‚ð錾‚·‚邱‚Æ‚È‚­A - ƒGƒ“ƒeƒBƒeƒBŽ©g‚̃e[ƒuƒ‹‚ðŽQÆ‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚à‚µ‘®«‚ðŽg—p‚µ‚½‚­‚È‚¯‚ê‚ÎA - ƒlƒXƒg‚µ‚½ <formula> ƒ}ƒbƒsƒ“ƒO—v‘f‚ðŽg‚¦‚邱‚Æ‚É‚à’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 特定ã®ã‚«ãƒ©ãƒ (例ã§ã¯ customerId ãŒãã‚Œã«ã‚ãŸã‚Šã¾ã™)ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’宣言ã™ã‚‹ã“ã¨ãªã〠+ エンティティ自身ã®ãƒ†ãƒ¼ãƒ–ルをå‚ç…§ã§ãã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã‚‚ã—属性を使用ã—ãŸããªã‘ã‚Œã°ã€ + ãƒã‚¹ãƒˆã—㟠<formula> マッピングè¦ç´ ã‚’使ãˆã‚‹ã“ã¨ã«ã‚‚注æ„ã—ã¦ãã ã•ã„。 @@ -1526,9 +1527,9 @@ many-to-one - ‘¼‚̉i‘±ƒNƒ‰ƒX‚Ö‚Ì’Êí‚ÌŠÖ˜A‚Í many-to-one —v‘f‚ðŽg‚Á‚Ä’è‹`‚µ‚Ü‚·B - ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Í‘½‘ΈêŠÖ˜A‚Å‚·B - ‚‚܂肠‚éƒe[ƒuƒ‹‚ÌŠO•”ƒL[‚ÍAƒ^[ƒQƒbƒg‚Æ‚È‚éƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚ðŽQÆ‚µ‚Ä‚¢‚Ü‚·B + ä»–ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã¸ã®é€šå¸¸ã®é–¢é€£ã¯ many-to-one è¦ç´ ã‚’使ã£ã¦å®šç¾©ã—ã¾ã™ã€‚ + リレーショナルモデルã¯å¤šå¯¾ä¸€é–¢é€£ã§ã™ã€‚ + ã¤ã¾ã‚Šã‚るテーブルã®å¤–部キーã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ãªã‚‹ãƒ†ãƒ¼ãƒ–ルã®ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã‚’å‚ç…§ã—ã¦ã„ã¾ã™ã€‚ @@ -1578,156 +1579,156 @@ - nameFƒvƒƒpƒeƒB–¼B + name:プロパティå。 - column (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB - ƒlƒXƒg‚µ‚½ <column> —v‘f‚Å‚àŽw’è‚Å‚«‚Ü‚·B + column (オプション):外部キーカラムã®åå‰ã€‚ + ãƒã‚¹ãƒˆã—㟠<column> è¦ç´ ã§ã‚‚指定ã§ãã¾ã™ã€‚ - classiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚ÍA - ƒŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jFŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB + class(オプション - デフォルトã¯ã€ + リフレクションã«ã‚ˆã‚Šæ±ºå®šã•ã‚Œã‚‹ãƒ—ロパティã®åž‹ï¼‰ï¼šé–¢é€£ã‚¯ãƒ©ã‚¹ã®åå‰ã€‚ - cascadeiƒIƒvƒVƒ‡ƒ“jF - ‚Ç‚Ì‘€ì‚ðAeƒIƒuƒWƒFƒNƒg‚©‚çŠÖ˜AƒIƒuƒWƒFƒNƒg‚ւƃJƒXƒP[ƒh‚³‚¹‚é‚©‚ðŽw’肵‚Ü‚·B + cascade(オプション): + ã©ã®æ“作をã€è¦ªã‚ªãƒ–ジェクトã‹ã‚‰é–¢é€£ã‚ªãƒ–ジェクトã¸ã¨ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã•ã›ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ - fetch (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í select ): - ŠO•”Œ‹‡ƒtƒFƒbƒ`‚©‡ŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchj‚ð‘I‘ð‚µ‚Ü‚·B + fetch (オプション - デフォルト㯠select ): + 外部çµåˆãƒ•ã‚§ãƒƒãƒã‹é †æ¬¡é¸æŠžãƒ•ã‚§ãƒƒãƒï¼ˆsequential select fetch)をé¸æŠžã—ã¾ã™ã€‚ - update, insertiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true jF - ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì UPDATE ‚Ü‚½‚Í - INSERT •¶‚ÉŠÜ‚Ü‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B - —¼•û‚Æ‚à false ‚ÉÝ’è‚·‚é‚ÆA - ‚»‚Ì’l‚ª“¯‚¶ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚³‚ꂽ‘¼‚̃vƒƒpƒeƒB‚âƒgƒŠƒK‚â - ‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚ĉŠú‰»‚³‚ꂽƒˆ‚Èu“±ovƒvƒƒpƒeƒB‚ª‰Â”\‚É‚È‚è‚Ü‚·B + update, insert(オプション - デフォルト㯠true ): + マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQLã® UPDATE ã¾ãŸã¯ + INSERT æ–‡ã«å«ã¾ã‚Œã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + 両方ã¨ã‚‚ false ã«è¨­å®šã™ã‚‹ã¨ã€ + ãã®å€¤ãŒåŒã˜ã‚«ãƒ©ãƒ ã«ãƒžãƒƒãƒ”ングã•ã‚ŒãŸä»–ã®ãƒ—ロパティやトリガや + ä»–ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦åˆæœŸåŒ–ã•ã‚ŒãŸç´”粋ãªã€Œå°Žå‡ºã€ãƒ—ロパティãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ - property-refiƒIƒvƒVƒ‡ƒ“jF - ‚±‚ÌŠO•”ƒL[‚ÉŒ‹‡‚³‚ꂽŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B - ‰½‚àŽw’肵‚È‚¯‚ê‚ÎAŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ªŽg‚í‚ê‚Ü‚·B + property-ref(オプション): + ã“ã®å¤–部キーã«çµåˆã•ã‚ŒãŸé–¢é€£ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティå。 + 何も指定ã—ãªã‘ã‚Œã°ã€é–¢é€£ã‚¯ãƒ©ã‚¹ã®ä¸»ã‚­ãƒ¼ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ - accessiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + access(オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ - uniqueiƒIƒvƒVƒ‡ƒ“jF - ŠO•”ƒL[ƒJƒ‰ƒ€‚ɑ΂µ‚ă†ƒj[ƒN§–ñ‚ð‚‚¯‚½DDL‚̶¬‚ð‰Â”\‚É‚µ‚Ü‚·B - ‚Ü‚½Aproperty-ref ‚̃^[ƒQƒbƒg‚É‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ‚±‚ê‚É‚æ‚èŠÖ˜A‚Ì‘½d“x‚ðŒø‰Ê“I‚Ɉê‘Έê‚É‚µ‚Ü‚·B + unique(オプション): + 外部キーカラムã«å¯¾ã—ã¦ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã‚’ã¤ã‘ãŸDDLã®ç”Ÿæˆã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ + ã¾ãŸã€property-ref ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šé–¢é€£ã®å¤šé‡åº¦ã‚’効果的ã«ä¸€å¯¾ä¸€ã«ã—ã¾ã™ã€‚ - not-null (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚ɑ΂µ‚ÄA - null’l‚ð‹–‰Â‚·‚éDDL‚̶¬‚ð‰Â”\‚É‚µ‚Ü‚· + not-null (オプション):外部キーカラムã«å¯¾ã—ã¦ã€ + null値を許å¯ã™ã‚‹DDLã®ç”Ÿæˆã‚’å¯èƒ½ã«ã—ã¾ã™ - optimistic-lock (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - ‚±‚̃vƒƒpƒeƒB‚ÌXV‚ÉŠyŠÏ“IƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎA‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚ð‘‚â‚·‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B + optimistic-lock (オプション - デフォルト㯠true ): + ã“ã®ãƒ—ロパティã®æ›´æ–°ã«æ¥½è¦³çš„ロックã®å–å¾—ã‚’è¦æ±‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ã“ã®ãƒ—ロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹ã¨ãã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’増やã™ã¹ãã‹ã‚’決定ã—ã¾ã™ã€‚ - lazy (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í proxy ): - ƒfƒtƒHƒ‹ƒg‚Å‚ÍA‘½d“x‚P‚ÌŠÖ˜A‚ªƒvƒƒLƒV‚Æ‚È‚è‚Ü‚·B - lazy="no-proxy" ‚ÍAƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Éʼn‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ÉA - ƒvƒƒpƒeƒB‚ð’x‰„ƒtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚· - (ƒrƒ‹ƒhŽž‚ɃoƒCƒgƒR[ƒhŽÀ‘•‚ª•K—v‚É‚È‚è‚Ü‚·)B - lazy="false" ‚ÍŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B + lazy (オプション - デフォルト㯠proxy ): + デフォルトã§ã¯ã€å¤šé‡åº¦ï¼‘ã®é–¢é€£ãŒãƒ—ロキシã¨ãªã‚Šã¾ã™ã€‚ + lazy="no-proxy" ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã«æœ€åˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã¨ãã«ã€ + プロパティをé…延フェッãƒã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ + (ビルド時ã«ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰å®Ÿè£…ãŒå¿…è¦ã«ãªã‚Šã¾ã™)。 + lazy="false" ã¯é–¢é€£ã‚’常ã«å³æ™‚ã«ãƒ•ã‚§ãƒƒãƒã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ã€‚ - not-found (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í exception ): - Œ‡—Ž‚µ‚½s‚ðŽQÆ‚·‚éŠO•”ƒL[‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B - ignore ‚ÍŒ‡—Ž‚µ‚½s‚ðnullŠÖ˜A‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B + not-found (オプション - デフォルト㯠exception ): + 欠è½ã—ãŸè¡Œã‚’å‚ç…§ã™ã‚‹å¤–部キーをã©ã®ã‚ˆã†ã«æ‰±ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + ignore ã¯æ¬ è½ã—ãŸè¡Œã‚’null関連ã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ - entity-name (ƒIƒvƒVƒ‡ƒ“):ŠÖ˜A‚µ‚½ƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B + entity-name (オプション):関連ã—ãŸã‚¯ãƒ©ã‚¹ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å。 - formula (ƒIƒvƒVƒ‡ƒ“): - ŒvŽZ‚³‚ꂽ ŠO•”ƒL[‚ɑ΂µ‚Ä’l‚ð’è‹`‚·‚éSQLŽ® + formula (オプション): + 計算ã•ã‚ŒãŸ 外部キーã«å¯¾ã—ã¦å€¤ã‚’定義ã™ã‚‹SQLå¼ - cascade ‘®«‚É none ˆÈŠO‚̈Ӗ¡‚Ì‚ ‚é’l‚ð‚ðÝ’è‚·‚é‚ÆA - ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Ö‚ ‚鑀삪“`”d‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B - ˆÓ–¡‚Ì‚ ‚é’l‚Æ‚ÍHibernate‚ÌŠî–{‘€ì‚Ì–¼‘O‚Ì‚±‚Æ‚ÅA - delete-orphan ‚Æ all A‘€ì–¼‚ðƒJƒ“ƒ}‚Å‹æØ‚Á‚½‘g‚݇‚킹 - i—Ⴆ‚Î cascade="persist,merge,evict" ‚â - cascade="all,delete-orphan"jA - ‚Ü‚½‚»‚ꂾ‚¯‚Å‚È‚­ persist, merge, delete, save-update, evict, replicate, lock, - refresh ‚Ì‚±‚Æ‚ðŽw‚µ‚Ü‚·B - Ú‚µ‚¢à–¾‚Í ‚ðŒ©‚Ä‚­‚¾‚³‚¢B - ’l‚ªˆê‚‚̊֘A(many-to-one‚Æone-to-oneŠÖ˜A)‚ÍA - ’P“Æ‚Å‚Ìíœiorphan delete)‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + cascade 属性㫠none 以外ã®æ„味ã®ã‚る値をを設定ã™ã‚‹ã¨ã€ + 関連オブジェクトã¸ã‚ã‚‹æ“作ãŒä¼æ’­ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + æ„味ã®ã‚る値ã¨ã¯Hibernateã®åŸºæœ¬æ“作ã®åå‰ã®ã“ã¨ã§ã€ + delete-orphan 㨠all ã€æ“作åをカンマã§åŒºåˆ‡ã£ãŸçµ„ã¿åˆã‚ã› + (例ãˆã° cascade="persist,merge,evict" ã‚„ + cascade="all,delete-orphan")〠+ ã¾ãŸãã‚Œã ã‘ã§ãªã persist, merge, delete, save-update, evict, replicate, lock, + refresh ã®ã“ã¨ã‚’指ã—ã¾ã™ã€‚ + 詳ã—ã„説明㯠を見ã¦ãã ã•ã„。 + 値ãŒä¸€ã¤ã®é–¢é€£(many-to-oneã¨one-to-one関連)ã¯ã€ + å˜ç‹¬ã§ã®å‰Šé™¤ï¼ˆorphan delete)をサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - “TŒ^“I‚È many-to-one 錾‚ÍŽŸ‚̂悤‚ɃVƒ“ƒvƒ‹‚Å‚·BF + 典型的㪠many-to-one 宣言ã¯æ¬¡ã®ã‚ˆã†ã«ã‚·ãƒ³ãƒ—ルã§ã™ã€‚: ]]> - property-ref ‘®«‚ÍAŠO•”ƒL[‚ªŠÖ˜A•t‚¯‚ç‚ꂽƒe[ƒuƒ‹‚ÌAŽåƒL[‚Å‚È‚¢ - ƒ†ƒj[ƒNƒL[‚ðŽQÆ‚µ‚Ä‚¢‚郌ƒKƒV[ƒf[ƒ^‚ðƒ}ƒbƒv‚·‚邽‚ß‚É‚¾‚¯Žg‚¤‚ׂ«‚Å‚·B - ‚±‚ê‚ÍX‚¢ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Å‚·B - —Ⴆ‚Î Product ƒNƒ‰ƒX‚ªA - ŽåƒL[‚Å‚È‚¢ƒ†ƒj[ƒN‚ȃVƒŠƒAƒ‹ƒiƒ“ƒo[‚ðŽ‚Á‚Ä‚¢‚é‚Ɖ¼’肵‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B - i unique ‘®«‚ÍSchemaExportƒc[ƒ‹‚ðŽg‚Á‚½Hibernate‚ÌDDL¶¬‚ð§Œä‚µ‚Ü‚·Bj + property-ref 属性ã¯ã€å¤–部キーãŒé–¢é€£ä»˜ã‘られãŸãƒ†ãƒ¼ãƒ–ルã®ã€ä¸»ã‚­ãƒ¼ã§ãªã„ + ユニークキーをå‚ç…§ã—ã¦ã„るレガシーデータをマップã™ã‚‹ãŸã‚ã«ã ã‘使ã†ã¹ãã§ã™ã€‚ + ã“ã‚Œã¯é†œã„リレーショナルモデルã§ã™ã€‚ + 例ãˆã° Product クラスãŒã€ + 主キーã§ãªã„ユニークãªã‚·ãƒªã‚¢ãƒ«ãƒŠãƒ³ãƒãƒ¼ã‚’æŒã£ã¦ã„ã‚‹ã¨ä»®å®šã—ã¦ã¿ã¦ãã ã•ã„。 + ( unique 属性ã¯SchemaExportツールを使ã£ãŸHibernateã®DDL生æˆã‚’制御ã—ã¾ã™ã€‚) ]]> - ˆÈ‰º‚̂悤‚É OrderItem ‚ɑ΂µ‚ă}ƒbƒsƒ“ƒO‚ðŽg‚¦‚Ü‚·F + 以下ã®ã‚ˆã†ã« OrderItem ã«å¯¾ã—ã¦ãƒžãƒƒãƒ”ングを使ãˆã¾ã™ï¼š ]]> - ‚µ‚©‚µA‚±‚ê‚ÍŒˆ‚µ‚Ä„§‚Å‚«‚Ü‚¹‚ñB + ã—ã‹ã—ã€ã“ã‚Œã¯æ±ºã—ã¦æŽ¨å¥¨ã§ãã¾ã›ã‚“。 - ŽQÆ‚µ‚½ƒ†ƒj[ƒNƒL[‚ªAŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì‘½”‚̃vƒƒpƒeƒB‚©‚ç\¬‚³‚ê‚éê‡A - Žw’肵‚½ <properties> —v‘f“à‚ÅAŽQÆ‚·‚éƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚ׂ«‚Å‚·B + å‚ç…§ã—ãŸãƒ¦ãƒ‹ãƒ¼ã‚¯ã‚­ãƒ¼ãŒã€é–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å¤šæ•°ã®ãƒ—ロパティã‹ã‚‰æ§‹æˆã•ã‚Œã‚‹å ´åˆã€ + 指定ã—㟠<properties> è¦ç´ å†…ã§ã€å‚ç…§ã™ã‚‹ãƒ—ロパティをマッピングã™ã‚‹ã¹ãã§ã™ã€‚ - ‚à‚µŽQÆ‚µ‚½ƒ†ƒj[ƒNƒL[‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚̃vƒƒpƒeƒB‚Å‚ ‚éꇂÍAƒvƒƒpƒeƒB‚̃pƒX‚ðŽw’è‚Å‚«‚Ü‚·B + ã‚‚ã—å‚ç…§ã—ãŸãƒ¦ãƒ‹ãƒ¼ã‚¯ã‚­ãƒ¼ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒ—ロパティã§ã‚ã‚‹å ´åˆã¯ã€ãƒ—ロパティã®ãƒ‘スを指定ã§ãã¾ã™ã€‚ ]]> @@ -1740,7 +1741,7 @@ one-to-one - ‘¼‚̉i‘±ƒNƒ‰ƒX‚ւ̈ê‘ΈêŠÖ˜A‚ÍAone-to-one —v‘f‚Å’è‹`‚µ‚Ü‚·B + ä»–ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã¸ã®ä¸€å¯¾ä¸€é–¢é€£ã¯ã€one-to-one è¦ç´ ã§å®šç¾©ã—ã¾ã™ã€‚ @@ -1774,112 +1775,112 @@ - nameFƒvƒƒpƒeƒB–¼B + name:プロパティå。 - classiƒIƒvƒVƒ‡ƒ“ - - ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF - ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB + class(オプション - + デフォルトã¯ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ˆã‚Šæ±ºå®šã•ã‚Œã‚‹ãƒ—ロパティã®åž‹ï¼‰ï¼š + 関連クラスã®åå‰ã€‚ - cascadeiƒIƒvƒVƒ‡ƒ“jF - eƒIƒuƒWƒFƒNƒg‚©‚çŠÖ˜AƒIƒuƒWƒFƒNƒg‚ÖA‚Ç‚Ì‘€ì‚ðƒJƒXƒP[ƒh‚·‚é‚©‚ðŽw’肵‚Ü‚·B + cascade(オプション): + 親オブジェクトã‹ã‚‰é–¢é€£ã‚ªãƒ–ジェクトã¸ã€ã©ã®æ“作をカスケードã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ - constrainediƒIƒvƒVƒ‡ƒ“jF - ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒe[ƒuƒ‹‚ÌŽåƒL[‚ɑ΂·‚éŠO•”ƒL[§–ñ‚ªA - ŠÖ˜AƒNƒ‰ƒX‚̃e[ƒuƒ‹‚ðŽQÆ‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B - ‚±‚̃IƒvƒVƒ‡ƒ“‚Í save() ‚Æ - delete() ‚ªƒJƒXƒP[ƒh‚³‚ê‚釘‚ɉe‹¿‚µA - ‚»‚µ‚ÄŠÖ˜A‚ªƒvƒƒLƒV‚³‚ê‚é‚©‚Ç‚¤‚©‚É‚à‰e‹¿‚µ‚Ü‚· - i‚»‚µ‚ăXƒL[ƒ}ƒGƒNƒXƒ|[ƒgƒc[ƒ‹‚É‚àŽg‚í‚ê‚Ü‚·jB + constrained(オプション): + マッピングã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルã®ä¸»ã‚­ãƒ¼ã«å¯¾ã™ã‚‹å¤–部キー制約ãŒã€ + 関連クラスã®ãƒ†ãƒ¼ãƒ–ルをå‚ç…§ã™ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ã€‚ + ã“ã®ã‚ªãƒ—ション㯠save() 㨠+ delete() ãŒã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã•ã‚Œã‚‹é †åºã«å½±éŸ¿ã—〠+ ãã—ã¦é–¢é€£ãŒãƒ—ロキシã•ã‚Œã‚‹ã‹ã©ã†ã‹ã«ã‚‚影響ã—ã¾ã™ + (ãã—ã¦ã‚¹ã‚­ãƒ¼ãƒžã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ„ールã«ã‚‚使ã‚ã‚Œã¾ã™ï¼‰ã€‚ - fetchiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í select jF - ŠO•”Œ‹‡ƒtƒFƒbƒ`‚ƇŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchj‚Ì‚Ç‚¿‚ç‚©‚ð‘I‘ð‚µ‚Ü‚·B + fetch(オプション - デフォルト㯠select ): + 外部çµåˆãƒ•ã‚§ãƒƒãƒã¨é †æ¬¡é¸æŠžãƒ•ã‚§ãƒƒãƒï¼ˆsequential select fetch)ã®ã©ã¡ã‚‰ã‹ã‚’é¸æŠžã—ã¾ã™ã€‚ - property-refiƒIƒvƒVƒ‡ƒ“jF - ‚±‚̃Nƒ‰ƒX‚ÌŽåƒL[‚ÉŒ‹‡‚³‚ꂽŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B - Žw’肳‚ê‚È‚¯‚ê‚ÎAŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ªŽg‚í‚ê‚Ü‚·B + property-ref(オプション): + ã“ã®ã‚¯ãƒ©ã‚¹ã®ä¸»ã‚­ãƒ¼ã«çµåˆã•ã‚ŒãŸé–¢é€£ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティå。 + 指定ã•ã‚Œãªã‘ã‚Œã°ã€é–¢é€£ã‚¯ãƒ©ã‚¹ã®ä¸»ã‚­ãƒ¼ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ - accessiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + access(オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ - formula (ƒIƒvƒVƒ‡ƒ“): - ‚Ù‚Æ‚ñ‚Ç‚·‚ׂĂ̈ê‘ΈêŠÖ˜A‚̓I[ƒi[‚̃Gƒ“ƒeƒBƒeƒB‚ÌŽåƒL[‚ւƃ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B - ‚±‚êˆÈŠO‚Ì‹H‚ÈꇂÍA - ‘¼‚̃Jƒ‰ƒ€‚âA•¡”‚̃Jƒ‰ƒ€ASQL\•¶‚ðŽg‚Á‚½Œ‹‡‚·‚邽‚ß‚ÌŽ®‚ðŽw’è‚Å‚«‚Ü‚·B - i—á‚Í org.hibernate.test.onetooneformula ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢Bj + formula (オプション): + ã»ã¨ã‚“ã©ã™ã¹ã¦ã®ä¸€å¯¾ä¸€é–¢é€£ã¯ã‚ªãƒ¼ãƒŠãƒ¼ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ä¸»ã‚­ãƒ¼ã¸ã¨ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ + ã“れ以外ã®ç¨€ãªå ´åˆã¯ã€ + ä»–ã®ã‚«ãƒ©ãƒ ã‚„ã€è¤‡æ•°ã®ã‚«ãƒ©ãƒ ã€SQL構文を使ã£ãŸçµåˆã™ã‚‹ãŸã‚ã®å¼ã‚’指定ã§ãã¾ã™ã€‚ + (例㯠org.hibernate.test.onetooneformula ã‚’å‚ç…§ã—ã¦ãã ã•ã„。) - lazy (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í proxy ): - ƒfƒtƒHƒ‹ƒg‚Å‚ÍA‘½d“x‚P‚ÌŠÖ˜A‚ªƒvƒƒLƒV‚Æ‚È‚è‚Ü‚·B - lazy="no-proxy" ‚ÍAƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Éʼn‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ÉA - ƒvƒƒpƒeƒB‚ð’x‰„ƒtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚· - (ƒrƒ‹ƒhŽž‚ɃoƒCƒgƒR[ƒhŽÀ‘•‚ª•K—v‚É‚È‚è‚Ü‚·)B - lazy="false" ‚ÍŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B - ‚à‚µ constrained="false" ‚È‚ç‚ÎA - ƒvƒƒLƒV‚ÍŽg—p•s‰Â”\‚Æ‚È‚èAŠÖ˜A‚𑦎ž‚ɃtƒFƒbƒ`‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢I + lazy (オプション - デフォルト㯠proxy ): + デフォルトã§ã¯ã€å¤šé‡åº¦ï¼‘ã®é–¢é€£ãŒãƒ—ロキシã¨ãªã‚Šã¾ã™ã€‚ + lazy="no-proxy" ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã«æœ€åˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã¨ãã«ã€ + プロパティをé…延フェッãƒã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ + (ビルド時ã«ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰å®Ÿè£…ãŒå¿…è¦ã«ãªã‚Šã¾ã™)。 + lazy="false" ã¯é–¢é€£ã‚’常ã«å³æ™‚ã«ãƒ•ã‚§ãƒƒãƒã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ã€‚ + ã‚‚ã— constrained="false" ãªã‚‰ã°ã€ + プロキシã¯ä½¿ç”¨ä¸å¯èƒ½ã¨ãªã‚Šã€é–¢é€£ã‚’å³æ™‚ã«ãƒ•ã‚§ãƒƒãƒã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ï¼ - entity-name (ƒIƒvƒVƒ‡ƒ“):ŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼ + entity-name (オプション):関連クラスã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å - ˆê‘ΈêŠÖ˜A‚É‚Í2Ží—Þ‚ ‚è‚Ü‚·F + 一対一関連ã«ã¯2種類ã‚ã‚Šã¾ã™ï¼š - ŽåƒL[ŠÖ˜A + 主キー関連 - ƒ†ƒj[ƒNŠO•”ƒL[ŠÖ˜A + ユニーク外部キー関連 - ŽåƒL[ŠÖ˜A‚É‚ÍA“Á•Ê‚ȃe[ƒuƒ‹ƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB - ‚à‚µ2‚‚Ìs‚ªŠÖ˜A‚É‚æ‚èŠÖŒW‚µ‚Ä‚¢‚ê‚ÎA2‚‚̃e[ƒuƒ‹‚Í“¯‚¶ŽåƒL[‚Ì’l‚ð‹¤—L‚µ‚Ü‚·B - ‚»‚Ì‚½‚ß2‚‚̃IƒuƒWƒFƒNƒg‚ðŽåƒL[ŠÖ˜A‚É‚æ‚Á‚ÄŠÖ˜A•t‚¯‚½‚¢‚Ì‚Å‚ ‚ê‚ÎA - ŠmŽÀ‚É“¯‚¶Ž¯•ÊŽq‚Ì’l‚ð‘ã“ü‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 主キー関連ã«ã¯ã€ç‰¹åˆ¥ãªãƒ†ãƒ¼ãƒ–ルカラムã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 + ã‚‚ã—2ã¤ã®è¡ŒãŒé–¢é€£ã«ã‚ˆã‚Šé–¢ä¿‚ã—ã¦ã„ã‚Œã°ã€2ã¤ã®ãƒ†ãƒ¼ãƒ–ルã¯åŒã˜ä¸»ã‚­ãƒ¼ã®å€¤ã‚’共有ã—ã¾ã™ã€‚ + ãã®ãŸã‚2ã¤ã®ã‚ªãƒ–ジェクトを主キー関連ã«ã‚ˆã£ã¦é–¢é€£ä»˜ã‘ãŸã„ã®ã§ã‚ã‚Œã°ã€ + 確実ã«åŒã˜è­˜åˆ¥å­ã®å€¤ã‚’代入ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ŽåƒL[ŠÖ˜A‚ðs‚¤‚½‚ß‚É‚ÍAˆÈ‰º‚̃}ƒbƒsƒ“ƒO‚ð Employee ‚Æ - Person ‚Ì‚»‚ꂼ‚ê‚ɒljÁ‚µ‚Ä‚­‚¾‚³‚¢B + 主キー関連を行ã†ãŸã‚ã«ã¯ã€ä»¥ä¸‹ã®ãƒžãƒƒãƒ”ングを Employee 㨠+ Person ã®ãã‚Œãžã‚Œã«è¿½åŠ ã—ã¦ãã ã•ã„。 ]]> ]]> - ‚±‚±‚ÅAPERSON‚ÆEMPLOYEEƒe[ƒuƒ‹‚ÌŠÖŒW‚·‚és‚ÌŽåƒL[‚ª“¯‚¶‚Å‚ ‚邱‚Æ‚ðŠmŽÀ‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚Ü‚¹‚ñB - ‚±‚±‚Å‚ÍAforeign ‚Æ‚¢‚¤“ÁŽê‚ÈHibernateŽ¯•ÊŽq¶¬í—ª‚ðŽg‚¢‚Ü‚·F + ã“ã“ã§ã€PERSONã¨EMPLOYEEテーブルã®é–¢ä¿‚ã™ã‚‹è¡Œã®ä¸»ã‚­ãƒ¼ãŒåŒã˜ã§ã‚ã‚‹ã“ã¨ã‚’確実ã«ã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。 + ã“ã“ã§ã¯ã€foreign ã¨ã„ã†ç‰¹æ®ŠãªHibernate識別å­ç”Ÿæˆæˆ¦ç•¥ã‚’使ã„ã¾ã™ï¼š @@ -1895,25 +1896,25 @@ ]]> - Employee ƒCƒ“ƒXƒ^ƒ“ƒX‚ªAPerson ‚Ì - employee ƒvƒƒpƒeƒB‚ÅŽQÆ‚³‚ê‚é‚悤‚ÉA - V‚µ‚­ƒZ[ƒu‚³‚ꂽ Person ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚É‚Í“¯‚¶ŽåƒL[‚Ì’l‚ª‘ã“ü‚³‚ê‚Ü‚·B + Employee インスタンスãŒã€Person ã® + employee プロパティã§å‚ç…§ã•ã‚Œã‚‹ã‚ˆã†ã«ã€ + æ–°ã—ãセーブã•ã‚ŒãŸ Person ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã¯åŒã˜ä¸»ã‚­ãƒ¼ã®å€¤ãŒä»£å…¥ã•ã‚Œã¾ã™ã€‚ - V‚µ‚­ƒZ[ƒu‚·‚é Person ƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA - ‚»‚Ì Person ‚Ì employee ƒvƒƒpƒeƒB‚ªŽQÆ‚·‚é - Employee ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‚µ‚Ä“¯‚¶ŽåƒL[‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B + æ–°ã—ãセーブã™ã‚‹ Person インスタンスã¯ã€ + ãã® Person ã® employee プロパティãŒå‚ç…§ã™ã‚‹ + Employee インスタンスã¨ã—ã¦åŒã˜ä¸»ã‚­ãƒ¼ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚ - ‚à‚¤1‚‚̕û–@‚Æ‚µ‚ÄAEmployee ‚©‚ç Person ‚Ö‚Ì - ƒ†ƒj[ƒN§–ñ‚ðŽg‚Á‚½ŠO•”ƒL[ŠÖ˜A‚͈ȉº‚̂悤‚É•\Œ»‚³‚ê‚Ü‚·F + ã‚‚ã†1ã¤ã®æ–¹æ³•ã¨ã—ã¦ã€Employee ã‹ã‚‰ Person ã¸ã® + ユニーク制約を使ã£ãŸå¤–部キー関連ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«è¡¨ç¾ã•ã‚Œã¾ã™ï¼š ]]> - ‚»‚µ‚Ä‚±‚ÌŠÖ˜A‚ÍA - ˆÈ‰º‚Ì‹Lq‚ð Person ‚̃}ƒbƒsƒ“ƒO‚ɒljÁ‚·‚邱‚Æ‚Å‘o•ûŒü‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·F + ãã—ã¦ã“ã®é–¢é€£ã¯ã€ + 以下ã®è¨˜è¿°ã‚’ Person ã®ãƒžãƒƒãƒ”ングã«è¿½åŠ ã™ã‚‹ã“ã¨ã§åŒæ–¹å‘ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼š ]]> @@ -1930,29 +1931,29 @@ ]]> - ŽåƒL[‚Æ‚µ‚Ä‘ã—ƒL[‚ÌŽg—p‚ð„§‚µ‚Ü‚·‚ªA - ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚ÄŽ©‘RƒL[‚ðŽ¯•Ê‚·‚é‚悤‚É‚·‚ׂ«‚Å‚·B - Ž©‘RƒL[‚̓†ƒj[ƒN‚©‚”ñnull‚Ȉê‚‚̃vƒƒpƒeƒBA‚Ü‚½‚̓vƒƒpƒeƒB‚̘AŒ‹‚Å‚·B - •s•Ï‚Å‚ ‚ê‚΂³‚ç‚É—Ç‚¢‚Å‚·B - <natural-id> —v‘f“à‚ÅŽ©‘RƒL[‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - Hibernate‚Í•K‘R“I‚Ƀ†ƒj[ƒN‚©‚Ânull’l‚ð‹–‰Â‚·‚駖ñ‚𶬂µA - ‚±‚¤‚µ‚ă}ƒbƒsƒ“ƒO‚Í‚æ‚莩ŒÈ‹Lq“I‚É‚È‚è‚Ü‚·B + 主キーã¨ã—ã¦ä»£ç†ã‚­ãƒ¼ã®ä½¿ç”¨ã‚’推奨ã—ã¾ã™ãŒã€ + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—ã¦è‡ªç„¶ã‚­ãƒ¼ã‚’識別ã™ã‚‹ã‚ˆã†ã«ã™ã¹ãã§ã™ã€‚ + 自然キーã¯ãƒ¦ãƒ‹ãƒ¼ã‚¯ã‹ã¤éžnullãªä¸€ã¤ã®ãƒ—ロパティã€ã¾ãŸã¯ãƒ—ロパティã®é€£çµã§ã™ã€‚ + ä¸å¤‰ã§ã‚ã‚Œã°ã•ã‚‰ã«è‰¯ã„ã§ã™ã€‚ + <natural-id> è¦ç´ å†…ã§è‡ªç„¶ã‚­ãƒ¼ã®ãƒ—ロパティをマッピングã—ã¾ã™ã€‚ + Hibernateã¯å¿…然的ã«ãƒ¦ãƒ‹ãƒ¼ã‚¯ã‹ã¤null値を許å¯ã™ã‚‹åˆ¶ç´„を生æˆã—〠+ ã“ã†ã—ã¦ãƒžãƒƒãƒ”ングã¯ã‚ˆã‚Šè‡ªå·±è¨˜è¿°çš„ã«ãªã‚Šã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒB‚ÌŽ©‘RƒL[ƒvƒƒpƒeƒB‚Ì”äŠr‚É‚ÍA - equals() ‚Æ hashCode() ‚ÌŽÀ‘•‚ð‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B + エンティティã®è‡ªç„¶ã‚­ãƒ¼ãƒ—ロパティã®æ¯”較ã«ã¯ã€ + equals() 㨠hashCode() ã®å®Ÿè£…ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚ - ‚±‚̃}ƒbƒsƒ“ƒO‚ÍŽ©‘RŽåƒL[‚ðŽg‚Á‚½ƒGƒ“ƒeƒBƒeƒB‚Å‚ÌŽg—p‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñB + ã“ã®ãƒžãƒƒãƒ”ングã¯è‡ªç„¶ä¸»ã‚­ãƒ¼ã‚’使ã£ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã®ä½¿ç”¨ã‚’æ„図ã—ã¦ã„ã¾ã›ã‚“。 - mutable (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í false ): - ƒfƒtƒHƒ‹ƒg‚Å‚ÍAŽ©‘RŽ¯•ÊŽqƒvƒƒpƒeƒB‚Í•s•Ï(’è”)‚Æ‘z’肳‚ê‚Ä‚¢‚Ü‚·B + mutable (オプション, デフォルト㯠false ): + デフォルトã§ã¯ã€è‡ªç„¶è­˜åˆ¥å­ãƒ—ロパティã¯ä¸å¤‰(定数)ã¨æƒ³å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ @@ -1963,10 +1964,10 @@ component, dynamic-component - <component> —v‘f‚ÍA - ŽqƒIƒuƒWƒFƒNƒg‚̃vƒƒpƒeƒB‚ðeƒNƒ‰ƒX‚̃e[ƒuƒ‹‚̃Jƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍŽ©•ª‚̃vƒƒpƒeƒBAƒRƒ“ƒ|[ƒlƒ“ƒgAƒRƒŒƒNƒVƒ‡ƒ“‚̇‚É’è‹`‚Å‚«‚Ü‚·B - ˆÈ‰º‚ÌuƒRƒ“ƒ|[ƒlƒ“ƒgv‚ðŒ©‚Ä‚­‚¾‚³‚¢B + <component> è¦ç´ ã¯ã€ + å­ã‚ªãƒ–ジェクトã®ãƒ—ロパティを親クラスã®ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + コンãƒãƒ¼ãƒãƒ³ãƒˆã¯è‡ªåˆ†ã®ãƒ—ロパティã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®é †ã«å®šç¾©ã§ãã¾ã™ã€‚ + 以下ã®ã€Œã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ã‚’見ã¦ãã ã•ã„。 @@ -1999,72 +2000,72 @@ - nameFƒvƒƒpƒeƒB–¼B + name:プロパティå。 class - iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF - ƒRƒ“ƒ|[ƒlƒ“ƒgiŽqjƒNƒ‰ƒX‚Ì–¼‘OB + (オプション - デフォルトã¯ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ˆã‚Šæ±ºå®šã•ã‚Œã‚‹ãƒ—ロパティã®åž‹ï¼‰ï¼š + コンãƒãƒ¼ãƒãƒ³ãƒˆï¼ˆå­ï¼‰ã‚¯ãƒ©ã‚¹ã®åå‰ã€‚ - insert Fƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì - INSERT ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + insert :マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQLã® + INSERT ã«ç¾ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - update : ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL ‚Ì - UPDATE ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + update : マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQL ã® + UPDATE ã«ç¾ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - access iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + access (オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ - lazy (optional - ƒfƒtƒHƒ‹ƒg‚Í false ): - ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Éʼn‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ÉA - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ð’x‰„‚µ‚ătƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B - (ƒoƒCƒgƒR[ƒhŽÀ‘•‚ð쬂·‚鎞ŠÔ‚ª•K—v‚É‚È‚è‚Ü‚·) + lazy (optional - デフォルト㯠false ): + インスタンス変数ã«æœ€åˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã¨ãã«ã€ + コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’é…延ã—ã¦ãƒ•ã‚§ãƒƒãƒã™ã‚‹ã‚ˆã†æŒ‡å®šã—ã¾ã™ã€‚ + (ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰å®Ÿè£…を作æˆã™ã‚‹æ™‚é–“ãŒå¿…è¦ã«ãªã‚Šã¾ã™) - optimistic-lock (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - ‚±‚̃vƒƒpƒeƒB‚ÌXV‚ÉAŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎA‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚ð‘‚â‚·‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B + optimistic-lock (オプション - デフォルト㯠true ): + ã“ã®ãƒ—ロパティã®æ›´æ–°ã«ã€æ¥½è¦³ãƒ­ãƒƒã‚¯ã®å–å¾—ã‚’è¦æ±‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ã“ã®ãƒ—ロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹ã¨ãã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’増やã™ã¹ãã‹ã‚’決定ã—ã¾ã™ã€‚ - unique (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í false ): - ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴ}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ÉAƒ†ƒj[ƒN§–ñ‚ª‘¶Ý‚·‚é‚©‚ðŽw’肵‚Ü‚·B + unique (オプション - デフォルト㯠false ): + コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã™ã¹ã¦ã®ãƒžãƒƒãƒ”ングã™ã‚‹ã‚«ãƒ©ãƒ ã«ã€ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ - Žq‚Ì <property> ƒ^ƒO‚ÅA - Žq‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ðƒe[ƒuƒ‹ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B + å­ã® <property> ã‚¿ã‚°ã§ã€ + å­ã®ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティをテーブルカラムã«ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ - <component> —v‘f‚ÍAeƒGƒ“ƒeƒBƒeƒB‚Ö–ß‚éŽQÆ‚Æ‚µ‚ÄA - ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚é <parent> ƒTƒu—v‘f‚ð‹–‰Â‚µ‚Ü‚·B + <component> è¦ç´ ã¯ã€è¦ªã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸æˆ»ã‚‹å‚ç…§ã¨ã—ã¦ã€ + コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティをマッピングã™ã‚‹ <parent> サブè¦ç´ ã‚’許å¯ã—ã¾ã™ã€‚ - <dynamic-component> —v‘f‚ÍA - Map ‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚邱‚Æ‚ð‰Â”\‚É‚µ‚Ü‚·B - ƒvƒƒpƒeƒB–¼‚Ímap‚̃L[‚ðŽQÆ‚µ‚Ü‚·B ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + <dynamic-component> è¦ç´ ã¯ã€ + Map ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã—ã¦ãƒžãƒƒãƒ”ングã•ã‚Œã‚‹ã“ã¨ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ + プロパティåã¯mapã®ã‚­ãƒ¼ã‚’å‚ç…§ã—ã¾ã™ã€‚ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 @@ -2074,11 +2075,11 @@ properties - <properties> —v‘f‚̓Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ÌŽw’肳‚ꂽA - ˜_—“I‚ȃOƒ‹[ƒsƒ“ƒO‚ð‰Â”\‚É‚µ‚Ü‚·B - ‚±‚Ì\‘¢‚ÌÅ‚àd—v‚ÈŽg—p•û–@‚ÍA - property-ref ‚̃^[ƒQƒbƒg‚É‚È‚éƒvƒƒpƒeƒB‚ÌŒ‹‡‚ð‹–‰Â‚·‚邱‚Æ‚Å‚·B - ‚»‚ê‚Í‚Ü‚½A•¡”ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚ð’è‹`‚·‚éŠÈ’P‚È•û–@‚Å‚à‚ ‚è‚Ü‚·B + <properties> è¦ç´ ã¯ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティã®æŒ‡å®šã•ã‚ŒãŸã€ + è«–ç†çš„ãªã‚°ãƒ«ãƒ¼ãƒ”ングをå¯èƒ½ã«ã—ã¾ã™ã€‚ + ã“ã®æ§‹é€ ã®æœ€ã‚‚é‡è¦ãªä½¿ç”¨æ–¹æ³•ã¯ã€ + property-ref ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã«ãªã‚‹ãƒ—ロパティã®çµåˆã‚’許å¯ã™ã‚‹ã“ã¨ã§ã™ã€‚ + ãã‚Œã¯ã¾ãŸã€è¤‡æ•°ã‚«ãƒ©ãƒ ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„を定義ã™ã‚‹ç°¡å˜ãªæ–¹æ³•ã§ã‚‚ã‚ã‚Šã¾ã™ã€‚ @@ -2104,40 +2105,40 @@ - name : ƒOƒ‹[ƒsƒ“ƒO‚̘_—–¼B - ŽÀۂ̃vƒƒpƒeƒB–¼‚Å‚Í ‚ ‚è‚Ü‚¹‚ñ B + name : グルーピングã®è«–ç†å。 + 実際ã®ãƒ—ロパティåã§ã¯ ã‚ã‚Šã¾ã›ã‚“ 。 - insertFƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì - INSERT ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + insert:マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQLã® + INSERT ã«ç¾ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - updateFƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì - UPDATE ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + update:マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ãŒSQLã® + UPDATE ã«ç¾ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - optimistic-lock (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚ÌXV‚ÉŠyŠÏ“IƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎA‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚ð‘‚â‚·‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B + optimistic-lock (オプション - デフォルト㯠true ): + ã“れらã®ãƒ—ロパティã®æ›´æ–°ã«æ¥½è¦³çš„ロックã®å–å¾—ã‚’è¦æ±‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ã“ã®ãƒ—ロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹ã¨ãã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’増やã™ã¹ãã‹ã‚’決定ã—ã¾ã™ã€‚ - unique (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í false ): - ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴ}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ÉAƒ†ƒj[ƒN§–ñ‚ª‘¶Ý‚·‚é‚©‚ðŽw’肵‚Ü‚·B + unique (オプション - デフォルト㯠false ): + コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã™ã¹ã¦ã®ãƒžãƒƒãƒ”ングã™ã‚‹ã‚«ãƒ©ãƒ ã«ã€ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ - —Ⴆ‚ÎA‚à‚µˆÈ‰º‚̂悤‚È <properties> ƒ}ƒbƒsƒ“ƒO‚ª‚ ‚Á‚½ê‡F + 例ãˆã°ã€ã‚‚ã—以下ã®ã‚ˆã†ãª <properties> マッピングãŒã‚ã£ãŸå ´åˆï¼š @@ -2152,8 +2153,8 @@ ]]> - ŽåƒL[‚Ì‘ã‚í‚è‚É Person ƒe[ƒuƒ‹‚̃†ƒj[ƒNƒL[‚Ö‚ÌŽQÆ‚ðŽ‚ÂA - ƒŒƒKƒV[ƒf[ƒ^‚ÌŠÖ˜A‚ðŽ‚‚©‚à‚µ‚ê‚Ü‚¹‚ñBF + 主キーã®ä»£ã‚ã‚Šã« Person テーブルã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ã‚­ãƒ¼ã¸ã®å‚照をæŒã¤ã€ + レガシーデータã®é–¢é€£ã‚’æŒã¤ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。: ]]> - ‚µ‚©‚µA‚±‚̂悤‚ȃŒƒKƒV[ƒf[ƒ^ƒ}ƒbƒsƒ“ƒO‚̃Rƒ“ƒeƒLƒXƒgŠO‚Ö‚ÌŽg—p‚Í„§‚µ‚Ü‚¹‚ñB + ã—ã‹ã—ã€ã“ã®ã‚ˆã†ãªãƒ¬ã‚¬ã‚·ãƒ¼ãƒ‡ãƒ¼ã‚¿ãƒžãƒƒãƒ”ングã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå¤–ã¸ã®ä½¿ç”¨ã¯æŽ¨å¥¨ã—ã¾ã›ã‚“。 @@ -2173,9 +2174,9 @@ subclass - ÅŒã‚Ƀ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚É‚ÍAƒ‹[ƒg‚̉i‘±ƒNƒ‰ƒX‚ÌŠeƒTƒuƒNƒ‰ƒX‚Ì’è‹`‚ª•K—v‚Å‚·B - table-per-class-hierarchyƒ}ƒbƒsƒ“ƒOí—ª‚Å‚ÍA - <subclass> ’è‹`‚ªŽg‚í‚ê‚Ü‚·B + 最後ã«ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªæ°¸ç¶šåŒ–ã«ã¯ã€ãƒ«ãƒ¼ãƒˆã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã®å„サブクラスã®å®šç¾©ãŒå¿…è¦ã§ã™ã€‚ + table-per-class-hierarchyマッピング戦略ã§ã¯ã€ + <subclass> 定義ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ @@ -2202,37 +2203,37 @@ - nameFƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B + name:サブクラスã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹å。 - discriminator-valueiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼jF - ŒÂX‚̃TƒuƒNƒ‰ƒX‚ð‹æ•Ê‚·‚邽‚ß‚Ì’lB + discriminator-value(オプション - デフォルトã¯ã‚¯ãƒ©ã‚¹å): + 個々ã®ã‚µãƒ–クラスを区別ã™ã‚‹ãŸã‚ã®å€¤ã€‚ - proxyiƒIƒvƒVƒ‡ƒ“jF - ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg‚¤ƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B + proxy(オプション): + é…延åˆæœŸåŒ–プロキシã«ä½¿ã†ã‚¯ãƒ©ã‚¹ã‚„インターフェイスを指定ã—ã¾ã™ã€‚ - lazyiƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í true jF - lazy="false" ‚ÆÝ’è‚·‚é‚ÆA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB + lazy(オプション, デフォルト㯠true ): + lazy="false" ã¨è¨­å®šã™ã‚‹ã¨ã€é…延フェッãƒãŒä½¿ç”¨ã§ãã¾ã›ã‚“。 - ŠeƒTƒuƒNƒ‰ƒX‚Å‚ÍA‰i‘±ƒvƒƒpƒeƒB‚ƃTƒuƒNƒ‰ƒX‚ð’è‹`‚µ‚Ü‚·B - <version> ‚Æ <id> ƒvƒƒpƒeƒB‚ÍA - ƒ‹[ƒgƒNƒ‰ƒX‚©‚çŒp³‚³‚ê‚é‚Ɖ¼’肳‚ê‚Ü‚·B - ŠK‘w\‘¢‚É‚¨‚¯‚éƒTƒuƒNƒ‰ƒX‚ÍA - ƒ†ƒj[ƒN‚È discriminator-value ‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - none‚ªŽw’肳‚ê‚é‚ÆAŠ®‘SCü‚³‚ꂽJavaƒNƒ‰ƒX–¼‚ªŽg‚í‚ê‚Ü‚·B + å„サブクラスã§ã¯ã€æ°¸ç¶šãƒ—ロパティã¨ã‚µãƒ–クラスを定義ã—ã¾ã™ã€‚ + <version> 㨠<id> プロパティã¯ã€ + ルートクラスã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã‚‹ã¨ä»®å®šã•ã‚Œã¾ã™ã€‚ + 階層構造ã«ãŠã‘るサブクラスã¯ã€ + ユニーク㪠discriminator-value を定義ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + noneãŒæŒ‡å®šã•ã‚Œã‚‹ã¨ã€å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸJavaクラスåãŒä½¿ã‚ã‚Œã¾ã™ã€‚ - Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í ‚ðŒ©‚Ä‚­‚¾‚³‚¢B + 継承ã®ãƒžãƒƒãƒ”ングã«é–¢ã™ã‚‹æƒ…報㯠を見ã¦ãã ã•ã„。 @@ -2277,10 +2278,10 @@ joined-subclass - ‚à‚¤1‚‚̕û–@‚Æ‚µ‚ÄAŠeƒTƒuƒNƒ‰ƒX‚ðŽ©g‚̃e[ƒuƒ‹‚Öƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚· - (table-per-subclass mapping strategy)B - Œp³‚µ‚½ó‘Ԃ̓X[ƒp[ƒNƒ‰ƒX‚̃e[ƒuƒ‹‚ðŽg‚Á‚½Œ‹‡‚ÅŒŸõ‚µ‚Ü‚·B - <joined-subclass> —v‘f‚ðŽg—p‚µ‚Ü‚·B + ã‚‚ã†1ã¤ã®æ–¹æ³•ã¨ã—ã¦ã€å„サブクラスを自身ã®ãƒ†ãƒ¼ãƒ–ルã¸ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ + (table-per-subclass mapping strategy)。 + 継承ã—ãŸçŠ¶æ…‹ã¯ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ†ãƒ¼ãƒ–ルを使ã£ãŸçµåˆã§æ¤œç´¢ã—ã¾ã™ã€‚ + <joined-subclass> è¦ç´ ã‚’使用ã—ã¾ã™ã€‚ @@ -2313,34 +2314,34 @@ - nameFƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B + name:サブクラスã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹å。 - table :ƒTƒuƒNƒ‰ƒXƒe[ƒuƒ‹‚Ì–¼‘OB + table :サブクラステーブルã®åå‰ã€‚ - proxy (ƒIƒvƒVƒ‡ƒ“): - ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg—p‚·‚éƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B + proxy (オプション): + é…延åˆæœŸåŒ–プロキシã«ä½¿ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚„インターフェイスを指定ã—ã¾ã™ã€‚ - lazy (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í true ): - lazy="false" ‚Æ‚·‚é‚ÆA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB + lazy (オプション, デフォルト㯠true ): + lazy="false" ã¨ã™ã‚‹ã¨ã€é…延フェッãƒãŒä½¿ç”¨ã§ãã¾ã›ã‚“。 - ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚É‚ÍAŽ¯•ÊƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB - ‚µ‚©‚µŠeƒTƒuƒNƒ‰ƒX‚Í <key> —v‘f‚ðŽg‚¢A - ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ð•ÛŽ‚·‚éƒe[ƒuƒ‹ƒJƒ‰ƒ€‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚±‚Ì͂̉‚߂̃}ƒbƒsƒ“ƒO‚͈ȉº‚̂悤‚É‘‚«’¼‚¹‚Ü‚·F + ã“ã®ãƒžãƒƒãƒ”ング戦略ã«ã¯ã€è­˜åˆ¥ã‚«ãƒ©ãƒ ã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 + ã—ã‹ã—å„サブクラス㯠<key> è¦ç´ ã‚’使ã„〠+ オブジェクト識別å­ã‚’ä¿æŒã™ã‚‹ãƒ†ãƒ¼ãƒ–ルカラムを定義ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã“ã®ç« ã®åˆã‚ã®ãƒžãƒƒãƒ”ングã¯ä»¥ä¸‹ã®ã‚ˆã†ã«æ›¸ãç›´ã›ã¾ã™ï¼š @@ -2370,13 +2371,13 @@ - + ]]> - Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í ‚ðŒ©‚Ä‚­‚¾‚³‚¢B + 継承ã®ãƒžãƒƒãƒ”ングã«é–¢ã™ã‚‹æƒ…報㯠を見ã¦ãã ã•ã„。 @@ -2385,14 +2386,14 @@ union-subclass - 3‚–ڂ̑I‘ðŽˆ‚ÍAŒp³ŠK‘w‚Ì‹ïÛƒNƒ‰ƒX‚Ì‚Ý‚ðƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚Å‚· - (the table-per-concrete-classí—ª)B - ‚»‚ꂼ‚ê‚̃e[ƒuƒ‹‚ÍŒp³‚Ìó‘Ô‚ðŠÜ‚ß‚·‚ׂẴNƒ‰ƒX‚̉i‘±ó‘Ô‚ð’è‹`‚µ‚Ü‚·B - Hibernate‚Å‚Í‚»‚Ì—l‚ÈŒp³ŠK‘w‚ª•K‚¸‚µ‚à•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ’Pƒ‚É‚»‚ꂼ‚ê‚̃Nƒ‰ƒX‚ðA - •ÊX‚Ì <class> 錾‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚µ‚©‚µƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A(—Ⴆ‚Î ŠK‘w‚̃X[ƒp[ƒNƒ‰ƒX‚Ö‚ÌŠÖ˜A)‚ðŽg‚¢‚½‚¢‚È‚çA - <union-subclass> ƒ}ƒbƒsƒ“ƒO‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B + 3ã¤ç›®ã®é¸æŠžè‚¢ã¯ã€ç¶™æ‰¿éšŽå±¤ã®å…·è±¡ã‚¯ãƒ©ã‚¹ã®ã¿ã‚’テーブルã«ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ã§ã™ + (the table-per-concrete-class戦略)。 + ãã‚Œãžã‚Œã®ãƒ†ãƒ¼ãƒ–ルã¯ç¶™æ‰¿ã®çŠ¶æ…‹ã‚’å«ã‚ã™ã¹ã¦ã®ã‚¯ãƒ©ã‚¹ã®æ°¸ç¶šçŠ¶æ…‹ã‚’定義ã—ã¾ã™ã€‚ + Hibernateã§ã¯ãã®æ§˜ãªç¶™æ‰¿éšŽå±¤ãŒå¿…ãšã—ã‚‚å¿…è¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + å˜ç´”ã«ãã‚Œãžã‚Œã®ã‚¯ãƒ©ã‚¹ã‚’〠+ 別々㮠<class> 宣言を使ã£ã¦ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã—ã‹ã—ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªé–¢é€£(例ãˆã° 階層ã®ã‚¹ãƒ¼ãƒ‘ークラスã¸ã®é–¢é€£)を使ã„ãŸã„ãªã‚‰ã€ + <union-subclass> マッピングを使ã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ @@ -2425,35 +2426,35 @@ - nameFƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B + name:サブクラスã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹å。 - table :ƒTƒuƒNƒ‰ƒXƒe[ƒuƒ‹‚Ì–¼‘OB + table :サブクラステーブルã®åå‰ã€‚ - proxy (ƒIƒvƒVƒ‡ƒ“): - ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg—p‚·‚éƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B + proxy (オプション): + é…延åˆæœŸåŒ–プロキシã«ä½¿ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚„インターフェイスを指定ã—ã¾ã™ã€‚ - lazy (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í true ): - lazy="false" ‚Æ‚·‚é‚ÆA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB + lazy (オプション, デフォルト㯠true ): + lazy="false" ã¨ã™ã‚‹ã¨ã€é…延フェッãƒãŒä½¿ç”¨ã§ãã¾ã›ã‚“。 - ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚Å‚ÍŽ¯•ÊƒJƒ‰ƒ€‚âƒL[ƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB + ã“ã®ãƒžãƒƒãƒ”ング戦略ã§ã¯è­˜åˆ¥ã‚«ãƒ©ãƒ ã‚„キーカラムã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 - Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í ‚ðŒ©‚Ä‚­‚¾‚³‚¢B + 継承ã®ãƒžãƒƒãƒ”ングã«é–¢ã™ã‚‹æƒ…報㯠を見ã¦ãã ã•ã„。 @@ -2462,8 +2463,8 @@ join - <join> —v‘f‚ðŽg‚¤‚±‚Æ‚ÅA - ‚P‚‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ð‚¢‚­‚‚à‚̃e[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + <join> è¦ç´ ã‚’使ã†ã“ã¨ã§ã€ + 1ã¤ã®ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティをã„ãã¤ã‚‚ã®ãƒ†ãƒ¼ãƒ–ルã«ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -2492,58 +2493,58 @@ - table :Œ‹‡‚µ‚½ƒe[ƒuƒ‹‚Ì–¼‘O + table :çµåˆã—ãŸãƒ†ãƒ¼ãƒ–ルã®åå‰ - schema (ƒIƒvƒVƒ‡ƒ“): - ƒ‹[ƒg‚Ì <hibernate-mapping> —v‘f‚ÅŽw’肵‚½ƒXƒL[ƒ}–¼‚ð - ƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B + schema (オプション): + ルート㮠<hibernate-mapping> è¦ç´ ã§æŒ‡å®šã—ãŸã‚¹ã‚­ãƒ¼ãƒžåã‚’ + オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™ã€‚ - catalog (ƒIƒvƒVƒ‡ƒ“): - ƒ‹[ƒg‚Ì <hibernate-mapping> —v‘f‚ÅŽw’肵‚½ƒJƒ^ƒƒO–¼‚ð - ƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B + catalog (オプション): + ルート㮠<hibernate-mapping> è¦ç´ ã§æŒ‡å®šã—ãŸã‚«ã‚¿ãƒ­ã‚°åã‚’ + オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™ã€‚ - fetch (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í join ): - join ‚ðݒ肵‚½ê‡A - Hibernate‚̓fƒtƒHƒ‹ƒg‚ÅAƒNƒ‰ƒX‚âƒX[ƒp[ƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <join> - ‚ðŒŸõ‚·‚é‚Ì‚É“à•”Œ‹‡‚ðŽg‚¢AƒTƒuƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <join> - ‚ðŒŸõ‚·‚é‚Ì‚ÉŠO•”Œ‹‡‚ðŽg‚¢‚Ü‚·B - select ‚ðݒ肵‚½ê‡‚É‚ÍA - Hibernate‚̓TƒuƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <join> - ‚Ì‘I‘ð‚ɇŽŸ‘I‘ð‚ðŽg‚¢‚Ü‚·B‚±‚Ìê‡A - s‚ªƒTƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‘ã•\‚·‚邱‚Æ‚ª‚í‚©‚Á‚½ê‡‚É‚Ì‚Ý”­s‚³‚ê‚Ü‚·B - “à•”Œ‹‡‚̓Nƒ‰ƒX‚â‚»‚̃X[ƒp[ƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <join> ‚ðŒŸõ - ‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B + fetch (オプション - デフォルト㯠join ): + join を設定ã—ãŸå ´åˆã€ + Hibernateã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã€ã‚¯ãƒ©ã‚¹ã‚„スーパークラスã§å®šç¾©ã•ã‚ŒãŸ <join> + を検索ã™ã‚‹ã®ã«å†…部çµåˆã‚’使ã„ã€ã‚µãƒ–クラスã§å®šç¾©ã•ã‚ŒãŸ <join> + を検索ã™ã‚‹ã®ã«å¤–部çµåˆã‚’使ã„ã¾ã™ã€‚ + select を設定ã—ãŸå ´åˆã«ã¯ã€ + Hibernateã¯ã‚µãƒ–クラスã§å®šç¾©ã•ã‚ŒãŸ <join> + ã®é¸æŠžã«é †æ¬¡é¸æŠžã‚’使ã„ã¾ã™ã€‚ã“ã®å ´åˆã€ + è¡ŒãŒã‚µãƒ–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’代表ã™ã‚‹ã“ã¨ãŒã‚ã‹ã£ãŸå ´åˆã«ã®ã¿ç™ºè¡Œã•ã‚Œã¾ã™ã€‚ + 内部çµåˆã¯ã‚¯ãƒ©ã‚¹ã‚„ãã®ã‚¹ãƒ¼ãƒ‘ークラスã§å®šç¾©ã•ã‚ŒãŸ <join> を検索 + ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ - inverse (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í false ): - ‚à‚µ‰Â”\‚Å‚ ‚ê‚ÎAHibernate‚Í‚±‚ÌŒ‹‡‚Å’è‹`‚³‚ê‚Ä‚¢‚éƒvƒƒpƒeƒB‚ɑ΂µ - ‘}“ü‚âXV‚ðs‚¢‚Ü‚¹‚ñB + inverse (オプション - デフォルト㯠false ): + ã‚‚ã—å¯èƒ½ã§ã‚ã‚Œã°ã€Hibernateã¯ã“ã®çµåˆã§å®šç¾©ã•ã‚Œã¦ã„るプロパティã«å¯¾ã— + 挿入や更新を行ã„ã¾ã›ã‚“。 - optional (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í false ): - ‚à‚µ‰Â”\‚Å‚ ‚ê‚ÎAHibernate‚Í‚±‚ÌŒ‹‡‚Å’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚ªnull‚Å‚È‚¢ê‡‚É‚Ì‚Ý - s‚ð‘}“ü‚µA‚»‚̃vƒƒpƒeƒB‚ÌŒŸõ‚É‚Íí‚ÉŠO•”Œ‹‡‚ðŽg—p‚µ‚Ü‚·B + optional (オプション - デフォルト㯠false ): + ã‚‚ã—å¯èƒ½ã§ã‚ã‚Œã°ã€Hibernateã¯ã“ã®çµåˆã§å®šç¾©ã•ã‚ŒãŸãƒ—ロパティãŒnullã§ãªã„å ´åˆã«ã®ã¿ + 行を挿入ã—ã€ãã®ãƒ—ロパティã®æ¤œç´¢ã«ã¯å¸¸ã«å¤–部çµåˆã‚’使用ã—ã¾ã™ã€‚ - —Ⴆ‚Îl‚̃AƒhƒŒƒX‚Ìî•ñ‚𕪗£‚µ‚½ƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‰Â”\‚Å‚· - (‚·‚ׂẴvƒƒpƒeƒB‚ɑ΂µ‚Ä’lŒ^‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ð•ÛŽ‚µ‚Ü‚·)B + 例ãˆã°äººã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æƒ…報を分離ã—ãŸãƒ†ãƒ¼ãƒ–ルã«ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ + (ã™ã¹ã¦ã®ãƒ—ロパティã«å¯¾ã—ã¦å€¤åž‹ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‚’ä¿æŒã—ã¾ã™)。 - ‚±‚Ì“Á’¥‚Í‚µ‚΂µ‚΃ŒƒKƒV[ƒf[ƒ^ƒ‚ƒfƒ‹‚ɑ΂µ‚Ä‚Ì‚Ý—L—p‚Å‚·‚ªA - ƒNƒ‰ƒX‚æ‚è‚à­‚È‚¢ƒe[ƒuƒ‹‚ÆA‚«‚ß‚Ìׂ©‚¢ƒhƒƒCƒ“ƒ‚ƒfƒ‹‚ð„§‚µ‚Ü‚·B - ‚µ‚©‚µŒã‚Åà–¾‚·‚é‚悤‚ÉA‚P‚‚̃Nƒ‰ƒXŠK‘w‚ÅŒp³‚̃}ƒbƒsƒ“ƒOí—ª‚ðØ‚è‘Ö‚¦‚鎞‚É‚Í—L—p‚Å‚·B + ã“ã®ç‰¹å¾´ã¯ã—ã°ã—ã°ãƒ¬ã‚¬ã‚·ãƒ¼ãƒ‡ãƒ¼ã‚¿ãƒ¢ãƒ‡ãƒ«ã«å¯¾ã—ã¦ã®ã¿æœ‰ç”¨ã§ã™ãŒã€ + クラスよりも少ãªã„テーブルã¨ã€ãã‚ã®ç´°ã‹ã„ドメインモデルを推奨ã—ã¾ã™ã€‚ + ã—ã‹ã—後ã§èª¬æ˜Žã™ã‚‹ã‚ˆã†ã«ã€ï¼‘ã¤ã®ã‚¯ãƒ©ã‚¹éšŽå±¤ã§ç¶™æ‰¿ã®ãƒžãƒƒãƒ”ング戦略を切り替ãˆã‚‹æ™‚ã«ã¯æœ‰ç”¨ã§ã™ã€‚ @@ -2571,10 +2572,10 @@ key - ¡‚܂ʼn½“x‚© <key> —v‘f‚ªo‚Ä‚«‚Ü‚µ‚½B - ‚±‚Ì—v‘f‚ÍV‚µ‚¢ƒe[ƒuƒ‹‚Ö‚ÌŒ‹‡‚ð’è‹`‚µ‚½‚èA - Œ‹‡ƒe[ƒuƒ‹‚ÅŠO•”ƒL[‚ð’è‹`‚µ‚½‚è‚·‚ée—v‘f‚Ì‚Ç‚±‚É‚Å‚àŒ»‚êA - ƒIƒŠƒWƒiƒ‹ƒe[ƒuƒ‹‚ÌŽåƒL[‚ðŽQÆ‚µ‚Ü‚·B + 今ã¾ã§ä½•åº¦ã‹ <key> è¦ç´ ãŒå‡ºã¦ãã¾ã—ãŸã€‚ + ã“ã®è¦ç´ ã¯æ–°ã—ã„テーブルã¸ã®çµåˆã‚’定義ã—ãŸã‚Šã€ + çµåˆãƒ†ãƒ¼ãƒ–ルã§å¤–部キーを定義ã—ãŸã‚Šã™ã‚‹è¦ªè¦ç´ ã®ã©ã“ã«ã§ã‚‚ç¾ã‚Œã€ + オリジナルテーブルã®ä¸»ã‚­ãƒ¼ã‚’å‚ç…§ã—ã¾ã™ã€‚ @@ -2598,72 +2599,72 @@ - column (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB - ƒlƒXƒg‚µ‚½ <column> ƒJƒ‰ƒ€‚É‚æ‚Á‚Ä‚àŽw’肳‚ê‚Ü‚·B + column (オプション):外部キーカラムã®åå‰ã€‚ + ãƒã‚¹ãƒˆã—㟠<column> カラムã«ã‚ˆã£ã¦ã‚‚指定ã•ã‚Œã¾ã™ã€‚ - on-delete (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í noaction): - ŠO•”ƒL[§–ñ‚ªƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚ŃJƒXƒP[ƒh휂ª‰Â”\‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B + on-delete (オプション, デフォルト㯠noaction): + 外部キー制約ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ¬ãƒ™ãƒ«ã§ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰å‰Šé™¤ãŒå¯èƒ½ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ - property-ref (ƒIƒvƒVƒ‡ƒ“): - ƒIƒŠƒWƒiƒ‹ƒe[ƒuƒ‹‚ÌŽåƒL[‚Å‚Í‚È‚¢ƒJƒ‰ƒ€‚ðŽQÆ‚·‚éŠO•”ƒL[‚ðŽw’肵‚Ü‚· - (ƒŒƒKƒV[ƒf[ƒ^‚ɑ΂µ‚Ä’ñ‹Ÿ‚³‚ê‚Ü‚·)B + property-ref (オプション): + オリジナルテーブルã®ä¸»ã‚­ãƒ¼ã§ã¯ãªã„カラムをå‚ç…§ã™ã‚‹å¤–部キーを指定ã—ã¾ã™ + (レガシーデータã«å¯¾ã—ã¦æä¾›ã•ã‚Œã¾ã™)。 - not-null (ƒIƒvƒVƒ‡ƒ“): - ŠO•”ƒL[ƒJƒ‰ƒ€‚ªnull’l‚ð‹–—e‚µ‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚· - (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B + not-null (オプション): + 外部キーカラムãŒnull値を許容ã—ãªã„ã“ã¨ã‚’指定ã—ã¾ã™ + (ã“ã®ã“ã¨ã¯å¤–部キーãŒä¸»ã‚­ãƒ¼ã®ä¸€éƒ¨ã§ã‚ã‚‹ã“ã¨ã‚’暗黙的ã«ç¤ºã—ã¾ã™)。 - update (ƒIƒvƒVƒ‡ƒ“): - ŠO•”ƒL[‚ðŒˆ‚µ‚ÄXV‚µ‚Ä‚Í‚È‚ç‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚· - (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B + update (オプション): + 外部キーを決ã—ã¦æ›´æ–°ã—ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã‚’指定ã—ã¾ã™ + (ã“ã®ã“ã¨ã¯å¤–部キーãŒä¸»ã‚­ãƒ¼ã®ä¸€éƒ¨ã§ã‚ã‚‹ã“ã¨ã‚’暗黙的ã«ç¤ºã—ã¾ã™)。 - unique (ƒIƒvƒVƒ‡ƒ“): - ŠO•”ƒL[‚ªƒ†ƒj[ƒN§–ñ‚ðŽ‚‚ׂ«‚Å‚ ‚邱‚Æ‚ðŽw’肵‚Ü‚· - (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B + unique (オプション): + 外部キーãŒãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã‚’æŒã¤ã¹ãã§ã‚ã‚‹ã“ã¨ã‚’指定ã—ã¾ã™ + (ã“ã®ã“ã¨ã¯å¤–部キーãŒä¸»ã‚­ãƒ¼ã®ä¸€éƒ¨ã§ã‚ã‚‹ã“ã¨ã‚’暗黙的ã«ç¤ºã—ã¾ã™)。 - 휂̃pƒtƒH[ƒ}ƒ“ƒX‚ªd—v‚Å‚ ‚éƒVƒXƒeƒ€‚É‚ÍA - ‚·‚ׂẴL[‚ð on-delete="cascade" ‚Æ’è‹`‚·‚邱‚Æ‚ð„§‚µ‚Ü‚·B - ‚»‚¤‚·‚邱‚Æ‚ÅHibernate‚ÍADELETE •¶‚𖈉ñ”­s‚·‚é‘ã‚í‚è‚ÉA - ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚Ì ON CASCADE DELETE §–ñ‚ðŽg—p‚µ‚Ü‚·B - ‚±‚Ì“Á’¥‚̓o[ƒWƒ‡ƒ“•t‚¯‚ç‚ꂽƒf[ƒ^‚ɑ΂·‚éHibernate‚Ì’Êí‚ÌŠyŠÏ“IƒƒbƒNí—ª‚ð - –³Ž‹‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 削除ã®ãƒ‘フォーマンスãŒé‡è¦ã§ã‚るシステムã«ã¯ã€ + ã™ã¹ã¦ã®ã‚­ãƒ¼ã‚’ on-delete="cascade" ã¨å®šç¾©ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + ãã†ã™ã‚‹ã“ã¨ã§Hibernateã¯ã€DELETE 文を毎回発行ã™ã‚‹ä»£ã‚ã‚Šã«ã€ + データベースレベル㮠ON CASCADE DELETE 制約を使用ã—ã¾ã™ã€‚ + ã“ã®ç‰¹å¾´ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ä»˜ã‘られãŸãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹Hibernateã®é€šå¸¸ã®æ¥½è¦³çš„ロック戦略を + 無視ã™ã‚‹ã¨ã„ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - not-null ‚Æ update ‘®«‚ÍA’P•ûŒüˆê‘Α½ŠÖ˜A‚ÌŽž‚É‚Í—L—p‚Å‚·B - ’P•ûŒüˆê‘Α½ŠÖ˜A‚ðnull‚ð‹–—e‚µ‚È‚¢ŠO•”ƒL[‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚Æ‚«‚ÍA - <key not-null="true"> ‚ðŽg‚Á‚ăL[ƒJƒ‰ƒ€‚ð錾 - ‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñ B + not-null 㨠update 属性ã¯ã€å˜æ–¹å‘一対多関連ã®æ™‚ã«ã¯æœ‰ç”¨ã§ã™ã€‚ + å˜æ–¹å‘一対多関連をnullを許容ã—ãªã„外部キーã«ãƒžãƒƒãƒ”ングã™ã‚‹ã¨ãã¯ã€ + <key not-null="true"> を使ã£ã¦ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã‚’宣言 + ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“ 。 - column ‚Æ formula —v‘f + column 㨠formula è¦ç´  - column ‘®«‚ð‹Lq‚Å‚«‚é”CˆÓ‚̃}ƒbƒsƒ“ƒO—v‘f‚Í‚Ü‚½A - <column> ƒTƒu—v‘f‚à‹Lq‚Å‚«‚Ü‚·B - “¯—l‚É <formula> ‚à formula ‘®«‚Ì‘ã‘ÖŽè’i‚Å‚·B + column 属性を記述ã§ãã‚‹ä»»æ„ã®ãƒžãƒƒãƒ”ングè¦ç´ ã¯ã¾ãŸã€ + <column> サブè¦ç´ ã‚‚記述ã§ãã¾ã™ã€‚ + åŒæ§˜ã« <formula> ã‚‚ formula 属性ã®ä»£æ›¿æ‰‹æ®µã§ã™ã€‚ SQL expression]]> - “¯‚¶ƒvƒƒpƒeƒB‚âŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚Ì’†‚ÅA - column ‚Æ formula ‘®«‚ð‘g‚݇‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - —Ⴆ‚ÎA“ÁŽê‚ÈŒ‹‡ðŒ‚È‚Ç‚Å‚·B + åŒã˜ãƒ—ロパティや関連ã®ãƒžãƒƒãƒ”ングã®ä¸­ã§ã€ + column 㨠formula 属性を組ã¿åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + 例ãˆã°ã€ç‰¹æ®Šãªçµåˆæ¡ä»¶ãªã©ã§ã™ã€‚ import - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“¯‚¶–¼‘O‚Ì2‚‚̉i‘±ƒNƒ‰ƒX‚ª‚ ‚èA - HibernateƒNƒGƒŠ‚ÅŠ®‘SCü‚³‚ꂽiƒpƒbƒP[ƒW‚Ìj–¼‘O‚ðŽw’肵‚½‚­‚È‚¢‚Ɖ¼’肵‚Ü‚·B - ‚»‚̂悤‚Èê‡‚Í auto-import="true" ‚É—Š‚炸A - ƒNƒ‰ƒX‚ªuƒCƒ“ƒ|[ƒgv‚³‚ꂽ‚à‚Ì‚Å‚ ‚é‚Æ–¾Ž¦‚Å‚«‚Ü‚·B - –¾Ž¦“I‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å‚³‚¦‚àƒCƒ“ƒ|[ƒg‚Å‚«‚Ü‚·B + アプリケーションã«åŒã˜åå‰ã®2ã¤ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ãŒã‚り〠+ Hibernateクエリã§å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸï¼ˆãƒ‘ッケージã®ï¼‰åå‰ã‚’指定ã—ãŸããªã„ã¨ä»®å®šã—ã¾ã™ã€‚ + ãã®ã‚ˆã†ãªå ´åˆã¯ auto-import="true" ã«é ¼ã‚‰ãšã€ + クラスãŒã€Œã‚¤ãƒ³ãƒãƒ¼ãƒˆã€ã•ã‚ŒãŸã‚‚ã®ã§ã‚ã‚‹ã¨æ˜Žç¤ºã§ãã¾ã™ã€‚ + 明示的ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¦ã„ãªã„クラスやインターフェイスã§ã•ãˆã‚‚インãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚ ]]> @@ -2720,13 +2721,13 @@ - classFJavaƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B + class:Javaクラスã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹å。 - renameiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚ÍCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼jF - ƒNƒGƒŠŒ¾Œê‚ÅŽg‚í‚ê‚é–¼‘OB + rename(オプション - デフォルトã¯ä¿®é£¾ã•ã‚Œã¦ã„ãªã„クラスå): + クエリ言語ã§ä½¿ã‚れるåå‰ã€‚ @@ -2738,21 +2739,21 @@ any - ƒvƒƒpƒeƒBƒ}ƒbƒsƒ“ƒO‚É‚Í‚³‚ç‚É‚à‚¤1‚‚̌^‚ª‚ ‚è‚Ü‚·B - <any> ƒ}ƒbƒsƒ“ƒO—v‘f‚ÍA - •¡”‚̃e[ƒuƒ‹‚©‚çƒNƒ‰ƒX‚ւ̃|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A‚ð’è‹`‚µ‚Ü‚·B - ‚±‚ÌŒ^‚̃}ƒbƒsƒ“ƒO‚É‚Í•K‚¸•¡”‚̃Jƒ‰ƒ€‚ª•K—v‚Å‚·B1”Ԗڂ̃Jƒ‰ƒ€‚ÍŠÖ˜AƒGƒ“ƒeƒBƒeƒB‚ÌŒ^‚ð•ÛŽ‚µ‚Ü‚·B - Žc‚è‚̃Jƒ‰ƒ€‚ÍŽ¯•ÊŽq‚ð•ÛŽ‚µ‚Ü‚·B‚±‚ÌŽí—Þ‚ÌŠÖ˜A‚É‚ÍŠO•”ƒL[§–ñ‚ðŽw’è‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ‚»‚Ì‚½‚ß‚±‚ê‚ÍÅ‚àŽg‚í‚ê‚邱‚Æ‚Ì‚È‚¢iƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈjŠÖ˜A‚̃}ƒbƒsƒ“ƒO•û–@‚Å‚·B - ”ñí‚É“Á•Ê‚Èê‡i—Ⴆ‚ÎAŒŸ¸ƒƒO‚⃆[ƒUƒZƒbƒVƒ‡ƒ“ƒf[ƒ^‚È‚Ç)‚ÉŒÀ‚Á‚ÄA‚±‚ê‚ðŽg‚¤‚ׂ«‚Å‚·B + プロパティマッピングã«ã¯ã•ã‚‰ã«ã‚‚ã†1ã¤ã®åž‹ãŒã‚ã‚Šã¾ã™ã€‚ + <any> マッピングè¦ç´ ã¯ã€ + 複数ã®ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰ã‚¯ãƒ©ã‚¹ã¸ã®ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªé–¢é€£ã‚’定義ã—ã¾ã™ã€‚ + ã“ã®åž‹ã®ãƒžãƒƒãƒ”ングã«ã¯å¿…ãšè¤‡æ•°ã®ã‚«ãƒ©ãƒ ãŒå¿…è¦ã§ã™ã€‚1番目ã®ã‚«ãƒ©ãƒ ã¯é–¢é€£ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®åž‹ã‚’ä¿æŒã—ã¾ã™ã€‚ + 残りã®ã‚«ãƒ©ãƒ ã¯è­˜åˆ¥å­ã‚’ä¿æŒã—ã¾ã™ã€‚ã“ã®ç¨®é¡žã®é–¢é€£ã«ã¯å¤–部キー制約を指定ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + ãã®ãŸã‚ã“ã‚Œã¯æœ€ã‚‚使ã‚れるã“ã¨ã®ãªã„(ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªï¼‰é–¢é€£ã®ãƒžãƒƒãƒ”ング方法ã§ã™ã€‚ + éžå¸¸ã«ç‰¹åˆ¥ãªå ´åˆï¼ˆä¾‹ãˆã°ã€æ¤œæŸ»ãƒ­ã‚°ã‚„ユーザセッションデータãªã©)ã«é™ã£ã¦ã€ã“れを使ã†ã¹ãã§ã™ã€‚ - meta-type ‚É‚æ‚èA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓JƒXƒ^ƒ€Œ^‚ðŽw’è‚Å‚«‚Ü‚·B‚±‚̃JƒXƒ^ƒ€Œ^‚Í - ƒf[ƒ^ƒx[ƒXƒJƒ‰ƒ€‚Ì’l‚ðAid-type ‚ÅŽw’肵‚½Œ^‚Ì - Ž¯•ÊŽqƒvƒƒpƒeƒB‚ðŽ‚Á‚½‰i‘±ƒNƒ‰ƒX‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - meta-type‚Ì’l‚©‚çƒNƒ‰ƒX–¼‚ւ̃}ƒbƒsƒ“ƒO‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + meta-type ã«ã‚ˆã‚Šã€ + アプリケーションã¯ã‚«ã‚¹ã‚¿ãƒ åž‹ã‚’指定ã§ãã¾ã™ã€‚ã“ã®ã‚«ã‚¹ã‚¿ãƒ åž‹ã¯ + データベースカラムã®å€¤ã‚’ã€id-type ã§æŒ‡å®šã—ãŸåž‹ã® + 識別å­ãƒ—ロパティをæŒã£ãŸæ°¸ç¶šã‚¯ãƒ©ã‚¹ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + meta-typeã®å€¤ã‹ã‚‰ã‚¯ãƒ©ã‚¹åã¸ã®ãƒžãƒƒãƒ”ングを指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -2790,37 +2791,37 @@ - nameFƒvƒƒpƒeƒB–¼B + name:プロパティå。 - id-typeFŽ¯•ÊŽq‚ÌŒ^B + id-type:識別å­ã®åž‹ã€‚ - meta-typeiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í string jF - ƒfƒBƒXƒNƒŠƒ~ƒl[ƒ^ƒ}ƒbƒsƒ“ƒO‚Å‹–‚³‚ꂽŒ^ + meta-type(オプション - デフォルト㯠string ): + ディスクリミãƒãƒ¼ã‚¿ãƒžãƒƒãƒ”ングã§è¨±ã•ã‚ŒãŸåž‹ - cascadeiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í none jF - ƒJƒXƒP[ƒh‚̃Xƒ^ƒCƒ‹B + cascade(オプション - デフォルト㯠none ): + カスケードã®ã‚¹ã‚¿ã‚¤ãƒ«ã€‚ - accessiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í property jF - ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB + access(オプション - デフォルト㯠property ): + プロパティã®å€¤ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«HibernateãŒä½¿ã†æˆ¦ç•¥ã€‚ - optimistic-lock (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í true ): - ‚±‚̃vƒƒpƒeƒB‚ÌXV‚ÉŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎA‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚ð‘‚â‚·‚ׂ«‚©‚ð’è‹`‚µ‚Ü‚·B + optimistic-lock (オプション - デフォルト㯠true ): + ã“ã®ãƒ—ロパティã®æ›´æ–°ã«æ¥½è¦³ãƒ­ãƒƒã‚¯ã®å–å¾—ã‚’è¦æ±‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ã“ã®ãƒ—ロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹ã¨ãã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’増やã™ã¹ãã‹ã‚’定義ã—ã¾ã™ã€‚ @@ -2831,87 +2832,87 @@ - Hibernate‚ÌŒ^ + Hibernateã®åž‹ - ƒGƒ“ƒeƒBƒeƒB‚Æ’l + エンティティã¨å€¤ - ‰i‘±ƒT[ƒrƒX‚ÉŠÖ‚í‚é—lX‚ÈJavaŒ¾ŒêƒŒƒxƒ‹‚̃IƒuƒWƒFƒNƒg‚ÌU‚é•‘‚¢‚ð—‰ð‚·‚邽‚ß‚É‚ÍA - ƒIƒuƒWƒFƒNƒg‚ð2‚‚̃Oƒ‹[ƒv‚É•ª‚¯‚é•K—v‚ª‚ ‚è‚Ü‚·F + 永続サービスã«é–¢ã‚る様々ãªJava言語レベルã®ã‚ªãƒ–ジェクトã®æŒ¯ã‚‹èˆžã„ã‚’ç†è§£ã™ã‚‹ãŸã‚ã«ã¯ã€ + オブジェクトを2ã¤ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åˆ†ã‘ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼š - ƒGƒ“ƒeƒBƒeƒB ‚̓Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚ð•ÛŽ‚·‚éA - ‘¼‚Ì‚·‚ׂẴIƒuƒWƒFƒNƒg‚©‚ç“Æ—§‚µ‚Ä‘¶Ý‚µ‚Ü‚·B - ŽQÆ‚³‚ê‚È‚¢ƒIƒuƒWƒFƒNƒg‚ªƒKƒx[ƒWƒRƒŒƒNƒg‚³‚ê‚Ä‚µ‚Ü‚¤«Ž¿‚ðŽ‚Â’Êí‚ÌJavaƒ‚ƒfƒ‹‚ÆA - ‚±‚ê‚ð”ä‚ׂĂ݂Ă­‚¾‚³‚¢B - ieƒGƒ“ƒeƒBƒeƒB‚©‚çŽq‚ÖAƒZ[ƒu‚Æ휂ª ƒJƒXƒP[ƒh ‚³‚ꂤ‚邱‚Ƃ𜂢‚Äj - ƒGƒ“ƒeƒBƒeƒB‚Í–¾Ž¦“I‚ɃZ[ƒu‚Ü‚½‚Í휂³‚ê‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚±‚ê‚Í“ž’B‰Â”\«‚É‚æ‚éƒIƒuƒWƒFƒNƒg‰i‘±‰»‚ÌODMGƒ‚ƒfƒ‹‚Ƃ͈قȂÁ‚Ä‚¢‚Ü‚·B - ‘å‹K–͂ȃVƒXƒeƒ€‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒIƒuƒWƒFƒNƒg‚ª•’ʂǂ̂悤‚ÉŽg‚í‚ê‚é‚©‚É‚æ‚薧ڂɑΉž‚µ‚Ü‚·B - ƒGƒ“ƒeƒBƒeƒB‚ÍzŠÂ‚ÆŽQÆ‚Ì‹¤—L‚ðƒTƒ|[ƒg‚µ‚Ü‚·B - ‚Ü‚½‚»‚ê‚ç‚̓o[ƒWƒ‡ƒ“•t‚¯‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + エンティティ ã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚照をä¿æŒã™ã‚‹ã€ + ä»–ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトã‹ã‚‰ç‹¬ç«‹ã—ã¦å­˜åœ¨ã—ã¾ã™ã€‚ + å‚ç…§ã•ã‚Œãªã„オブジェクトãŒã‚¬ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ãƒˆã•ã‚Œã¦ã—ã¾ã†æ€§è³ªã‚’æŒã¤é€šå¸¸ã®Javaモデルã¨ã€ + ã“れを比ã¹ã¦ã¿ã¦ãã ã•ã„。 + (親エンティティã‹ã‚‰å­ã¸ã€ã‚»ãƒ¼ãƒ–ã¨å‰Šé™¤ãŒ カスケード ã•ã‚Œã†ã‚‹ã“ã¨ã‚’除ã„ã¦ï¼‰ + エンティティã¯æ˜Žç¤ºçš„ã«ã‚»ãƒ¼ãƒ–ã¾ãŸã¯å‰Šé™¤ã•ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã“ã‚Œã¯åˆ°é”å¯èƒ½æ€§ã«ã‚ˆã‚‹ã‚ªãƒ–ジェクト永続化ã®ODMGモデルã¨ã¯ç•°ãªã£ã¦ã„ã¾ã™ã€‚ + 大è¦æ¨¡ãªã‚·ã‚¹ãƒ†ãƒ ã§ã‚¢ãƒ—リケーションオブジェクトãŒæ™®é€šã©ã®ã‚ˆã†ã«ä½¿ã‚れるã‹ã«ã‚ˆã‚Šå¯†æŽ¥ã«å¯¾å¿œã—ã¾ã™ã€‚ + エンティティã¯å¾ªç’°ã¨å‚ç…§ã®å…±æœ‰ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ + ã¾ãŸãれらã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ä»˜ã‘ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒB‚̉i‘±ó‘Ô‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚â ’l Œ^‚Ì - ƒCƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚©‚ç\¬‚³‚ê‚Ü‚·B - ’l‚̓vƒŠƒ~ƒeƒBƒuAƒRƒŒƒNƒVƒ‡ƒ“(ƒRƒŒƒNƒVƒ‡ƒ“‚Ì“à•”‚Å‚Í‚È‚­)A - ƒRƒ“ƒ|[ƒlƒ“ƒgA•s•ÏƒIƒuƒWƒFƒNƒg‚Å‚·B - ƒGƒ“ƒeƒBƒeƒB‚Ƃ͈ႢA’l‚Íi“Á‚ɃRƒŒƒNƒVƒ‡ƒ“‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚É‚¨‚¢‚ÄjA - “ž’B‰Â”\«‚É‚æ‚é‰i‘±‰»‚â휂ª s‚í‚ê‚Ü‚· B - ’lƒIƒuƒWƒFƒNƒgi‚ƃvƒŠƒ~ƒeƒBƒuj‚ÍA•ïŠÜ‚·‚éƒGƒ“ƒeƒBƒeƒB‚ƈê‚ɉi‘±‰»‚â휂ªs‚í‚ê‚é‚Ì‚ÅA - ‚»‚ê‚ç‚ð“Æ—§‚Ƀo[ƒWƒ‡ƒ“•t‚¯‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ’l‚É‚Í“Æ—§‚µ‚½ƒAƒCƒfƒ“ƒeƒBƒeƒB‚ª‚È‚¢‚Ì‚ÅA - •¡”‚̃Gƒ“ƒeƒBƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚ª‚±‚ê‚ð‹¤—L‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB + エンティティã®æ°¸ç¶šçŠ¶æ…‹ã¯ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚„ 値 åž‹ã® + インスタンスã¸ã®å‚ç…§ã‹ã‚‰æ§‹æˆã•ã‚Œã¾ã™ã€‚ + 値ã¯ãƒ—リミティブã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³(コレクションã®å†…部ã§ã¯ãªã)〠+ コンãƒãƒ¼ãƒãƒ³ãƒˆã€ä¸å¤‰ã‚ªãƒ–ジェクトã§ã™ã€‚ + エンティティã¨ã¯é•ã„ã€å€¤ã¯ï¼ˆç‰¹ã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¨ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«ãŠã„ã¦ï¼‰ã€ + 到é”å¯èƒ½æ€§ã«ã‚ˆã‚‹æ°¸ç¶šåŒ–や削除㌠行ã‚ã‚Œã¾ã™ 。 + 値オブジェクト(ã¨ãƒ—リミティブ)ã¯ã€åŒ…å«ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨ä¸€ç·’ã«æ°¸ç¶šåŒ–や削除ãŒè¡Œã‚れるã®ã§ã€ + ãれらを独立ã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ä»˜ã‘ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + 値ã«ã¯ç‹¬ç«‹ã—ãŸã‚¢ã‚¤ãƒ‡ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒãªã„ã®ã§ã€ + 複数ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚„コレクションãŒã“れを共有ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - ‚±‚ê‚Ü‚Åu‰i‘±ƒNƒ‰ƒXv‚Æ‚¢‚¤Œ¾—t‚ðƒGƒ“ƒeƒBƒeƒB‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚«‚Ü‚µ‚½B - ‚±‚ê‚©‚ç‚à‚»‚¤‚µ‚Ä‚¢‚«‚Ü‚·B - Œµ–§‚ÉŒ¾‚¤‚ÆA‰i‘±ó‘Ô‚ðŽ‚ƒ†[ƒU’è‹`‚̃Nƒ‰ƒX‚Ì‚·‚ׂĂª - ƒGƒ“ƒeƒBƒeƒB‚Æ‚¢‚¤‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ƒRƒ“ƒ|[ƒlƒ“ƒg ‚Í’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚ƒ†[ƒU’è‹`ƒNƒ‰ƒX‚Å‚·B - java.lang.String Œ^‚̃vƒƒpƒeƒB‚à‚Ü‚½’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚¿‚Ü‚·B - ’è‹`‚·‚é‚È‚çAJDK‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚·‚ׂĂÌJava‚ÌŒ^(ƒNƒ‰ƒX)‚ª’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚‚Ƃ¢‚¦‚Ü‚·B - ˆê•ûƒ†[ƒU’è‹`Œ^‚ÍAƒGƒ“ƒeƒBƒeƒB‚â’lŒ^‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Æ‚Æ‚à‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·B - ‚±‚ÌŒˆ’è‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒŽŸ‘æ‚Å‚·B - ‚»‚̃Nƒ‰ƒX‚Ì‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚Ì‹¤—LŽQÆ‚ÍA - ƒhƒƒCƒ“ƒ‚ƒfƒ‹“à‚̃Gƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ɑ΂·‚é—Ç‚¢ƒqƒ“ƒg‚É‚È‚è‚Ü‚·B - ˆê•û‡¬W–ñ‚âW–ñ‚ÍA’Êí’lŒ^‚Ö•ÏŠ·‚³‚ê‚Ü‚·B + ã“ã‚Œã¾ã§ã€Œæ°¸ç¶šã‚¯ãƒ©ã‚¹ã€ã¨ã„ã†è¨€è‘‰ã‚’エンティティã®æ„味ã§ä½¿ã£ã¦ãã¾ã—ãŸã€‚ + ã“ã‚Œã‹ã‚‰ã‚‚ãã†ã—ã¦ã„ãã¾ã™ã€‚ + 厳密ã«è¨€ã†ã¨ã€æ°¸ç¶šçŠ¶æ…‹ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶å®šç¾©ã®ã‚¯ãƒ©ã‚¹ã®ã™ã¹ã¦ãŒ + エンティティã¨ã„ã†ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + コンãƒãƒ¼ãƒãƒ³ãƒˆ ã¯å€¤ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶å®šç¾©ã‚¯ãƒ©ã‚¹ã§ã™ã€‚ + java.lang.String åž‹ã®ãƒ—ロパティもã¾ãŸå€¤ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‚’æŒã¡ã¾ã™ã€‚ + 定義ã™ã‚‹ãªã‚‰ã€JDKã§æä¾›ã•ã‚Œã¦ã„ã‚‹ã™ã¹ã¦ã®Javaã®åž‹(クラス)ãŒå€¤ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‚’æŒã¤ã¨ã„ãˆã¾ã™ã€‚ + 一方ユーザ定義型ã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚„値型ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã¨ã¨ã‚‚ã«ãƒžãƒƒãƒ”ングã§ãã¾ã™ã€‚ + ã“ã®æ±ºå®šã¯ã‚¢ãƒ—リケーション開発者次第ã§ã™ã€‚ + ãã®ã‚¯ãƒ©ã‚¹ã®ï¼‘ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¸ã®å…±æœ‰å‚ç…§ã¯ã€ + ドメインモデル内ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã«å¯¾ã™ã‚‹è‰¯ã„ヒントã«ãªã‚Šã¾ã™ã€‚ + 一方åˆæˆé›†ç´„や集約ã¯ã€é€šå¸¸å€¤åž‹ã¸å¤‰æ›ã•ã‚Œã¾ã™ã€‚ - –{ƒhƒLƒ…ƒƒ“ƒg‚ð’Ê‚µ‚ÄA‰½“x‚à‚±‚ÌŠT”O‚ðŽæ‚èã‚°‚Ü‚·B + 本ドキュメントを通ã—ã¦ã€ä½•åº¦ã‚‚ã“ã®æ¦‚念をå–り上ã’ã¾ã™ã€‚ - JavaŒ^‚̃VƒXƒeƒ€(‚à‚µ‚­‚ÍŠJ”­ŽÒ‚ª’è‹`‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚Æ’lŒ^)‚ð - SQL/ƒf[ƒ^ƒx[ƒXŒ^‚̃VƒXƒeƒ€‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Ƃ͓‚¢‚Å‚·B - Hibernate‚Í‚Q‚‚̃VƒXƒeƒ€‚̉˂¯‹´‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä‚Í - <class> ‚â <subclass> ‚È‚Ç‚ðŽg—p‚µ‚Ü‚·B - ’lŒ^‚ɑ΂µ‚Ä‚Í <property> ‚â - <component> ‚È‚Ç‚ðA’Êí type ‚Æ‚Æ‚à‚ÉŽg‚¢‚Ü‚·B - ‚±‚Ì‘®«‚Ì’l‚ÍHibernate‚Ì ƒ}ƒbƒsƒ“ƒOŒ^ ‚Ì–¼‘O‚Å‚·B - Hibernate‚Í(•W€JDK‚Ì’lŒ^‚ɑ΂µ‚Ä)‘½‚­‚ÌŽ©—R‚ȃ}ƒbƒsƒ“ƒO‚ð’ñ‹Ÿ‚µ‚Ü‚·B - Œã‚ÅŒ©‚é‚悤‚ÉAŽ©g‚̃}ƒbƒsƒ“ƒOŒ^‚ð‹Lq‚µA“¯—l‚ɃJƒXƒ^ƒ€‚Ì•ÏŠ·í—ª‚ðŽÀ‘•‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + Javaåž‹ã®ã‚·ã‚¹ãƒ†ãƒ (ã‚‚ã—ãã¯é–‹ç™ºè€…ãŒå®šç¾©ã—ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨å€¤åž‹)ã‚’ + SQL/データベース型ã®ã‚·ã‚¹ãƒ†ãƒ ã«ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ã¯é›£ã—ã„ã§ã™ã€‚ + Hibernateã¯ï¼’ã¤ã®ã‚·ã‚¹ãƒ†ãƒ ã®æž¶ã‘æ©‹ã‚’æä¾›ã—ã¾ã™ã€‚ + エンティティã«å¯¾ã—ã¦ã¯ + <class> ã‚„ <subclass> ãªã©ã‚’使用ã—ã¾ã™ã€‚ + 値型ã«å¯¾ã—ã¦ã¯ <property> ã‚„ + <component> ãªã©ã‚’ã€é€šå¸¸ type ã¨ã¨ã‚‚ã«ä½¿ã„ã¾ã™ã€‚ + ã“ã®å±žæ€§ã®å€¤ã¯Hibernate㮠マッピング型 ã®åå‰ã§ã™ã€‚ + Hibernateã¯(標準JDKã®å€¤åž‹ã«å¯¾ã—ã¦)多ãã®è‡ªç”±ãªãƒžãƒƒãƒ”ングをæä¾›ã—ã¾ã™ã€‚ + 後ã§è¦‹ã‚‹ã‚ˆã†ã«ã€è‡ªèº«ã®ãƒžãƒƒãƒ”ング型を記述ã—ã€åŒæ§˜ã«ã‚«ã‚¹ã‚¿ãƒ ã®å¤‰æ›æˆ¦ç•¥ã‚’実装ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ƒRƒŒƒNƒVƒ‡ƒ“‚𜂭‘g‚Ýž‚Ý‚ÌHibernate‚ÌŒ^‚Í‚·‚ׂÄAnullƒZƒ}ƒ“ƒeƒBƒNƒX‚ðƒTƒ|[ƒg‚µ‚Ü‚·B + コレクションを除ã組ã¿è¾¼ã¿ã®Hibernateã®åž‹ã¯ã™ã¹ã¦ã€nullセマンティクスをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ - Šî–{“I‚ÈŒ^ + 基本的ãªåž‹ - ‘g‚Ýž‚Ý‚Ì Šî–{“I‚ȃ}ƒbƒsƒ“ƒOŒ^ ‚Í‘å‚Ü‚©‚Ɉȉº‚̂悤‚É•ª‚¯‚ç‚ê‚Ü‚·B + 組ã¿è¾¼ã¿ã® 基本的ãªãƒžãƒƒãƒ”ング型 ã¯å¤§ã¾ã‹ã«ä»¥ä¸‹ã®ã‚ˆã†ã«åˆ†ã‘られã¾ã™ã€‚ @@ -2919,11 +2920,11 @@ boolean, yes_no, true_false - Java‚̃vƒŠƒ~ƒeƒBƒu‚⃉ƒbƒp[ƒNƒ‰ƒX‚©‚ç“KØ‚Èiƒxƒ“ƒ_[ŒÅ—L‚Ìj - SQLƒJƒ‰ƒ€Œ^‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB - boolean, yes_no ‚Æ true_false ‚ÍA - ‚·‚ׂÄJava‚Ì boolean - ‚Ü‚½‚Í java.lang.Boolean ‚Ì‘ã‘ÖƒGƒ“ƒR[ƒh‚Å‚·B + Javaã®ãƒ—リミティブやラッパークラスã‹ã‚‰é©åˆ‡ãªï¼ˆãƒ™ãƒ³ãƒ€ãƒ¼å›ºæœ‰ã®ï¼‰ + SQLカラム型ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 + boolean, yes_no 㨠true_false ã¯ã€ + ã™ã¹ã¦Javaã® boolean + ã¾ãŸã¯ java.lang.Boolean ã®ä»£æ›¿ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã§ã™ã€‚ @@ -2932,8 +2933,8 @@ string - java.lang.String ‚©‚ç VARCHAR - i‚Ü‚½‚ÍOracle‚Ì VARCHAR2 j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB + java.lang.String ã‹ã‚‰ VARCHAR + (ã¾ãŸã¯Oracleã® VARCHAR2 )ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 @@ -2941,9 +2942,9 @@ date, time, timestamp - java.util.Date ‚Æ‚»‚̃TƒuƒNƒ‰ƒX‚©‚çSQLŒ^‚Ì DATE, - TIME , TIMESTAMP i‚Ü‚½‚Í‚»‚ê‚ç‚Æ“™‰¿‚È‚à‚Ìj - ‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB + java.util.Date ã¨ãã®ã‚µãƒ–クラスã‹ã‚‰SQLåž‹ã® DATE, + TIME , TIMESTAMP (ã¾ãŸã¯ãれらã¨ç­‰ä¾¡ãªã‚‚ã®ï¼‰ + ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 @@ -2951,8 +2952,8 @@ calendar, calendar_date - java.util.Calendar ‚©‚çSQLŒ^ ‚Ìu TIMESTAMP , - DATE (‚Ü‚½‚Í‚»‚ê‚ç‚Æ“™‰¿‚È‚à‚Ìj‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB + java.util.Calendar ã‹ã‚‰SQLåž‹ ã®ã€Œ TIMESTAMP , + DATE (ã¾ãŸã¯ãれらã¨ç­‰ä¾¡ãªã‚‚ã®ï¼‰ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 @@ -2960,8 +2961,8 @@ big_decimal, big_integer - java.math.BigDecimal ‚Æ java.math.BigInteger - ‚©‚ç NUMERICi‚Ü‚½‚ÍOracle‚Ì NUMBER j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB + java.math.BigDecimal 㨠java.math.BigInteger + ã‹ã‚‰ NUMERIC(ã¾ãŸã¯Oracleã® NUMBER )ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 @@ -2970,12 +2971,12 @@ java.util.Locale , java.util.TimeZone , - java.util.Currency ‚©‚ç VARCHAR - i‚Ü‚½‚ÍOracle‚Ì VARCHAR2 j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB - Locale ‚Æ Currency ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - ‚»‚ê‚ç‚ÌISOƒR[ƒh‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B - TimeZone ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - ‚»‚ê‚ç‚Ì ID ‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + java.util.Currency ã‹ã‚‰ VARCHAR + (ã¾ãŸã¯Oracleã® VARCHAR2 )ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 + Locale 㨠Currency ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + ãれらã®ISOコードã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ + TimeZone ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + ãれら㮠ID ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -2983,9 +2984,9 @@ class - java.lang.Class ‚©‚ç VARCHAR - i‚Ü‚½‚ÍOracle‚Ì VARCHAR2 j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB - Class ‚Í‚»‚ÌŠ®‘SCü‚³‚ꂽ–¼‘O‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + java.lang.Class ã‹ã‚‰ VARCHAR + (ã¾ãŸã¯Oracleã® VARCHAR2 )ã¸ã®åž‹ãƒžãƒƒãƒ”ング。 + Class ã¯ãã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸåå‰ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -2993,7 +2994,7 @@ binary - ƒoƒCƒg”z—ñ‚ÍA“KØ‚ÈSQL‚̃oƒCƒiƒŠŒ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + ãƒã‚¤ãƒˆé…列ã¯ã€é©åˆ‡ãªSQLã®ãƒã‚¤ãƒŠãƒªåž‹ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -3001,8 +3002,8 @@ text - ’·‚¢Java•¶Žš—ñ‚ÍASQL‚Ì CLOB ‚Ü‚½‚Í - TEXT Œ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + é•·ã„Java文字列ã¯ã€SQLã® CLOB ã¾ãŸã¯ + TEXT åž‹ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -3010,10 +3011,10 @@ serializable - ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaŒ^‚ÍA“KØ‚ÈSQL‚̃oƒCƒiƒŠŒ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚ÅŠî–{Œ^‚Å‚Í‚È‚¢ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaƒNƒ‰ƒX‚â - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Ì–¼‘O‚ðŽw’è‚·‚邱‚Æ‚ÅA - Hibernate‚ÌŒ^‚ð serializable ‚Æ‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + シリアライズå¯èƒ½ãªJavaåž‹ã¯ã€é©åˆ‡ãªSQLã®ãƒã‚¤ãƒŠãƒªåž‹ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ + デフォルトã§åŸºæœ¬åž‹ã§ã¯ãªã„シリアライズå¯èƒ½ãªJavaクラスや + インターフェイスã®åå‰ã‚’指定ã™ã‚‹ã“ã¨ã§ã€ + Hibernateã®åž‹ã‚’ serializable ã¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ @@ -3021,11 +3022,11 @@ clob, blob - JDBCƒNƒ‰ƒX java.sql.Clob ‚Æ java.sql.Blob - ‚ɑ΂·‚éŒ^ƒ}ƒbƒsƒ“ƒOB - blob‚âclobƒIƒuƒWƒFƒNƒg‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠO‚Å‚ÍÄ—˜—p‚Å‚«‚È‚¢‚½‚ßA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚Ä‚Í•s•Ö‚©‚à‚µ‚ê‚Ü‚¹‚ñB - i‚³‚ç‚ɂ̓hƒ‰ƒCƒoƒTƒ|[ƒg‚ªˆêŠÑ‚µ‚Ä‚¢‚Ü‚¹‚ñBj + JDBCクラス java.sql.Clob 㨠java.sql.Blob + ã«å¯¾ã™ã‚‹åž‹ãƒžãƒƒãƒ”ング。 + blobã‚„clobオブジェクトã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å¤–ã§ã¯å†åˆ©ç”¨ã§ããªã„ãŸã‚〠+ アプリケーションã«ã‚ˆã£ã¦ã¯ä¸ä¾¿ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + (ã•ã‚‰ã«ã¯ãƒ‰ãƒ©ã‚¤ãƒã‚µãƒãƒ¼ãƒˆãŒä¸€è²«ã—ã¦ã„ã¾ã›ã‚“。) @@ -3037,13 +3038,13 @@ - ‚Ù‚Æ‚ñ‚Ç‚Ìꇂɉ•ςł ‚éJava‚ÌŒ^‚ɑ΂·‚éŒ^ƒ}ƒbƒsƒ“ƒOB - Hibernate‚Í•s•Ï‚ÈJava‚ÌŒ^‚ɑ΂µ‚Ä‚ÍÅ“K‰»‚ðs‚¢A - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í‚»‚ê‚ð•s•ÏƒIƒuƒWƒFƒNƒg‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B - —Ⴆ‚Î imm_timestamp ‚Æ‚µ‚ă}ƒbƒv‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚ÄA - Date.setTime() ‚ðŒÄ‚Ño‚µ‚Ä‚Í‚È‚è‚Ü‚¹‚ñB - ƒvƒƒpƒeƒB‚Ì’l‚ð•ÏX‚µ‚»‚Ì•ÏX‚ð‰i‘±‰»‚·‚邽‚ß‚É‚ÍA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓vƒƒpƒeƒB‚ɑ΂µ‚ÄV‚µ‚¢(“¯ˆê‚Å‚È‚¢)ƒIƒuƒWƒFƒNƒg‚ðŠ„‚è“–‚Ä‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + ã»ã¨ã‚“ã©ã®å ´åˆã«å¯å¤‰ã§ã‚ã‚‹Javaã®åž‹ã«å¯¾ã™ã‚‹åž‹ãƒžãƒƒãƒ”ング。 + Hibernateã¯ä¸å¤‰ãªJavaã®åž‹ã«å¯¾ã—ã¦ã¯æœ€é©åŒ–ã‚’è¡Œã„〠+ アプリケーションã¯ãれをä¸å¤‰ã‚ªãƒ–ジェクトã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ + 例ãˆã° imm_timestamp ã¨ã—ã¦ãƒžãƒƒãƒ—ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å¯¾ã—ã¦ã€ + Date.setTime() を呼ã³å‡ºã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。 + プロパティã®å€¤ã‚’変更ã—ãã®å¤‰æ›´ã‚’永続化ã™ã‚‹ãŸã‚ã«ã¯ã€ + アプリケーションã¯ãƒ—ロパティã«å¯¾ã—ã¦æ–°ã—ã„(åŒä¸€ã§ãªã„)オブジェクトを割り当ã¦ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -3052,41 +3053,41 @@ - ƒGƒ“ƒeƒBƒeƒB‚ƃRƒŒƒNƒVƒ‡ƒ“‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚ÍAbinary , blob , - clob ‚𜂭A‚Ç‚ñ‚ÈŠî–{Œ^‚Å‚à\‚¢‚Ü‚¹‚ñB - i•¡‡Ž¯•ÊŽq‚Å‚à\‚¢‚Ü‚¹‚ñBˆÈ‰º‚ðŒ©‚Ä‚­‚¾‚³‚¢Bj + エンティティã¨ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã¯ã€binary , blob , + clob を除ãã€ã©ã‚“ãªåŸºæœ¬åž‹ã§ã‚‚構ã„ã¾ã›ã‚“。 + (複åˆè­˜åˆ¥å­ã§ã‚‚構ã„ã¾ã›ã‚“。以下を見ã¦ãã ã•ã„。) - Šî–{“I‚È’lŒ^‚É‚ÍAorg.hibernate.Hibernate ‚Å’è‹`‚³‚ꂽ - Type ’蔂ª‚»‚ꂼ‚ê‚ ‚è‚Ü‚·B - —Ⴆ‚ÎAHibernate.STRING ‚Í string Œ^‚ð•\Œ»‚µ‚Ä‚¢‚Ü‚·B + 基本的ãªå€¤åž‹ã«ã¯ã€org.hibernate.Hibernate ã§å®šç¾©ã•ã‚ŒãŸ + Type 定数ãŒãã‚Œãžã‚Œã‚ã‚Šã¾ã™ã€‚ + 例ãˆã°ã€Hibernate.STRING 㯠string 型を表ç¾ã—ã¦ã„ã¾ã™ã€‚ - ƒJƒXƒ^ƒ€Œ^ + カスタム型 - ŠJ”­ŽÒ‚ª“ÆŽ©‚Ì’lŒ^‚ð쬂·‚邱‚Æ‚ÍA”äŠr“IŠÈ’P‚Å‚·B - —Ⴆ‚ÎAjava.lang.BigInteger Œ^‚̃vƒƒpƒeƒB‚ð - VARCHAR ƒJƒ‰ƒ€‚ɉi‘±‰»‚µ‚½‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - Hibernate‚Í‚±‚Ì‚½‚ß‚Ì‘g‚Ýž‚ÝŒ^‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚¹‚ñB - ‚µ‚©‚µƒJƒXƒ^ƒ€Œ^‚ÍAƒvƒƒpƒeƒBi‚Ü‚½‚̓RƒŒƒNƒVƒ‡ƒ“‚Ì—v‘fj‚ð1‚‚̃e[ƒuƒ‹ƒJƒ‰ƒ€‚É - ƒ}ƒbƒsƒ“ƒO‚·‚é‚̂ɧŒÀ‚Í‚ ‚è‚Ü‚¹‚ñB - ‚»‚Ì‚½‚ߗႦ‚ÎAjava.lang.String Œ^‚Ì + 開発者ãŒç‹¬è‡ªã®å€¤åž‹ã‚’作æˆã™ã‚‹ã“ã¨ã¯ã€æ¯”較的簡å˜ã§ã™ã€‚ + 例ãˆã°ã€java.lang.BigInteger åž‹ã®ãƒ—ロパティを + VARCHAR カラムã«æ°¸ç¶šåŒ–ã—ãŸã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + Hibernateã¯ã“ã®ãŸã‚ã®çµ„ã¿è¾¼ã¿åž‹ã‚’用æ„ã—ã¦ã„ã¾ã›ã‚“。 + ã—ã‹ã—カスタム型ã¯ã€ãƒ—ロパティ(ã¾ãŸã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ï¼‰ã‚’1ã¤ã®ãƒ†ãƒ¼ãƒ–ルカラム㫠+ マッピングã™ã‚‹ã®ã«åˆ¶é™ã¯ã‚ã‚Šã¾ã›ã‚“。 + ãã®ãŸã‚例ãˆã°ã€java.lang.String åž‹ã® getName() / setName() - JavaƒvƒƒpƒeƒB‚ð FIRST_NAME , INITIAL, SURNAME - ƒJƒ‰ƒ€‚ɉi‘±‰»‚Å‚«‚Ü‚·B + Javaプロパティを FIRST_NAME , INITIAL, SURNAME + カラムã«æ°¸ç¶šåŒ–ã§ãã¾ã™ã€‚ - ƒJƒXƒ^ƒ€Œ^‚ðŽÀ‘•‚·‚é‚É‚ÍAorg.hibernate.UserType ‚Ü‚½‚Í - org.hibernate.CompositeUserType ‚ðŽÀ‘•‚µA - Œ^‚ÌŠ®‘SCü‚³‚ꂽ–¼‘O‚ðŽg‚Á‚ăvƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚·B - ‚ǂ̂悤‚ÈŽí—Þ‚Ì‚à‚Ì‚ª‰Â”\‚©‚𒲂ׂé‚É‚ÍA - org.hibernate.test.DoubleStringType ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B + カスタム型を実装ã™ã‚‹ã«ã¯ã€org.hibernate.UserType ã¾ãŸã¯ + org.hibernate.CompositeUserType を実装ã—〠+ åž‹ã®å®Œå…¨ä¿®é£¾ã•ã‚ŒãŸåå‰ã‚’使ã£ã¦ãƒ—ロパティを定義ã—ã¾ã™ã€‚ + ã©ã®ã‚ˆã†ãªç¨®é¡žã®ã‚‚ã®ãŒå¯èƒ½ã‹ã‚’調ã¹ã‚‹ã«ã¯ã€ + org.hibernate.test.DoubleStringType を確èªã—ã¦ãã ã•ã„。 @@ -3095,22 +3096,22 @@ ]]> - <column> ƒ^ƒO‚ÅA - ƒvƒƒpƒeƒB‚ð•¡”‚̃Jƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚Å‚«‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B + <column> ã‚¿ã‚°ã§ã€ + プロパティを複数ã®ã‚«ãƒ©ãƒ ã¸ãƒžãƒƒãƒ”ングã§ãã‚‹ã“ã¨ã«æ³¨ç›®ã—ã¦ãã ã•ã„。 CompositeUserType , EnhancedUserType , UserCollectionType , UserVersionType - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÍA‚æ‚è“ÁŽê‚ÈŽg—p–@‚ɑ΂µ‚ẴTƒ|[ƒg‚ð’ñ‹Ÿ‚µ‚Ü‚·B + インターフェイスã¯ã€ã‚ˆã‚Šç‰¹æ®Šãªä½¿ç”¨æ³•ã«å¯¾ã—ã¦ã®ã‚µãƒãƒ¼ãƒˆã‚’æä¾›ã—ã¾ã™ã€‚ - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚Å UserType ‚Öƒpƒ‰ƒ[ƒ^‚ð’ñ‹Ÿ‚Å‚«‚Ü‚·B - ‚±‚Ì‚½‚ß‚É‚ÍAUserType ‚Í - org.hibernate.usertype.ParameterizedType ‚ðŽÀ‘•‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB - ƒJƒXƒ^ƒ€Œ^ƒpƒ‰ƒ[ƒ^‚ð’ñ‹Ÿ‚·‚邽‚ß‚ÉA - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚Å <type> —v‘f‚ðŽg—p‚Å‚«‚Ü‚·B + マッピングファイル内㧠UserType ã¸ãƒ‘ラメータをæä¾›ã§ãã¾ã™ã€‚ + ã“ã®ãŸã‚ã«ã¯ã€UserType 㯠+ org.hibernate.usertype.ParameterizedType を実装ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。 + カスタム型パラメータをæä¾›ã™ã‚‹ãŸã‚ã«ã€ + マッピングファイル内㧠<type> è¦ç´ ã‚’使用ã§ãã¾ã™ã€‚ @@ -3120,17 +3121,17 @@ ]]> - UserType ‚ÍA - ˆø”‚Æ‚µ‚Ä“n‚³‚ꂽ Properties ƒIƒuƒWƒFƒNƒg‚©‚çA - default ‚ÅŽw’肵‚½ƒpƒ‰ƒ[ƒ^‚ɑ΂·‚é’l‚ðŒŸõ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + UserType ã¯ã€ + 引数ã¨ã—ã¦æ¸¡ã•ã‚ŒãŸ Properties オブジェクトã‹ã‚‰ã€ + default ã§æŒ‡å®šã—ãŸãƒ‘ラメータã«å¯¾ã™ã‚‹å€¤ã‚’検索ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - “Á’è‚Ì UserType ‚ð•p”É‚ÉŽg—p‚·‚é‚È‚ç‚ÎA’Z‚¢–¼‘O‚ð’è‹`‚·‚é‚Æ•Ö—˜‚É‚È‚é‚Å‚µ‚傤B - <typedef> —v‘f‚ðŽg‚Á‚Ä‚±‚̂悤‚È‚±‚Æ‚ªs‚¦‚Ü‚·B - Typedefs‚̓JƒXƒ^ƒ€Œ^‚É–¼‘O‚ðŠ„‚è“–‚Ä‚Ü‚·B - ‚»‚ÌŒ^‚ªƒpƒ‰ƒ[ƒ^‚ðŽ‚‚Ȃç‚ÎA - ƒpƒ‰ƒ[ƒ^‚̃fƒtƒHƒ‹ƒg’l‚̃ŠƒXƒg‚ðŠÜ‚Þ‚±‚Æ‚à‚Å‚«‚Ü‚·B + 特定㮠UserType ã‚’é »ç¹ã«ä½¿ç”¨ã™ã‚‹ãªã‚‰ã°ã€çŸ­ã„åå‰ã‚’定義ã™ã‚‹ã¨ä¾¿åˆ©ã«ãªã‚‹ã§ã—ょã†ã€‚ + <typedef> è¦ç´ ã‚’使ã£ã¦ã“ã®ã‚ˆã†ãªã“ã¨ãŒè¡Œãˆã¾ã™ã€‚ + Typedefsã¯ã‚«ã‚¹ã‚¿ãƒ åž‹ã«åå‰ã‚’割り当ã¦ã¾ã™ã€‚ + ãã®åž‹ãŒãƒ‘ラメータをæŒã¤ãªã‚‰ã°ã€ + パラメータã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã®ãƒªã‚¹ãƒˆã‚’å«ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ @@ -3140,21 +3141,21 @@ ]]> - ƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚ÅŒ^ƒpƒ‰ƒ[ƒ^‚ðŽg‚¤‚±‚Æ‚ÅA - typedef‚Å’ñ‹Ÿ‚³‚ꂽƒpƒ‰ƒ[ƒ^‚ð‚»‚Ì“s“xƒI[ƒo[ƒ‰ƒCƒh‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B + プロパティã®ãƒžãƒƒãƒ”ングã§åž‹ãƒ‘ラメータを使ã†ã“ã¨ã§ã€ + typedefã§æä¾›ã•ã‚ŒãŸãƒ‘ラメータをãã®éƒ½åº¦ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ - Hibernate‚Ì•L‚¢‘g‚Ýž‚ÝŒ^‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚ɑ΂·‚éƒTƒ|[ƒg‚ÍA - ƒJƒXƒ^ƒ€Œ^‚ð‚ß‚Á‚½‚É Žg‚í‚È‚¢ ‚Æ‚¢‚¤‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B - ‚»‚ê‚Å‚à‚È‚¨AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å•po‚·‚é(ƒGƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚¢)ƒNƒ‰ƒX‚ɑ΂·‚éƒJƒXƒ^ƒ€Œ^‚ÌŽg—p‚ÍA - ‚æ‚¢‚â‚è•û‚Å‚ ‚é‚Æ‚Ý‚È‚³‚ê‚Ü‚·B - —Ⴆ‚Î MonetaryAmount ƒNƒ‰ƒX‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ÄŠÈ’P‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·‚ªA - CompositeUserType ‚Ì—Ç‚¢Œó•â‚Å‚·B - ƒJƒXƒ^ƒ€Œ^‚ðŽg—p‚·‚é“®‹@‚Ì1‚‚͒ŠÛ‰»‚Å‚·B - ƒJƒXƒ^ƒ€Œ^‚ðŽg‚¤‚±‚Æ‚ÅA’ʉ݂ð‚ǂ̂悤‚É•\Œ»‚µ‚悤‚Æ‚à - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Í‹N‚±‚肤‚é•Ï‰»‚ɑΉž‚Å‚«‚Ü‚·B + Hibernateã®å¹…広ã„組ã¿è¾¼ã¿åž‹ã¨ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã¯ã€ + カスタム型をã‚ã£ãŸã« 使ã‚ãªã„ ã¨ã„ã†ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ + ãã‚Œã§ã‚‚ãªãŠã€ã‚¢ãƒ—リケーションã§é »å‡ºã™ã‚‹(エンティティã§ã¯ãªã„)クラスã«å¯¾ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ åž‹ã®ä½¿ç”¨ã¯ã€ + よã„ã‚„ã‚Šæ–¹ã§ã‚ã‚‹ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚ + 例ãˆã° MonetaryAmount クラスã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã—ã¦ç°¡å˜ã«ãƒžãƒƒãƒ”ングã§ãã¾ã™ãŒã€ + CompositeUserType ã®è‰¯ã„候補ã§ã™ã€‚ + カスタム型を使用ã™ã‚‹å‹•æ©Ÿã®1ã¤ã¯æŠ½è±¡åŒ–ã§ã™ã€‚ + カスタム型を使ã†ã“ã¨ã§ã€é€šè²¨ã‚’ã©ã®ã‚ˆã†ã«è¡¨ç¾ã—よã†ã¨ã‚‚ + マッピングドキュメントã¯èµ·ã“ã‚Šã†ã‚‹å¤‰åŒ–ã«å¯¾å¿œã§ãã¾ã™ã€‚ @@ -3163,15 +3164,15 @@ - ‚P‚‚̃Nƒ‰ƒX‚É‚P‚ˆÈã‚̃}ƒbƒsƒ“ƒO + 1ã¤ã®ã‚¯ãƒ©ã‚¹ã«ï¼‘ã¤ä»¥ä¸Šã®ãƒžãƒƒãƒ”ング - ‚ ‚é‰i‘±ƒNƒ‰ƒX‚ÉAˆê‚ˆÈã‚̃}ƒbƒsƒ“ƒO‚ð’ñ‹Ÿ‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - ‚±‚Ìê‡Aƒ}ƒbƒsƒ“ƒO‚·‚é‚Q‚‚̃Gƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚𖾊m‚É‚·‚邽‚ß‚ÉA - ƒGƒ“ƒeƒBƒeƒB–¼ ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ - (ƒfƒtƒHƒ‹ƒg‚ł̓Gƒ“ƒeƒBƒeƒB–¼‚̓Nƒ‰ƒX–¼‚Æ“¯‚¶‚Å‚·B)B - ‰i‘±ƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤‚Æ‚«AƒNƒGƒŠ‚ð‘‚«ž‚Þ‚Æ‚«A - Žw’肳‚ꂽƒGƒ“ƒeƒBƒeƒB‚Ö‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚Æ‚«‚É‚ÍA - Hibernate‚ł̓Gƒ“ƒeƒBƒeƒB–¼‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + ã‚る永続クラスã«ã€ä¸€ã¤ä»¥ä¸Šã®ãƒžãƒƒãƒ”ングをæä¾›ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + ã“ã®å ´åˆã€ãƒžãƒƒãƒ”ングã™ã‚‹ï¼’ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’明確ã«ã™ã‚‹ãŸã‚ã«ã€ + エンティティå を指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + (デフォルトã§ã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£åã¯ã‚¯ãƒ©ã‚¹åã¨åŒã˜ã§ã™ã€‚)。 + 永続オブジェクトを扱ã†ã¨ãã€ã‚¯ã‚¨ãƒªã‚’書ã込むã¨ã〠+ 指定ã•ã‚ŒãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®é–¢é€£ã‚’マッピングã™ã‚‹ã¨ãã«ã¯ã€ + Hibernateã§ã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£åを指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 ]]> - ŠÖ˜A‚ªclass ‚Ì‘ã‚í‚è‚É entity-name ‚ðŽg‚Á‚ÄA - ‚ǂ̂悤‚ÉŽw’肳‚ê‚é‚Ì‚©‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B + 関連ãŒclass ã®ä»£ã‚ã‚Šã« entity-name を使ã£ã¦ã€ + ã©ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã‚‹ã®ã‹ã«æ³¨ç›®ã—ã¦ãã ã•ã„。 - ƒoƒbƒNƒNƒH[ƒg‚ň͂ñ‚¾ SQL Ž¯•ÊŽq + ãƒãƒƒã‚¯ã‚¯ã‚©ãƒ¼ãƒˆã§å›²ã‚“ã  SQL è­˜åˆ¥å­ - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ńe[ƒuƒ‹‚âƒJƒ‰ƒ€‚Ì–¼‘O‚ðƒoƒbƒNƒNƒH[ƒg‚ň͂ނ±‚Æ‚ÅA - Hibernate‚Ŷ¬‚³‚ꂽSQL’†‚ÌŽ¯•ÊŽq‚ðˆø—p‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - Hibernate‚ÍSQL‚Ì Dialect ‚ɑΉž‚·‚éA³‚µ‚¢ˆø—pƒXƒ^ƒCƒ‹‚ðŽg‚¢‚Ü‚· - i•’ʂ̓_ƒuƒ‹ƒNƒH[ƒg‚Å‚·‚ªASQL Server‚Å‚Í‚©‚¬Š‡ŒÊAMySQL‚ł̓oƒbƒNƒNƒH[ƒg‚Å‚·jB + マッピングドキュメントã§ãƒ†ãƒ¼ãƒ–ルやカラムã®åå‰ã‚’ãƒãƒƒã‚¯ã‚¯ã‚©ãƒ¼ãƒˆã§å›²ã‚€ã“ã¨ã§ã€ + Hibernateã§ç”Ÿæˆã•ã‚ŒãŸSQL中ã®è­˜åˆ¥å­ã‚’引用ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + Hibernateã¯SQLã® Dialect ã«å¯¾å¿œã™ã‚‹ã€æ­£ã—ã„引用スタイルを使ã„ã¾ã™ + (普通ã¯ãƒ€ãƒ–ルクォートã§ã™ãŒã€SQL Serverã§ã¯ã‹ãŽæ‹¬å¼§ã€MySQLã§ã¯ãƒãƒƒã‚¯ã‚¯ã‚©ãƒ¼ãƒˆã§ã™ï¼‰ã€‚ @@ -3218,21 +3219,21 @@ - ƒƒ^ƒf[ƒ^‚Ì‘ã‘ÖŽè’i + メタデータã®ä»£æ›¿æ‰‹æ®µ - XML‚Ì‹LqˆÈŠO‚ÉA - Hibernate‚Å‚ÍO/Rƒ}ƒbƒsƒ“ƒO‚̃ƒ^ƒf[ƒ^‚ð’è‹`‚·‚é‘ã‘Ö•û–@‚ª‚ ‚è‚Ü‚·B + XMLã®è¨˜è¿°ä»¥å¤–ã«ã€ + Hibernateã§ã¯O/Rマッピングã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’定義ã™ã‚‹ä»£æ›¿æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ - XDoclet ƒ}[ƒNƒAƒbƒv‚ÌŽg—p + XDoclet マークアップã®ä½¿ç”¨ - ‘½‚­‚ÌHibernateƒ†[ƒU‚ÍXDoclet‚Ì @hibernate.tags ‚ðŽg‚Á‚ÄA - ƒ\[ƒXƒR[ƒh“à‚É’¼Úƒ}ƒbƒsƒ“ƒOî•ñ‚ð–„‚ßž‚Þ‚±‚Æ‚ðD‚Ý‚Ü‚·B - ‚±‚ê‚ÍŒµ–§‚ÉŒ¾‚¦‚ÎXDoclet‚Ì•ª–ì‚È‚Ì‚ÅA–{ƒhƒLƒ…ƒƒ“ƒg‚Å‚Í‚±‚Ì•û–@‚ð‘ÎÛ‚Æ‚Í‚µ‚Ü‚¹‚ñB - ‚µ‚©‚µXDoclet‚ðŽg‚Á‚½ˆÈ‰º‚Ì Cat ƒ}ƒbƒsƒ“ƒO‚Ì—á‚ðŽ¦‚µ‚Ü‚·B + 多ãã®Hibernateユーザã¯XDocletã® @hibernate.tags を使ã£ã¦ã€ + ソースコード内ã«ç›´æŽ¥ãƒžãƒƒãƒ”ング情報を埋ã‚込むã“ã¨ã‚’好ã¿ã¾ã™ã€‚ + ã“ã‚Œã¯åŽ³å¯†ã«è¨€ãˆã°XDocletã®åˆ†é‡Žãªã®ã§ã€æœ¬ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã§ã¯ã“ã®æ–¹æ³•ã‚’対象ã¨ã¯ã—ã¾ã›ã‚“。 + ã—ã‹ã—XDocletを使ã£ãŸä»¥ä¸‹ã® Cat マッピングã®ä¾‹ã‚’示ã—ã¾ã™ã€‚ - Hibernate‚̃EƒFƒuƒTƒCƒg‚É‚ÍAXDoclet‚ÆHibernate‚ÉŠÖ‚·‚éƒTƒ“ƒvƒ‹‚ª‘½”‚ ‚è‚Ü‚·B + Hibernateã®ã‚¦ã‚§ãƒ–サイトã«ã¯ã€XDocletã¨Hibernateã«é–¢ã™ã‚‹ã‚µãƒ³ãƒ—ルãŒå¤šæ•°ã‚ã‚Šã¾ã™ã€‚ - JDK 5.0 ƒAƒmƒe[ƒVƒ‡ƒ“‚ÌŽg—p + JDK 5.0 アノテーションã®ä½¿ç”¨ - JDK5.0‚ł̓^ƒCƒvƒZ[ƒt‚©‚ƒRƒ“ƒpƒCƒ‹Žž‚Ƀ`ƒFƒbƒN‚Å‚«‚éA - Œ¾ŒêƒŒƒxƒ‹‚ÌXDocletƒXƒ^ƒCƒ‹‚̃Aƒmƒe[ƒVƒ‡ƒ“‚𓱓ü‚µ‚Ü‚µ‚½B - ‚±‚̃ƒJƒjƒYƒ€‚ÍXDoclet‚̃Aƒmƒe[ƒVƒ‡ƒ“‚æ‚è‚à‹­—Í‚ÅAƒc[ƒ‹‚âIDE‚à‘½‚­‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - —Ⴆ‚ÎIntelliJ IDEA‚ÍAJDK5.0‚ɃAƒmƒe[ƒVƒ‡ƒ“‚ÌŽ©“®•âŠ®‚Æ\•¶‚Ì‹­’²•\Ž¦‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - EJBŽd—l (JSR-220)‚ÌV‚µ‚¢ƒo[ƒWƒ‡ƒ“‚Å‚ÍAƒGƒ“ƒeƒBƒeƒBƒr[ƒ“‚ɑ΂·‚éŽå—v‚ȃƒ^ƒf[ƒ^ƒƒJƒjƒYƒ€‚Æ‚µ‚Ä - JDK5.0‚̃Aƒmƒe[ƒVƒ‡ƒ“‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B - Hibernate3‚Å‚ÍJSR-220 (‰i‘±‰»API)‚Ì EntityManager ‚ðŽÀ‘•‚µA - ƒƒ^ƒf[ƒ^ƒ}ƒbƒsƒ“ƒO‚ɑ΂·‚éƒTƒ|[ƒg‚ÍA - •Êƒ_ƒEƒ“ƒ[ƒh‚Ì Hibernate Annotations ƒpƒbƒP[ƒW‚É‚æ‚è—˜—p‰Â”\‚Å‚·B - ‚±‚ê‚ÍEJB3(JSR-220)‚ÆHibernate3‚̃ƒ^ƒf[ƒ^‚ð‚Ç‚¿‚ç‚àƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B + JDK5.0ã§ã¯ã‚¿ã‚¤ãƒ—セーフã‹ã¤ã‚³ãƒ³ãƒ‘イル時ã«ãƒã‚§ãƒƒã‚¯ã§ãる〠+ 言語レベルã®XDocletスタイルã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’å°Žå…¥ã—ã¾ã—ãŸã€‚ + ã“ã®ãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã¯XDocletã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚ˆã‚Šã‚‚強力ã§ã€ãƒ„ールやIDEも多ããŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + 例ãˆã°IntelliJ IDEAã¯ã€JDK5.0ã«ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã®è‡ªå‹•è£œå®Œã¨æ§‹æ–‡ã®å¼·èª¿è¡¨ç¤ºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + EJB仕様 (JSR-220)ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ“ーンã«å¯¾ã™ã‚‹ä¸»è¦ãªãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã¨ã—㦠+ JDK5.0ã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’使用ã—ã¦ã„ã¾ã™ã€‚ + Hibernate3ã§ã¯JSR-220 (永続化API)ã® EntityManager を実装ã—〠+ メタデータマッピングã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã¯ã€ + 別ダウンロード㮠Hibernate Annotations パッケージã«ã‚ˆã‚Šåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ + ã“ã‚Œã¯EJB3(JSR-220)ã¨Hibernate3ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ã©ã¡ã‚‰ã‚‚サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ - ˆÈ‰º‚ÍEJB‚̃Gƒ“ƒeƒBƒeƒBƒr[ƒ“‚Æ‚µ‚Ä’Žß‚³‚ꂽPOJOƒNƒ‰ƒX‚Ì—á‚Å‚·B + 以下ã¯EJBã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ“ーンã¨ã—ã¦æ³¨é‡ˆã•ã‚ŒãŸPOJOクラスã®ä¾‹ã§ã™ã€‚ - JDK5.0‚̃Aƒmƒe[ƒVƒ‡ƒ“(‚ÆJSR-220)‚̃Tƒ|[ƒg‚Íis’†‚Ìì‹Æ‚Å‚ ‚èAŠ®‘S‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚³‚ç‚ÉÚ‚µ‚¢î•ñ‚ÍHibernate‚̃Aƒmƒe[ƒVƒ‡ƒ“Eƒ‚ƒWƒ…[ƒ‹‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + JDK5.0ã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³(ã¨JSR-220)ã®ã‚µãƒãƒ¼ãƒˆã¯é€²è¡Œä¸­ã®ä½œæ¥­ã§ã‚ã‚Šã€å®Œå…¨ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã•ã‚‰ã«è©³ã—ã„情報ã¯Hibernateã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãƒ»ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 @@ -3401,54 +3402,54 @@ public class Customer implements Serializable { - ¶¬ƒvƒƒpƒeƒB + 生æˆãƒ—ロパティ - ¶¬ƒvƒƒpƒeƒB‚Æ‚ÍAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚Ķ¬‚³‚ꂽ’l‚ðŽ‚ƒvƒƒpƒeƒB‚Å‚·B - ’ÊíAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAƒf[ƒ^ƒx[ƒX‚ª’l‚𶬂µ‚½ƒvƒƒpƒeƒB‚ðŠÜ‚ÞƒIƒuƒWƒFƒNƒg‚ð - ƒŠƒtƒŒƒbƒVƒ… ‚·‚é•K—v‚ª‚ ‚è‚Ü‚µ‚½B - ‚µ‚©‚µAƒvƒƒpƒeƒB‚ª¶¬‚³‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚ðƒ}[ƒN‚·‚邱‚Æ‚ÅA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓ŠƒtƒŒƒbƒVƒ…‚ÌÓ”C‚ðHibernate‚ɈÏ÷‚µ‚Ü‚·B + 生æˆãƒ—ロパティã¨ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ç”Ÿæˆã•ã‚ŒãŸå€¤ã‚’æŒã¤ãƒ—ロパティã§ã™ã€‚ + 通常ã€Hibernateアプリケーションã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒå€¤ã‚’生æˆã—ãŸãƒ—ロパティをå«ã‚€ã‚ªãƒ–ジェクトを + リフレッシュ ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã—ãŸã€‚ + ã—ã‹ã—ã€ãƒ—ロパティãŒç”Ÿæˆã•ã‚ŒãŸã¨ã„ã†ã“ã¨ã‚’マークã™ã‚‹ã“ã¨ã§ã€ + アプリケーションã¯ãƒªãƒ•ãƒ¬ãƒƒã‚·ãƒ¥ã®è²¬ä»»ã‚’Hibernateã«å§”è­²ã—ã¾ã™ã€‚ - Šî–{“I‚ÉA¶¬ƒvƒƒpƒeƒB‚ðŽ‚‚ƒè‹`‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä - Hibernate‚ªINSERT‚âUPDATE‚ÌSQL‚ð”­s‚µ‚½Œã‚·‚®‚ÉA - ¶¬‚³‚ꂽ’l‚ð“Ç‚Ýž‚Þ‚½‚ß‚Ì SELECT SQL ‚ª”­s‚³‚ê‚Ü‚·B + 基本的ã«ã€ç”Ÿæˆãƒ—ロパティをæŒã¤ã¨å®šç¾©ã—ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—㦠+ HibernateãŒINSERTã‚„UPDATEã®SQLを発行ã—ãŸå¾Œã™ãã«ã€ + 生æˆã•ã‚ŒãŸå€¤ã‚’読ã¿è¾¼ã‚€ãŸã‚ã® SELECT SQL ãŒç™ºè¡Œã•ã‚Œã¾ã™ã€‚ - ¶¬ƒvƒƒpƒeƒB‚ÍA‘}“ü•s‰Â”\‚©‚ÂXV•s‰Â”\‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - versions A - timestamps A - simple properties ‚¾‚¯‚ª¶¬‚³‚ꂽ‚ƃ}[ƒN‚Å‚«‚Ü‚·B + 生æˆãƒ—ロパティã¯ã€æŒ¿å…¥ä¸å¯èƒ½ã‹ã¤æ›´æ–°ä¸å¯èƒ½ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + versions 〠+ timestamps 〠+ simple properties ã ã‘ãŒç”Ÿæˆã•ã‚ŒãŸã¨ãƒžãƒ¼ã‚¯ã§ãã¾ã™ã€‚ - never (ƒfƒtƒHƒ‹ƒg) - —^‚¦‚ç‚ꂽƒvƒƒpƒeƒB‚Ì’l‚ÍA - ƒf[ƒ^ƒx[ƒX‚©‚綬‚³‚ê‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + never (デフォルト) - 与ãˆã‚‰ã‚ŒãŸãƒ—ロパティã®å€¤ã¯ã€ + データベースã‹ã‚‰ç”Ÿæˆã•ã‚Œãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - insert - —^‚¦‚ç‚ꂽƒvƒƒpƒeƒB‚Ì’l‚Í‘}“üŽž‚ɶ¬‚³‚ê‚邪A - ‘±‚¢‚Ä‹N‚±‚éXVŽž‚ɂͶ¬‚³‚ê‚È‚¢‚±‚ÆŽ¦‚µ‚Ü‚·B - 쬂³‚ꂽ“ú•t‚È‚Ç‚ÍA‚±‚̃JƒeƒSƒŠ‚É•ª—Þ‚³‚ê‚Ü‚·B - version ‚â - timestamp ‚Ì - ƒvƒƒpƒeƒB‚Ͷ¬‚³‚ꂽ‚ƃ}[ƒN‚Å‚«‚Ü‚·‚ªA‚±‚̃IƒvƒVƒ‡ƒ“‚Í—˜—p‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + insert - 与ãˆã‚‰ã‚ŒãŸãƒ—ロパティã®å€¤ã¯æŒ¿å…¥æ™‚ã«ç”Ÿæˆã•ã‚Œã‚‹ãŒã€ + 続ã„ã¦èµ·ã“る更新時ã«ã¯ç”Ÿæˆã•ã‚Œãªã„ã“ã¨ç¤ºã—ã¾ã™ã€‚ + 作æˆã•ã‚ŒãŸæ—¥ä»˜ãªã©ã¯ã€ã“ã®ã‚«ãƒ†ã‚´ãƒªã«åˆ†é¡žã•ã‚Œã¾ã™ã€‚ + version ã‚„ + timestamp ã® + プロパティã¯ç”Ÿæˆã•ã‚ŒãŸã¨ãƒžãƒ¼ã‚¯ã§ãã¾ã™ãŒã€ã“ã®ã‚ªãƒ—ションã¯åˆ©ç”¨ã§ããªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - always - ‘}“üŽž‚àXVŽž‚àƒvƒƒpƒeƒB‚Ì’l‚ª¶¬‚³‚ê‚邱‚Æ‚ðŽ¦‚µ‚Ü‚·B + always - 挿入時も更新時もプロパティã®å€¤ãŒç”Ÿæˆã•ã‚Œã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ - •â•“I‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg + 補助的ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ»ã‚ªãƒ–ジェクト - Hibernate‚̃XƒL[ƒ}EƒGƒ{ƒŠƒ…[ƒVƒ‡ƒ“ƒc[ƒ‹‚ƘA“®‚·‚邱‚Æ‚ÅA - ”CˆÓ‚̃f[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒgiƒgƒŠƒK[‚âƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚È‚Çj‚ÌCREATE‚ÆDROP‚É‚æ‚èA - Hibernate‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚̃†[ƒUEƒXƒL[ƒ}‚ð‚·‚×‚Ä’è‹`‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - Žå‚ɃgƒŠƒK‚âƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̂悤‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚𶬂â휂·‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚·‚ªA - ŽÀÛ‚É‚Í java.sql.Statement.execute() ƒƒ\ƒbƒh‚É‚æ‚Á‚ÄŽÀs‚Å‚«‚é - ”CˆÓ‚ÌSQLƒRƒ}ƒ“ƒhiALTERAINSERT‚È‚Çj‚ªŽÀs‚Å‚«‚Ü‚·B - •â•“I‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚ð’è‹`‚·‚邽‚ß‚ÌA2‚‚̊î–{“I‚È•û–@‚ª‚ ‚è‚Ü‚·B + Hibernateã®ã‚¹ã‚­ãƒ¼ãƒžãƒ»ã‚¨ãƒœãƒªãƒ¥ãƒ¼ã‚·ãƒ§ãƒ³ãƒ„ールã¨é€£å‹•ã™ã‚‹ã“ã¨ã§ã€ + ä»»æ„ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ»ã‚ªãƒ–ジェクト(トリガーやストアドプロシージャãªã©ï¼‰ã®CREATEã¨DROPã«ã‚ˆã‚Šã€ + Hibernateã®ãƒžãƒƒãƒ”ングファイル内ã®ãƒ¦ãƒ¼ã‚¶ãƒ»ã‚¹ã‚­ãƒ¼ãƒžã‚’ã™ã¹ã¦å®šç¾©ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + 主ã«ãƒˆãƒªã‚¬ã‚„ストアドプロシージャã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ»ã‚ªãƒ–ジェクトを生æˆã‚„削除ã™ã‚‹ã“ã¨ã‚’æ„図ã—ã¦ã„ã¾ã™ãŒã€ + 実際ã«ã¯ java.sql.Statement.execute() メソッドã«ã‚ˆã£ã¦å®Ÿè¡Œã§ãã‚‹ + ä»»æ„ã®SQLコマンド(ALTERã€INSERTãªã©ï¼‰ãŒå®Ÿè¡Œã§ãã¾ã™ã€‚ + 補助的ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ»ã‚ªãƒ–ジェクトを定義ã™ã‚‹ãŸã‚ã®ã€2ã¤ã®åŸºæœ¬çš„ãªæ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ - 1‚–ڂ̕û–@‚ÍACREATE‚ÆDROPƒRƒ}ƒ“ƒh‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÌŠO‚ÉA–¾Ž¦“I‚É‹LÚ‚·‚邱‚Æ‚Å‚·B + 1ã¤ç›®ã®æ–¹æ³•ã¯ã€CREATEã¨DROPコマンドをマッピングファイルã®å¤–ã«ã€æ˜Žç¤ºçš„ã«è¨˜è¼‰ã™ã‚‹ã“ã¨ã§ã™ã€‚ ... @@ -3458,9 +3459,9 @@ public class Customer implements Serializable { ]]> - 2‚–ڂ̕û–@‚ÍACREATE‚ÆDROPƒRƒ}ƒ“ƒh‚Ì‘g‚Ý—§‚Ä•û‚ð’m‚Á‚Ä‚¢‚éƒJƒXƒ^ƒ€ƒNƒ‰ƒX‚ð’ñ‹Ÿ‚·‚邱‚Æ‚Å‚·B - ‚±‚̃JƒXƒ^ƒ€ƒNƒ‰ƒX‚Í org.hibernate.mapping.AuxiliaryDatabaseObject ƒCƒ“ƒ^ƒtƒF[ƒX‚ð - ŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 2ã¤ç›®ã®æ–¹æ³•ã¯ã€CREATEã¨DROPコマンドã®çµ„ã¿ç«‹ã¦æ–¹ã‚’知ã£ã¦ã„るカスタムクラスをæä¾›ã™ã‚‹ã“ã¨ã§ã™ã€‚ + ã“ã®ã‚«ã‚¹ã‚¿ãƒ ã‚¯ãƒ©ã‚¹ã¯ org.hibernate.mapping.AuxiliaryDatabaseObject インタフェースを + 実装ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 ... @@ -3469,8 +3470,8 @@ public class Customer implements Serializable { ]]> - ‚³‚ç‚ÉA‚ ‚éƒf[ƒ^ƒx[ƒX•ûŒ¾‚ªŽg—p‚³‚ê‚鎞‚É‚¾‚¯“K—p‚·‚é‚Æ‚¢‚Á‚½‚悤‚ÉA - ƒf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚ªŽg‚í‚ê‚éƒP[ƒX‚ðŒÀ’è‚Å‚«‚Ü‚·B + ã•ã‚‰ã«ã€ã‚るデータベース方言ãŒä½¿ç”¨ã•ã‚Œã‚‹æ™‚ã«ã ã‘é©ç”¨ã™ã‚‹ã¨ã„ã£ãŸã‚ˆã†ã«ã€ + データベース・オブジェクトãŒä½¿ã‚れるケースをé™å®šã§ãã¾ã™ã€‚ ... diff --git a/documentation/manual/ja-JP/src/main/docbook/content/batch.xml b/documentation/manual/ja-JP/src/main/docbook/content/batch.xml index 45dd07eb52..0e52c88ce6 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/batch.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/batch.xml @@ -1,9 +1,11 @@ - + + + - ƒoƒbƒ`ˆ— + ãƒãƒƒãƒå‡¦ç† - Hibernate‚ðŽg‚Á‚ăf[ƒ^ƒx[ƒX‚É100,000s‚ð‘}“ü‚·‚é‹ð’¼‚È•û–@‚ÍA‚±‚̂悤‚È‚à‚Ì‚Å‚·F + Hibernateを使ã£ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«100,000行を挿入ã™ã‚‹æ„šç›´ãªæ–¹æ³•ã¯ã€ã“ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ï¼š - ‚±‚ê‚Í50,000”Ô–Ú‚Ìs‚Ì‚ ‚½‚è‚Å OutOfMemoryException ‚ÅŽ¸”s‚·‚é‚Å‚µ‚傤B - Hibernate‚ªƒZƒbƒVƒ‡ƒ“ƒŒƒxƒ‹ƒLƒƒƒbƒVƒ…‚ÅA - V‚µ‚­‘}“ü‚³‚ꂽ‚·‚×‚Ä‚Ì Customer - ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒLƒƒƒbƒVƒ…‚·‚é‚©‚ç‚Å‚·B + ã“ã‚Œã¯50,000番目ã®è¡Œã®ã‚ãŸã‚Šã§ OutOfMemoryException ã§å¤±æ•—ã™ã‚‹ã§ã—ょã†ã€‚ + HibernateãŒã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ¬ãƒ™ãƒ«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§ã€ + æ–°ã—ã挿入ã•ã‚ŒãŸã™ã¹ã¦ã® Customer + インスタンスをキャッシュã™ã‚‹ã‹ã‚‰ã§ã™ã€‚ - ‚±‚ÌÍ‚Å‚ÍA‚±‚Ì–â‘è‚ð‰ñ”ð‚·‚é•û–@‚ðЉ‚Ü‚·B - ‚µ‚©‚µƒoƒbƒ`ˆ—‚ð‚·‚é‚È‚çAJDBCƒoƒbƒ`‚ªŽg—p‰Â”\‚Å‚ ‚邱‚Æ‚ª”ñí‚Éd—v‚Å‚·B - ‚»‚¤‚Å‚È‚¯‚ê‚Ύ蠂ȃpƒtƒH[ƒ}ƒ“ƒX‚ª“¾‚ç‚ê‚Ü‚¹‚ñB - JDBCƒoƒbƒ`ƒTƒCƒY‚ðŽè ‚È”’li—Ⴆ‚ÎA10‚©‚ç50j‚Éݒ肵‚Ä‚­‚¾‚³‚¢F + ã“ã®ç« ã§ã¯ã€ã“ã®å•é¡Œã‚’回é¿ã™ã‚‹æ–¹æ³•ã‚’紹介ã—ã¾ã™ã€‚ + ã—ã‹ã—ãƒãƒƒãƒå‡¦ç†ã‚’ã™ã‚‹ãªã‚‰ã€JDBCãƒãƒƒãƒãŒä½¿ç”¨å¯èƒ½ã§ã‚ã‚‹ã“ã¨ãŒéžå¸¸ã«é‡è¦ã§ã™ã€‚ + ãã†ã§ãªã‘ã‚Œã°æ‰‹é ƒãªãƒ‘フォーマンスãŒå¾—られã¾ã›ã‚“。 + JDBCãƒãƒƒãƒã‚µã‚¤ã‚ºã‚’手頃ãªæ•°å€¤ï¼ˆä¾‹ãˆã°ã€10ã‹ã‚‰50)ã«è¨­å®šã—ã¦ãã ã•ã„: - ‚Ü‚½“ñŽŸƒLƒƒƒbƒVƒ…‚ª‘S‚­Œø‚©‚È‚¢ƒvƒƒZƒX‚ÅA - ‚±‚̂悤‚Èì‹Æ‚ð‚µ‚½‚¢‚ÆŽv‚¤‚©‚à‚µ‚ê‚Ü‚¹‚ñF + ã¾ãŸäºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãŒå…¨ã効ã‹ãªã„プロセスã§ã€ + ã“ã®ã‚ˆã†ãªä½œæ¥­ã‚’ã—ãŸã„ã¨æ€ã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“: - ‚µ‚©‚µA‚±‚ê‚Íâ‘΂ɕK—v‚Æ‚¢‚¤‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ‚È‚º‚È‚ç–¾Ž¦“I‚É CacheMode ‚ðݒ肵‚ÄA - “ñŽŸƒLƒƒƒbƒVƒ…‚Æ‚Ì‘ŠŒÝì—p‚𖳌ø‚É‚·‚邱‚Æ‚ª‚Å‚«‚é‚©‚ç‚Å‚·B + ã—ã‹ã—ã€ã“ã‚Œã¯çµ¶å¯¾ã«å¿…è¦ã¨ã„ã†ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ãªãœãªã‚‰æ˜Žç¤ºçš„ã« CacheMode を設定ã—ã¦ã€ + 二次キャッシュã¨ã®ç›¸äº’作用を無効ã«ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã‚‰ã§ã™ã€‚ - ƒoƒbƒ`‘}“ü + ãƒãƒƒãƒæŒ¿å…¥ - V‚µ‚¢ƒIƒuƒWƒFƒNƒg‚ð‰i‘±‰»‚·‚é‚Æ‚«AˆêŽŸƒLƒƒƒbƒVƒ…‚̃TƒCƒY‚ð§ŒÀ‚·‚邽‚ßA - ƒZƒbƒVƒ‡ƒ“‚ð flush() ‚µ‚Ä clear() - ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + æ–°ã—ã„オブジェクトを永続化ã™ã‚‹ã¨ãã€ä¸€æ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ã‚µã‚¤ã‚ºã‚’制é™ã™ã‚‹ãŸã‚〠+ セッションを flush() ã—㦠clear() + ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ƒoƒbƒ`XV + ãƒãƒƒãƒæ›´æ–° - ƒf[ƒ^‚𕜌³‚µ‚½‚èXV‚µ‚½‚è‚·‚é‚É‚Í“¯‚¶ƒAƒCƒfƒBƒA‚ð“K—p‚µ‚Ü‚·B - ‚»‚ê‚ɉÁ‚¦‚ÄAƒf[ƒ^‚Ìs‚𑽂­•Ô‚·ƒNƒGƒŠ‚ɑ΂µ‚Ä—LŒø‚È - ƒT[ƒo[ƒTƒCƒh‚̃J[ƒ\ƒ‹‚Ì—˜“_‚𶂩‚µ‚½‚¯‚ê‚Î - scroll() ‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B + データを復元ã—ãŸã‚Šæ›´æ–°ã—ãŸã‚Šã™ã‚‹ã«ã¯åŒã˜ã‚¢ã‚¤ãƒ‡ã‚£ã‚¢ã‚’é©ç”¨ã—ã¾ã™ã€‚ + ãã‚Œã«åŠ ãˆã¦ã€ãƒ‡ãƒ¼ã‚¿ã®è¡Œã‚’多ãè¿”ã™ã‚¯ã‚¨ãƒªã«å¯¾ã—ã¦æœ‰åŠ¹ãª + サーãƒãƒ¼ã‚µã‚¤ãƒ‰ã®ã‚«ãƒ¼ã‚½ãƒ«ã®åˆ©ç‚¹ã‚’生ã‹ã—ãŸã‘れ㰠+ scroll() を使ã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - StatelessSessionƒCƒ“ƒ^[ƒtƒFƒCƒX + StatelessSessionインターフェイス - ‚Ü‚½•Ê‚Ì•û–@‚Æ‚µ‚ÄAHibernate‚̓Rƒ}ƒ“ƒhŽwŒü‚ÌAPI‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B - ‚±‚ê‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ÌŒ`‚ÅA - ƒf[ƒ^ƒx[ƒX‚Ƃ̃f[ƒ^ƒXƒgƒŠ[ƒ€‚Ì‚â‚èŽæ‚è‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - StatelessSession ‚ÍŠÖ˜A‚·‚é‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ðŽ‚½‚¸A - ‚ƒŒƒxƒ‹‚̃‰ƒCƒtƒTƒCƒNƒ‹ƒZƒ}ƒ“ƒeƒBƒNƒX‚Ì‘½‚­‚ð’ñ‹Ÿ‚µ‚Ü‚¹‚ñB - “Á‚ɃXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚ÍAˆêŽžƒLƒƒƒbƒVƒ…‚ðŽÀ‘•‚¹‚¸A - ‚Ü‚½‚ǂ̂悤‚È“ñŽŸƒLƒƒƒbƒVƒ…‚âƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Æ‚à‘ŠŒÝì—p‚µ‚Ü‚¹‚ñB - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹‚Èwrite-behind‚⎩“®ƒ_[ƒeƒBƒ`ƒFƒbƒN‚àŽÀ‘•‚µ‚Ü‚¹‚ñB - ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚ðŽg‚Á‚Äs‚í‚ê‚鑀삪A - ŠÖ˜A‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚ÖƒJƒXƒP[ƒh‚³‚ê‚邱‚Æ‚ÍŒˆ‚µ‚Ä‚ ‚è‚Ü‚¹‚ñB - ƒRƒŒƒNƒVƒ‡ƒ“‚ÍAƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚©‚ç‚Í–³Ž‹‚³‚ê‚Ü‚·B - ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚ð’Ê‚µ‚Äs‚í‚ê‚é‘€ì‚ÍA - Hibernate‚̃Cƒxƒ“ƒgƒ‚ƒfƒ‹‚âƒCƒ“ƒ^[ƒZƒvƒ^‚̉e‹¿‚ðŽó‚¯‚Ü‚¹‚ñB - ˆêŽžƒLƒƒƒbƒVƒ…‚ðŽ‚½‚È‚¢‚½‚ßA - ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚Í•Ê–¼‚ðŽ‚ƒf[ƒ^‚ÉãŽè‚­‘Έ‚Å‚«‚Ü‚¹‚ñB - ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚͒჌ƒxƒ‹‚Ì’ŠÛ‰»‚Å‚ ‚èAJDBC‚É”ñí‚É‚æ‚­Ž—‚Ä‚¢‚Ü‚·B + ã¾ãŸåˆ¥ã®æ–¹æ³•ã¨ã—ã¦ã€Hibernateã¯ã‚³ãƒžãƒ³ãƒ‰æŒ‡å‘ã®APIを用æ„ã—ã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã¯åˆ†é›¢ã‚ªãƒ–ジェクトã®å½¢ã§ã€ + データベースã¨ã®ãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆãƒªãƒ¼ãƒ ã®ã‚„ã‚Šå–ã‚Šã«ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + StatelessSession ã¯é–¢é€£ã™ã‚‹æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’æŒãŸãšã€ + 高レベルã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã®å¤šãã‚’æä¾›ã—ã¾ã›ã‚“。 + 特ã«ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¬ã‚¹ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯ã€ä¸€æ™‚キャッシュを実装ã›ãšã€ + ã¾ãŸã©ã®ã‚ˆã†ãªäºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚„クエリキャッシュã¨ã‚‚相互作用ã—ã¾ã›ã‚“。 + トランザクショナルãªwrite-behindや自動ダーティãƒã‚§ãƒƒã‚¯ã‚‚実装ã—ã¾ã›ã‚“。 + ステートレスセッションを使ã£ã¦è¡Œã‚れるæ“作ãŒã€ + 関連ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¸ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã•ã‚Œã‚‹ã“ã¨ã¯æ±ºã—ã¦ã‚ã‚Šã¾ã›ã‚“。 + コレクションã¯ã€ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¬ã‚¹ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‹ã‚‰ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚ + ステートレスセッションを通ã—ã¦è¡Œã‚れるæ“作ã¯ã€ + Hibernateã®ã‚¤ãƒ™ãƒ³ãƒˆãƒ¢ãƒ‡ãƒ«ã‚„インターセプタã®å½±éŸ¿ã‚’å—ã‘ã¾ã›ã‚“。 + 一時キャッシュをæŒãŸãªã„ãŸã‚〠+ ステートレスセッションã¯åˆ¥åã‚’æŒã¤ãƒ‡ãƒ¼ã‚¿ã«ä¸Šæ‰‹ã対処ã§ãã¾ã›ã‚“。 + ステートレスセッションã¯ä½Žãƒ¬ãƒ™ãƒ«ã®æŠ½è±¡åŒ–ã§ã‚ã‚Šã€JDBCã«éžå¸¸ã«ã‚ˆãä¼¼ã¦ã„ã¾ã™ã€‚ @@ -144,20 +146,20 @@ tx.commit(); session.close();]]> - ‚±‚̃R[ƒh—á‚Å‚ÍAƒNƒGƒŠ‚ª•Ô‚· Customer - ƒCƒ“ƒXƒ^ƒ“ƒX‚Í‘¦À‚ÉiƒZƒbƒVƒ‡ƒ“‚©‚çj•ª—£‚³‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚ÍA‚ǂ̂悤‚ȉi‘±ƒRƒ“ƒeƒLƒXƒg‚Æ‚àŒˆ‚µ‚ÄŠÖ˜A‚µ‚Ü‚¹‚ñB + ã“ã®ã‚³ãƒ¼ãƒ‰ä¾‹ã§ã¯ã€ã‚¯ã‚¨ãƒªãŒè¿”ã™ Customer + インスタンスã¯å³åº§ã«ï¼ˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‹ã‚‰ï¼‰åˆ†é›¢ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“ã‚Œã¯ã€ã©ã®ã‚ˆã†ãªæ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã¨ã‚‚決ã—ã¦é–¢é€£ã—ã¾ã›ã‚“。 - StatelessSession ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å’è‹`‚³‚ê‚Ä‚¢‚é - insert(), update(), delete() ‚ÍA - ’჌ƒxƒ‹‚Ì’¼Ú“I‚ȃf[ƒ^ƒx[ƒX‘€ì‚Æl‚¦‚ç‚ê‚Ü‚·B - Œ‹‰Ê‚Æ‚µ‚ÄASQL‚Ì INSERT, UPDATE, DELETE ‚ª‚»‚ꂼ‚ꑦÀ‚ÉŽÀs‚³‚ê‚Ü‚·B - ‚±‚̂悤‚ÉA‚±‚ê‚ç‚Í Session ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å’è‹`‚³‚ê‚Ä‚¢‚é + StatelessSession インターフェイスã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ + insert(), update(), delete() ã¯ã€ + 低レベルã®ç›´æŽ¥çš„ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æ“作ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ + çµæžœã¨ã—ã¦ã€SQLã® INSERT, UPDATE, DELETE ãŒãã‚Œãžã‚Œå³åº§ã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ + ã“ã®ã‚ˆã†ã«ã€ã“れら㯠Session インターフェイスã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ save(), saveOrUpdate(), delete() - ‚Æ‚Í”ñí‚ɈقȂéˆÓ–¡‚ðŽ‚¿‚Ü‚·B + ã¨ã¯éžå¸¸ã«ç•°ãªã‚‹æ„味をæŒã¡ã¾ã™ã€‚ @@ -165,68 +167,68 @@ session.close();]]> - DMLƒXƒ^ƒCƒ‹‚Ì‘€ì + DMLスタイルã®æ“作 - ‚·‚Å‚É‹c˜_‚µ‚½‚悤‚ÉAŽ©“®“I‚©‚“§‰ß“I‚ȃIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚ÍA - ƒIƒuƒWƒFƒNƒg‚Ìó‘Ô‚ÌŠÇ—‚Å‚ ‚é‚Æl‚¦‚ç‚ê‚Ü‚·B - ‚±‚ê‚̓ƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚Ìó‘Ô‚ð—˜—p‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ‚»‚Ì‚½‚ßiSQL‚Ì ƒf[ƒ^‘€ìŒ¾Œê (DML) •¶F + ã™ã§ã«è­°è«–ã—ãŸã‚ˆã†ã«ã€è‡ªå‹•çš„ã‹ã¤é€éŽçš„ãªã‚ªãƒ–ジェクト/リレーショナルマッピングã¯ã€ + オブジェクトã®çŠ¶æ…‹ã®ç®¡ç†ã§ã‚ã‚‹ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ + ã“ã‚Œã¯ãƒ¡ãƒ¢ãƒªå†…ã®ã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã‚’利用ã§ãã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + ãã®ãŸã‚(SQL㮠データæ“作言語 (DML) 文: INSERT, UPDATE, DELETE - ‚ðŽg‚Á‚Äjƒf[ƒ^ƒx[ƒX“à‚̃f[ƒ^‚ð’¼Ú‘€ì‚µ‚Ä‚àA - ƒƒ‚ƒŠ“à‚Ìó‘Ԃɂ͉e‹¿‚ð—^‚¦‚Ü‚¹‚ñB - ‚µ‚©‚µHibernate‚ÍAƒoƒ‹ƒNSQLƒXƒ^ƒCƒ‹‚ÌDML•¶ŽÀs‚ɑΉž‚·‚郃\ƒbƒh‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B - ‚±‚ê‚ÍHibernateƒNƒGƒŠŒ¾ŒêiHQLj - ‚ð’Ê‚µ‚ÄŽÀs‚³‚ê‚Ü‚·B + を使ã£ã¦ï¼‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ãƒ‡ãƒ¼ã‚¿ã‚’直接æ“作ã—ã¦ã‚‚〠+ メモリ内ã®çŠ¶æ…‹ã«ã¯å½±éŸ¿ã‚’与ãˆã¾ã›ã‚“。 + ã—ã‹ã—Hibernateã¯ã€ãƒãƒ«ã‚¯SQLスタイルã®DML文実行ã«å¯¾å¿œã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’用æ„ã—ã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã¯Hibernateクエリ言語(HQL) + を通ã—ã¦å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ - UPDATE ‚Æ DELETE •¶‚Ì‹^Ž—\•¶‚ÍF - ( UPDATE | DELETE ) FROM? ƒGƒ“ƒeƒBƒeƒB–¼ (WHERE ðŒß)? ‚Å‚·B - ’ˆÓ‚·‚ׂ«“_‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F + UPDATE 㨠DELETE æ–‡ã®ç–‘似構文ã¯ï¼š + ( UPDATE | DELETE ) FROM? エンティティå (WHERE æ¡ä»¶ç¯€)? ã§ã™ã€‚ + 注æ„ã™ã¹ã点ãŒã„ãã¤ã‹ã‚ã‚Šã¾ã™ï¼š - fromß‚É‚¨‚¢‚ÄAFROMƒL[ƒ[ƒh‚̓IƒvƒVƒ‡ƒ“‚Å‚·B + from節ã«ãŠã„ã¦ã€FROMキーワードã¯ã‚ªãƒ—ションã§ã™ã€‚ - fromß‚Å‚Í’Pˆê‚̃Gƒ“ƒeƒBƒeƒB–¼‚¾‚¯‚ª‰Â”\‚ÅA - ”CˆÓ‚Å•Ê–¼‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ƒGƒ“ƒeƒBƒeƒB–¼‚É•Ê–¼‚ª—^‚¦‚ç‚ê‚é‚ÆA‚ǂ̂悤‚ȃvƒƒpƒeƒBŽQÆ‚àA - ‚»‚Ì•Ê–¼‚ðŽg‚Á‚ÄCü‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚à‚µƒGƒ“ƒeƒBƒeƒB–¼‚É•Ê–¼‚ª—^‚¦‚ç‚ê‚È‚¯‚ê‚ÎA - ‚ǂ̂悤‚ȃvƒƒpƒeƒBŽQÆ‚àCü‚µ‚Ä‚Í‚È‚è‚Ü‚¹‚ñB + from節ã§ã¯å˜ä¸€ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£åã ã‘ãŒå¯èƒ½ã§ã€ + ä»»æ„ã§åˆ¥åを付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + エンティティåã«åˆ¥åãŒä¸Žãˆã‚‰ã‚Œã‚‹ã¨ã€ã©ã®ã‚ˆã†ãªãƒ—ロパティå‚照も〠+ ãã®åˆ¥åを使ã£ã¦ä¿®é£¾ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã‚‚ã—エンティティåã«åˆ¥åãŒä¸Žãˆã‚‰ã‚Œãªã‘ã‚Œã°ã€ + ã©ã®ã‚ˆã†ãªãƒ—ロパティå‚照も修飾ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。 - iˆÃ–Ù“I‚Å‚ ‚ê–¾Ž¦“I‚Å‚ ‚êjŒ‹‡ - ‚ðƒoƒ‹ƒNHQLƒNƒGƒŠ“à‚ÅŽw’è‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ƒTƒuƒNƒGƒŠ‚Íwhereß‚ÅŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚· - ƒTƒuƒNƒGƒŠ‚»‚Ì‚à‚Ì‚ÍAŒ‹‡‚ðŠÜ‚ß‚ç‚ê‚Ü‚·B + (暗黙的ã§ã‚れ明示的ã§ã‚れ)çµåˆ + ã‚’ãƒãƒ«ã‚¯HQLクエリ内ã§æŒ‡å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + サブクエリã¯where節ã§ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ + サブクエリãã®ã‚‚ã®ã¯ã€çµåˆã‚’å«ã‚られã¾ã™ã€‚ - where߂̓IƒvƒVƒ‡ƒ“‚Å‚·B + where節ã¯ã‚ªãƒ—ションã§ã™ã€‚ - —á‚Æ‚µ‚ÄAHQL‚Ì UPDATE ‚ðŽÀs‚·‚é‚É‚ÍA - Query.executeUpdate() ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - i‚±‚̃ƒ\ƒbƒh‚Í‚¨‚È‚¶‚Ý‚ÌJDBC PreparedStatement.executeUpdate() - ‚©‚ç–¼•t‚¯‚ç‚ê‚Ü‚µ‚½jF + 例ã¨ã—ã¦ã€HQLã® UPDATE を実行ã™ã‚‹ã«ã¯ã€ + Query.executeUpdate() メソッドを使ã£ã¦ãã ã•ã„。 + (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ãŠãªã˜ã¿ã®JDBC PreparedStatement.executeUpdate() + ã‹ã‚‰å付ã‘られã¾ã—ãŸï¼‰ï¼š d @@ -243,16 +245,16 @@ tx.commit(); session.close();]]> - HQL‚Ì UPDATE •¶‚ÍAƒfƒtƒHƒ‹ƒg‚Å‚ÍAì—p‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì - version ‚â + HQLã® UPDATE æ–‡ã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯ã€ä½œç”¨ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã® + version ã‚„ timestamp - ƒvƒƒpƒeƒB‚Ì’l‚ɂ͉e‹¿‚µ‚Ü‚¹‚ñB - ‚±‚ê‚ÍEJB3‚ÌŽd—l‚É‚àŽó‚¯Œp‚ª‚ê‚Ä‚¢‚Ü‚·B - ‚µ‚©‚µ versioned update ‚ðŽg‚Á‚ÄA - version ‚â timestamp - ƒvƒƒpƒeƒB‚Ì’l‚ð‹­§“I‚ɃŠƒZƒbƒg‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚ê‚Í UPDATE ƒL[ƒ[ƒh‚ÌŒã‚É VERSIONED - ƒL[ƒ[ƒh‚ð’ljÁ‚·‚邱‚Æ‚Ås‚¦‚Ü‚·B + プロパティã®å€¤ã«ã¯å½±éŸ¿ã—ã¾ã›ã‚“。 + ã“ã‚Œã¯EJB3ã®ä»•æ§˜ã«ã‚‚å—ã‘継ãŒã‚Œã¦ã„ã¾ã™ã€‚ + ã—ã‹ã— versioned update を使ã£ã¦ã€ + version ã‚„ timestamp + プロパティã®å€¤ã‚’強制的ã«ãƒªã‚»ãƒƒãƒˆã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“れ㯠UPDATE キーワードã®å¾Œã« VERSIONED + キーワードを追加ã™ã‚‹ã“ã¨ã§è¡Œãˆã¾ã™ã€‚ - ƒJƒXƒ^ƒ€ƒo[ƒWƒ‡ƒ“Œ^iorg.hibernate.usertype.UserVersionTypej - ‚Í update versioned •¶‚ƈê‚ÉŽg‚¦‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + カスタムãƒãƒ¼ã‚¸ãƒ§ãƒ³åž‹ï¼ˆorg.hibernate.usertype.UserVersionType) + 㯠update versioned æ–‡ã¨ä¸€ç·’ã«ä½¿ãˆãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - HQL‚Ì DELETE ‚ðŽÀs‚·‚é‚É‚ÍA - “¯‚¶ Query.executeUpdate() ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢F + HQLã® DELETE を実行ã™ã‚‹ã«ã¯ã€ + åŒã˜ Query.executeUpdate() メソッドを使ã£ã¦ãã ã•ã„: @@ -288,87 +290,87 @@ tx.commit(); session.close();]]> - Query.executeUpdate() ƒƒ\ƒbƒh‚ª•Ô‚· int - ‚Ì’l‚ÍA‚±‚Ì‘€ì‚ª‰e‹¿‚ð‹y‚Ú‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚Ì”‚Å‚·B - ‚±‚ꂪ‰e‹¿‚·‚éƒf[ƒ^ƒx[ƒX“à‚Ìs”‚ÆA‘ŠŒÝ‚ÉŠÖŒW‚·‚é‚©‚Ç‚¤‚©‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B - HQLƒoƒ‹ƒN‘€ì‚ÍAŒ‹‰Ê‚Æ‚µ‚ÄAŽÀÛ‚ÌSQL•¶‚ª•¡”ŽÀs‚³‚ê‚邱‚Æ‚É‚È‚è‚Ü‚·B - —Ⴆ‚Îjoined-subclass‚Å‚·B - •Ô‚³‚ê‚锂ÍA‚»‚Ì•¶‚É‚æ‚Á‚ĉe‹¿‚³‚ꂽŽÀۂ̃Gƒ“ƒeƒBƒeƒB‚Ì”‚ðŽ¦‚µ‚Ü‚·B - joined-subclass‚Ì—á‚É–ß‚é‚ÆAƒTƒuƒNƒ‰ƒX‚̈ê‚‚ɑ΂·‚é휂ÍA - ‚»‚̃TƒuƒNƒ‰ƒX‚ªƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒe[ƒuƒ‹‚¾‚¯‚Å‚Í‚È‚­A - uƒ‹[ƒgvƒe[ƒuƒ‹‚ÆŒp³ŠK‘w‚ð‚³‚ç‚ɉº‚Á‚½joined-subclass‚̃e[ƒuƒ‹‚Ì휂ɂȂè‚Ü‚·B + Query.executeUpdate() メソッドãŒè¿”ã™ int + ã®å€¤ã¯ã€ã“ã®æ“作ãŒå½±éŸ¿ã‚’åŠã¼ã—ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®æ•°ã§ã™ã€‚ + ã“ã‚ŒãŒå½±éŸ¿ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®è¡Œæ•°ã¨ã€ç›¸äº’ã«é–¢ä¿‚ã™ã‚‹ã‹ã©ã†ã‹ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„。 + HQLãƒãƒ«ã‚¯æ“作ã¯ã€çµæžœã¨ã—ã¦ã€å®Ÿéš›ã®SQLæ–‡ãŒè¤‡æ•°å®Ÿè¡Œã•ã‚Œã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + 例ãˆã°joined-subclassã§ã™ã€‚ + è¿”ã•ã‚Œã‚‹æ•°ã¯ã€ãã®æ–‡ã«ã‚ˆã£ã¦å½±éŸ¿ã•ã‚ŒãŸå®Ÿéš›ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®æ•°ã‚’示ã—ã¾ã™ã€‚ + joined-subclassã®ä¾‹ã«æˆ»ã‚‹ã¨ã€ã‚µãƒ–クラスã®ä¸€ã¤ã«å¯¾ã™ã‚‹å‰Šé™¤ã¯ã€ + ãã®ã‚µãƒ–クラスãŒãƒžãƒƒãƒ”ングã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルã ã‘ã§ã¯ãªã〠+ 「ルートã€ãƒ†ãƒ¼ãƒ–ルã¨ç¶™æ‰¿éšŽå±¤ã‚’ã•ã‚‰ã«ä¸‹ã£ãŸjoined-subclassã®ãƒ†ãƒ¼ãƒ–ルã®å‰Šé™¤ã«ãªã‚Šã¾ã™ã€‚ - INSERT •¶‚Ì‹^Ž—\•¶‚ÍF - INSERT INTO ƒGƒ“ƒeƒBƒeƒB–¼ ƒvƒƒpƒeƒBƒŠƒXƒg select•¶ ‚Å‚·B - ’ˆÓ‚·‚ׂ«“_‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F + INSERT æ–‡ã®ç–‘似構文ã¯ï¼š + INSERT INTO エンティティå プロパティリスト selectæ–‡ ã§ã™ã€‚ + 注æ„ã™ã¹ã点ãŒã„ãã¤ã‹ã‚ã‚Šã¾ã™ï¼š - INSERT INTO ... SELECT ... ‚ÌŒ`Ž®‚¾‚¯‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚·B - INSERT INTO ... VALUES ... ‚ÌŒ`Ž®‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB + INSERT INTO ... SELECT ... ã®å½¢å¼ã ã‘ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ + INSERT INTO ... VALUES ... ã®å½¢å¼ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 - ƒvƒƒpƒeƒBƒŠƒXƒg‚ÍASQL‚Ì INSERT •¶‚É‚¨‚¯‚é ƒJƒ‰ƒ€‚ÌŽd—l - ‚É—ÞŽ—‚µ‚Ä‚¢‚Ü‚·B - Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÜ‚Ü‚ê‚éƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚ÄA - ƒNƒ‰ƒXƒŒƒxƒ‹‚Å’¼Ú’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚¾‚¯‚ªAƒvƒƒpƒeƒBƒŠƒXƒg‚ÉŽg‚¦‚Ü‚·B - ƒX[ƒp[ƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚Í”F‚ß‚ç‚ꂸAƒTƒuƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ÍŒø‰Ê‚ª‚ ‚è‚Ü‚¹‚ñB - Œ¾‚¢Š·‚¦‚é‚Æ INSERT •¶‚ÍA–{Ž¿“I‚Ƀ|ƒŠƒ‚[ƒtƒBƒbƒN‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + プロパティリストã¯ã€SQLã® INSERT æ–‡ã«ãŠã‘ã‚‹ カラムã®ä»•æ§˜ + ã«é¡žä¼¼ã—ã¦ã„ã¾ã™ã€‚ + 継承ã®ãƒžãƒƒãƒ”ングã«å«ã¾ã‚Œã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—ã¦ã€ + クラスレベルã§ç›´æŽ¥å®šç¾©ã•ã‚ŒãŸãƒ—ロパティã ã‘ãŒã€ãƒ—ロパティリストã«ä½¿ãˆã¾ã™ã€‚ + スーパークラスã®ãƒ—ロパティã¯èªã‚られãšã€ã‚µãƒ–クラスã®ãƒ—ロパティã¯åŠ¹æžœãŒã‚ã‚Šã¾ã›ã‚“。 + 言ã„æ›ãˆã‚‹ã¨ INSERT æ–‡ã¯ã€æœ¬è³ªçš„ã«ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - select•¶‚Ì•Ô‚è’l‚ÌŒ^‚ªinsert•¶‚ªŠú‘Ò‚·‚éŒ^‚ƃ}ƒbƒ`‚µ‚Ä‚¢‚ê‚ÎA - ‚»‚Ìselect•¶‚͑Ó–‚ÈHQL selectƒNƒGƒŠ‚ƂȂ肦‚Ü‚·B - Œ»Ý‚±‚̃`ƒFƒbƒN‚ðƒf[ƒ^ƒx[ƒX‚Ö”C‚¹‚é‚Ì‚Å‚Í‚È‚­AƒNƒGƒŠ‚̃Rƒ“ƒpƒCƒ‹Žž‚Ƀ`ƒFƒbƒN‚µ‚Ü‚·B - ‚±‚Ì‚±‚Æ‚ÍAequal‚Ƃ͈ႢA - Hibernate‚Ì Type ŠÔ‚Ì equivalent ‚ÉŠÖ‚·‚é - –â‘è‚ðˆø‚«‹N‚±‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚Í org.hibernate.type.DataType ‚Æ‚µ‚Ä’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚ÆA + selectæ–‡ã®è¿”り値ã®åž‹ãŒinsertæ–‡ãŒæœŸå¾…ã™ã‚‹åž‹ã¨ãƒžãƒƒãƒã—ã¦ã„ã‚Œã°ã€ + ãã®selectæ–‡ã¯å¦¥å½“ãªHQL selectクエリã¨ãªã‚Šãˆã¾ã™ã€‚ + ç¾åœ¨ã“ã®ãƒã‚§ãƒƒã‚¯ã‚’データベースã¸ä»»ã›ã‚‹ã®ã§ã¯ãªãã€ã‚¯ã‚¨ãƒªã®ã‚³ãƒ³ãƒ‘イル時ã«ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ + ã“ã®ã“ã¨ã¯ã€equalã¨ã¯é•ã„〠+ Hibernateã® Type é–“ã® equivalent ã«é–¢ã™ã‚‹ + å•é¡Œã‚’引ãèµ·ã“ã™ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“れ㯠org.hibernate.type.DataType ã¨ã—ã¦å®šç¾©ã•ã‚ŒãŸãƒ—ロパティã¨ã€ org.hibernate.type.TimestampType - ‚Æ‚µ‚Ä’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚̊Ԃ̃~ƒXƒ}ƒbƒ`‚Ì–â‘è‚ðˆø‚«‹N‚±‚µ‚Ü‚·B - ƒf[ƒ^ƒx[ƒX‚ª‚»‚ê‚ç‚ð‹æ•Ê‚Å‚«‚È‚­‚Ä‚àA•ÏŠ·‚·‚邱‚Æ‚ª‚Å‚«‚Ä‚àA‚±‚Ì–â‘è‚Í”­¶‚µ‚Ü‚·B + ã¨ã—ã¦å®šç¾©ã•ã‚ŒãŸãƒ—ロパティã®é–“ã®ãƒŸã‚¹ãƒžãƒƒãƒã®å•é¡Œã‚’引ãèµ·ã“ã—ã¾ã™ã€‚ + データベースãŒãれらを区別ã§ããªãã¦ã‚‚ã€å¤‰æ›ã™ã‚‹ã“ã¨ãŒã§ãã¦ã‚‚ã€ã“ã®å•é¡Œã¯ç™ºç”Ÿã—ã¾ã™ã€‚ - idƒvƒƒpƒeƒB‚ɑ΂µ‚ÄAinsert•¶‚É‚Í“ñ‚‚̑I‘ðŽˆ‚ª‚ ‚è‚Ü‚·B - ƒvƒƒpƒeƒBƒŠƒXƒg‚Å–¾Ž¦“I‚ÉidƒvƒƒpƒeƒB‚ðŽw’è‚·‚é‚© - i‚±‚Ìê‡A‘Ήž‚·‚éselectŽ®‚©‚ç’l‚ªŽæ‚ç‚ê‚Ü‚·jA - ƒvƒƒpƒeƒBƒŠƒXƒg‚©‚眊O‚·‚é‚© - i‚±‚Ìê‡A¶¬‚³‚ê‚é’l‚ªŽg‚í‚ê‚Ü‚·j‚Ì‚¢‚¸‚ê‚©‚Å‚·B - ŒãŽÒ‚Ì‘I‘ðŽˆ‚ÍAƒf[ƒ^ƒx[ƒX“à‚ð‘€ì‚·‚éidƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚Æ‚«‚Ì‚ÝA—˜—p‰Â”\‚Å‚·B - ‚±‚Ì‘I‘ðŽˆ‚ðÌ‚éê‡AuƒCƒ“ƒƒ‚ƒŠvŒ^‚̃WƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚ÆA\•¶‰ðÍŽž‚É—áŠO‚ª”­¶‚µ‚Ü‚·B - ‚±‚Ì‹c˜_‚Å‚ÍAƒCƒ“ƒf[ƒ^ƒx[ƒXŒ^ƒWƒFƒlƒŒ[ƒ^‚Í org.hibernate.id.SequenceGenerator - i‚Æ‚»‚̃TƒuƒNƒ‰ƒXj‚ÆAorg.hibernate.id.PostInsertIdentifierGenerator - ‚ÌŽÀ‘•‚Å‚ ‚é‚Æl‚¦‚Ä‚¢‚Ü‚·B - ‚±‚±‚ÅÅ‚à’ˆÓ‚·‚ׂ«—áŠO‚ÍAorg.hibernate.id.TableHiLoGenerator ‚Å‚·B - ’l‚ðŽæ“¾‚·‚é‘I‘ð‰Â”\‚È•û–@‚ª‚È‚¢‚½‚ßA‚±‚̃WƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB + idプロパティã«å¯¾ã—ã¦ã€insertæ–‡ã«ã¯äºŒã¤ã®é¸æŠžè‚¢ãŒã‚ã‚Šã¾ã™ã€‚ + プロパティリストã§æ˜Žç¤ºçš„ã«idプロパティを指定ã™ã‚‹ã‹ + (ã“ã®å ´åˆã€å¯¾å¿œã™ã‚‹selectå¼ã‹ã‚‰å€¤ãŒå–られã¾ã™ï¼‰ã€ + プロパティリストã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ + (ã“ã®å ´åˆã€ç”Ÿæˆã•ã‚Œã‚‹å€¤ãŒä½¿ã‚ã‚Œã¾ã™ï¼‰ã®ã„ãšã‚Œã‹ã§ã™ã€‚ + 後者ã®é¸æŠžè‚¢ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã‚’æ“作ã™ã‚‹idジェãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã†ã¨ãã®ã¿ã€åˆ©ç”¨å¯èƒ½ã§ã™ã€‚ + ã“ã®é¸æŠžè‚¢ã‚’採る場åˆã€ã€Œã‚¤ãƒ³ãƒ¡ãƒ¢ãƒªã€åž‹ã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã†ã¨ã€æ§‹æ–‡è§£æžæ™‚ã«ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã™ã€‚ + ã“ã®è­°è«–ã§ã¯ã€ã‚¤ãƒ³ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹åž‹ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã¯ org.hibernate.id.SequenceGenerator + (ã¨ãã®ã‚µãƒ–クラス)ã¨ã€org.hibernate.id.PostInsertIdentifierGenerator + ã®å®Ÿè£…ã§ã‚ã‚‹ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚ + ã“ã“ã§æœ€ã‚‚注æ„ã™ã¹ã例外ã¯ã€org.hibernate.id.TableHiLoGenerator ã§ã™ã€‚ + 値をå–å¾—ã™ã‚‹é¸æŠžå¯èƒ½ãªæ–¹æ³•ãŒãªã„ãŸã‚ã€ã“ã®ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã‚’使ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - version ‚â timestamp ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚éƒvƒƒpƒeƒB‚ɑ΂µ‚ÄA - insert•¶‚É‚Í“ñ‚‚̑I‘ðŽˆ‚ª‚ ‚è‚Ü‚·B - ƒvƒƒpƒeƒBƒŠƒXƒg‚Å–¾Ž¦“I‚ɃvƒƒpƒeƒB‚ðŽw’è‚·‚é‚© - i‚±‚Ìê‡A‘Ήž‚·‚éselectŽ®‚©‚ç’l‚ªŽæ‚ç‚ê‚Ü‚·jA - ƒvƒƒpƒeƒBƒŠƒXƒg‚©‚眊O‚·‚é‚© - i‚±‚Ìê‡Aorg.hibernate.type.VersionType ‚Å’è‹`‚³‚ꂽ - ƒV[ƒh’l ‚ªŽg‚í‚ê‚Ü‚·j‚Ì‚¢‚¸‚ê‚©‚Å‚·B + version ã‚„ timestamp ã¨ã—ã¦ãƒžãƒƒãƒ”ングã•ã‚Œã‚‹ãƒ—ロパティã«å¯¾ã—ã¦ã€ + insertæ–‡ã«ã¯äºŒã¤ã®é¸æŠžè‚¢ãŒã‚ã‚Šã¾ã™ã€‚ + プロパティリストã§æ˜Žç¤ºçš„ã«ãƒ—ロパティを指定ã™ã‚‹ã‹ + (ã“ã®å ´åˆã€å¯¾å¿œã™ã‚‹selectå¼ã‹ã‚‰å€¤ãŒå–られã¾ã™ï¼‰ã€ + プロパティリストã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ + (ã“ã®å ´åˆã€org.hibernate.type.VersionType ã§å®šç¾©ã•ã‚ŒãŸ + シード値 ãŒä½¿ã‚ã‚Œã¾ã™ï¼‰ã®ã„ãšã‚Œã‹ã§ã™ã€‚ - HQL‚Ì INSERT •¶‚ÌŽÀs—á‚Å‚·F + HQLã® INSERT æ–‡ã®å®Ÿè¡Œä¾‹ã§ã™ï¼š diff --git a/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml b/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml index f957a8bf38..efc55e8769 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml @@ -1,246 +1,248 @@ - + + + - ƒxƒXƒgƒvƒ‰ƒNƒeƒBƒX + ベストプラクティス - ƒNƒ‰ƒX‚Íׂ©‚¢—±“x‚Å‘‚« <component> ‚Ń}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B + クラスã¯ç´°ã‹ã„粒度ã§æ›¸ã <component> ã§ãƒžãƒƒãƒ”ングã—ã¾ã—ょã†ã€‚ - streeti’Ê‚èj, suburb - i“sŽsj, stateiBj, postcode - i—X•Ö”Ô†j‚ðƒJƒvƒZƒ‹‰»‚·‚é AddressiZŠjƒNƒ‰ƒX‚ðŽg‚¢‚Ü‚µ‚傤B - ‚»‚¤‚·‚ê‚΃R[ƒh‚ªÄ—˜—p‚µ‚â‚·‚­‚È‚èAƒŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‚àŠÈ’P‚É‚È‚è‚Ü‚·B + street(通り), suburb + (都市), state(州), postcode + (郵便番å·ï¼‰ã‚’カプセル化ã™ã‚‹ Address(ä½æ‰€ï¼‰ã‚¯ãƒ©ã‚¹ã‚’使ã„ã¾ã—ょã†ã€‚ + ãã†ã™ã‚Œã°ã‚³ãƒ¼ãƒ‰ãŒå†åˆ©ç”¨ã—ã‚„ã™ããªã‚Šã€ãƒªãƒ•ã‚¡ã‚¯ã‚¿ãƒªãƒ³ã‚°ã‚‚ç°¡å˜ã«ãªã‚Šã¾ã™ã€‚ - ‰i‘±ƒNƒ‰ƒX‚É‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚µ‚傤B + 永続クラスã«ã¯è­˜åˆ¥å­ãƒ—ロパティを定義ã—ã¾ã—ょã†ã€‚ - Hibernate‚Å‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚̓IƒvƒVƒ‡ƒ“‚Å‚·‚ªA - Žg—p‚·‚ׂ«——R‚ª‚½‚­‚³‚ñ‚ ‚è‚Ü‚·B - Ž¯•ÊŽq‚ÍulH“Ivi¶¬‚³‚ꂽA‹Æ–±“I‚ȈӖ¡‚ðŽ‚½‚È‚¢j - ‚È‚à‚Ì‚É‚·‚邱‚Æ‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B + Hibernateã§ã¯è­˜åˆ¥å­ãƒ—ロパティã¯ã‚ªãƒ—ションã§ã™ãŒã€ + 使用ã™ã¹ãç†ç”±ãŒãŸãã•ã‚“ã‚ã‚Šã¾ã™ã€‚ + 識別å­ã¯ã€Œäººå·¥çš„ã€ï¼ˆç”Ÿæˆã•ã‚ŒãŸã€æ¥­å‹™çš„ãªæ„味をæŒãŸãªã„) + ãªã‚‚ã®ã«ã™ã‚‹ã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚ - Ž©‘RƒL[‚ðŒ©‚Â‚¯‚Ü‚µ‚傤B + 自然キーを見ã¤ã‘ã¾ã—ょã†ã€‚ - ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚ÄŽ©‘RƒL[‚ðŒ©‚Â‚¯‚ÄA - <natural-id> ‚Ń}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B - Ž©‘RƒL[‚ð\¬‚·‚éƒvƒƒpƒeƒB‚ð”äŠr‚·‚邽‚ß‚ÉA - equals() ‚Æ hashCode() ‚ðŽÀ‘•‚µ‚Ü‚µ‚傤B + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—ã¦è‡ªç„¶ã‚­ãƒ¼ã‚’見ã¤ã‘ã¦ã€ + <natural-id> ã§ãƒžãƒƒãƒ”ングã—ã¾ã—ょã†ã€‚ + 自然キーを構æˆã™ã‚‹ãƒ—ロパティを比較ã™ã‚‹ãŸã‚ã«ã€ + equals() 㨠hashCode() を実装ã—ã¾ã—ょã†ã€‚ - ƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚Í‚»‚ꂼ‚ê‚̃Nƒ‰ƒXê—p‚̃tƒ@ƒCƒ‹‚É‘‚«‚Ü‚µ‚傤B + クラスã®ãƒžãƒƒãƒ”ングã¯ãã‚Œãžã‚Œã®ã‚¯ãƒ©ã‚¹å°‚用ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãã¾ã—ょã†ã€‚ - ’Pˆê‚Ì‹‘å‚ȃ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ðŽg—p‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B - com.eg.Foo ƒNƒ‰ƒX‚È‚ç - com/eg/Foo.hbm.xml ƒtƒ@ƒCƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B - ‚±‚Ì‚±‚Æ‚ÍA“Á‚Ƀ`[ƒ€‚Å‚ÌŠJ”­‚ɈӖ¡‚ª‚ ‚è‚Ü‚·B + å˜ä¸€ã®å·¨å¤§ãªãƒžãƒƒãƒ”ングドキュメントを使用ã—ãªã„ã§ãã ã•ã„。 + com.eg.Foo クラスãªã‚‰ + com/eg/Foo.hbm.xml ファイルã«ãƒžãƒƒãƒ”ングã—ã¾ã—ょã†ã€‚ + ã“ã®ã“ã¨ã¯ã€ç‰¹ã«ãƒãƒ¼ãƒ ã§ã®é–‹ç™ºã«æ„味ãŒã‚ã‚Šã¾ã™ã€‚ - ƒŠƒ\[ƒX‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚ðƒ[ƒh‚µ‚Ü‚µ‚傤B + リソースã¨ã—ã¦ãƒžãƒƒãƒ”ングをロードã—ã¾ã—ょã†ã€‚ - ƒ}ƒbƒsƒ“ƒO‚ðA‚»‚ê‚炪ƒ}ƒbƒsƒ“ƒO‚·‚é‚·‚éƒNƒ‰ƒX‚ƈê‚É”z’u‚µ‚Ü‚µ‚傤B + マッピングをã€ãれらãŒãƒžãƒƒãƒ”ングã™ã‚‹ã™ã‚‹ã‚¯ãƒ©ã‚¹ã¨ä¸€ç·’ã«é…ç½®ã—ã¾ã—ょã†ã€‚ - ƒNƒGƒŠ•¶Žš—ñ‚ðŠO•”‚É’u‚­‚±‚Æ‚ðl‚¦‚Ü‚µ‚傤 + クエリ文字列を外部ã«ç½®ãã“ã¨ã‚’考ãˆã¾ã—ょㆠ- ƒNƒGƒŠ‚ªANSI•W€‚Å‚È‚¢SQLŠÖ”‚ðŒÄ‚ñ‚Å‚¢‚é‚È‚çA‚±‚ê‚Í‚æ‚¢ƒvƒ‰ƒNƒeƒBƒX‚Å‚·B - ƒNƒGƒŠ•¶Žš—ñ‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÖŠOo‚µ‚·‚ê‚΃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒ|[ƒ^ƒuƒ‹‚É‚È‚è‚Ü‚·B + クエリãŒANSI標準ã§ãªã„SQL関数を呼んã§ã„ã‚‹ãªã‚‰ã€ã“ã‚Œã¯ã‚ˆã„プラクティスã§ã™ã€‚ + クエリ文字列をマッピングファイルã¸å¤–出ã—ã™ã‚Œã°ã‚¢ãƒ—リケーションãŒãƒãƒ¼ã‚¿ãƒ–ルã«ãªã‚Šã¾ã™ã€‚ - ƒoƒCƒ“ƒh•Ï”‚ðŽg‚¢‚Ü‚µ‚傤B + ãƒã‚¤ãƒ³ãƒ‰å¤‰æ•°ã‚’使ã„ã¾ã—ょã†ã€‚ - JDBC‚ÌꇂƓ¯‚¶‚悤‚ÉA’蔂łȂ¢’l‚Í•K‚¸"?"‚Å’u‚«Š·‚¦‚Ü‚µ‚傤B - ’蔂łȂ¢’l‚ðƒoƒCƒ“ƒh‚·‚邽‚ß‚ÉAƒNƒGƒŠ‚Å•¶Žš—ñ‘€ì‚ðŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB - –¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚ðŽg‚¤‚悤‚É‚·‚é‚Æ‚³‚ç‚É—Ç‚¢‚Å‚·B + JDBCã®å ´åˆã¨åŒã˜ã‚ˆã†ã«ã€å®šæ•°ã§ãªã„値ã¯å¿…ãš"?"ã§ç½®ãæ›ãˆã¾ã—ょã†ã€‚ + 定数ã§ãªã„値をãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ãŸã‚ã«ã€ã‚¯ã‚¨ãƒªã§æ–‡å­—列æ“作を使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 + åå‰ä»˜ãã®ãƒ‘ラメータを使ã†ã‚ˆã†ã«ã™ã‚‹ã¨ã•ã‚‰ã«è‰¯ã„ã§ã™ã€‚ - JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠÇ—‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’管ç†ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 - Hibernate‚ł̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠÇ—‚·‚邱‚Æ‚ª‹–‚³‚ê‚Ä‚¢‚Ü‚·B - ‚µ‚©‚µ‚±‚ê‚ÍÅIŽè’i‚¾‚ÆŽv‚Á‚Ä‚­‚¾‚³‚¢B - ‘g‚Ýž‚݂̃RƒlƒNƒVƒ‡ƒ“ƒvƒƒoƒCƒ_‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚È‚¯‚ê‚ÎA - org.hibernate.connection.ConnectionProvider ‚ðŽÀ‘•‚·‚邱‚Æ‚ðl‚¦‚Ä‚­‚¾‚³‚¢B + Hibernateã§ã¯ã‚¢ãƒ—リケーションãŒJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’管ç†ã™ã‚‹ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã™ã€‚ + ã—ã‹ã—ã“ã‚Œã¯æœ€çµ‚手段ã ã¨æ€ã£ã¦ãã ã•ã„。 + 組ã¿è¾¼ã¿ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ロãƒã‚¤ãƒ€ã‚’使ã†ã“ã¨ãŒã§ããªã‘ã‚Œã°ã€ + org.hibernate.connection.ConnectionProvider を実装ã™ã‚‹ã“ã¨ã‚’考ãˆã¦ãã ã•ã„。 - ƒJƒXƒ^ƒ€Œ^‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B + カスタム型ã®ä½¿ç”¨ã‚’考ãˆã¾ã—ょã†ã€‚ - ‚ ‚郉ƒCƒuƒ‰ƒŠ‚©‚玂Á‚Ä‚«‚½JavaŒ^‚ð‰i‘±‰»‚·‚é•K—v‚ª‚ ‚é‚Æ‚µ‚Ü‚µ‚傤B - ‚µ‚©‚µ‚»‚ÌŒ^‚É‚ÍAƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚·‚邽‚ß‚É•K—v‚ȃAƒNƒZƒT‚ª‚È‚¢‚Æ‚µ‚Ü‚·B - ‚±‚̂悤‚Èê‡‚Í org.hibernate.UserType ‚ÌŽÀ‘•‚ðl‚¦‚é‚ׂ«‚Å‚·B - ‚»‚¤‚·‚ê‚ÎHibernateŒ^‚Æ‚ÌŽÀ‘••ÏŠ·‚ðS”z‚¹‚¸‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚ðˆµ‚¦‚Ü‚·B + ã‚るライブラリã‹ã‚‰æŒã£ã¦ããŸJava型を永続化ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã—ã¾ã—ょã†ã€‚ + ã—ã‹ã—ãã®åž‹ã«ã¯ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã—ã¦ãƒžãƒƒãƒ”ングã™ã‚‹ãŸã‚ã«å¿…è¦ãªã‚¢ã‚¯ã‚»ã‚µãŒãªã„ã¨ã—ã¾ã™ã€‚ + ã“ã®ã‚ˆã†ãªå ´åˆã¯ org.hibernate.UserType ã®å®Ÿè£…を考ãˆã‚‹ã¹ãã§ã™ã€‚ + ãã†ã™ã‚Œã°Hibernateåž‹ã¨ã®å®Ÿè£…変æ›ã‚’心é…ã›ãšã«ã‚¢ãƒ—リケーションã®ã‚³ãƒ¼ãƒ‰ã‚’扱ãˆã¾ã™ã€‚ - ƒ{ƒgƒ‹ƒlƒbƒN‚ð‰ðÁ‚·‚é‚É‚ÍJDBC‚ðƒnƒ“ƒhƒR[ƒh‚µ‚Ü‚µ‚傤B + ボトルãƒãƒƒã‚¯ã‚’解消ã™ã‚‹ã«ã¯JDBCã‚’ãƒãƒ³ãƒ‰ã‚³ãƒ¼ãƒ‰ã—ã¾ã—ょã†ã€‚ - ƒVƒXƒeƒ€‚̃pƒtƒH[ƒ}ƒ“ƒXƒNƒŠƒeƒBƒJƒ‹‚ȗ̈æ‚Å‚ÍA - ‚ ‚éŽí‚Ì‘€ì‚ÉJDBC‚ð’¼ÚŽg‚¤‚Æ—Ç‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚µ‚©‚µ‰½‚ªƒ{ƒgƒ‹ƒlƒbƒN‚É‚È‚Á‚Ä‚¢‚é‚© ‚Í‚Á‚«‚è‚·‚é ‚Ü‚Å‚Í‘Ò‚Á‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½JDBC‚ð’¼ÚŽg‚¤‚©‚ç‚Æ‚¢‚Á‚ÄA•K‚¸‚µ‚à‘¬‚­‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚±‚Æ‚à—‰ð‚µ‚Ä‚­‚¾‚³‚¢B - JDBC‚ð’¼ÚŽg‚¤•K—v‚ª‚ ‚ê‚ÎAHibernate‚Ì Session ‚ðƒI[ƒvƒ“‚µ‚ÄA - JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg‚¤‚Æ—Ç‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ˆË‘R‚Æ‚µ‚Ä“¯‚¶ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“í—ª‚ƃRƒlƒNƒVƒ‡ƒ“ƒvƒƒoƒCƒ_‚ªŽg‚¦‚é‚©‚ç‚Å‚·B + システムã®ãƒ‘フォーマンスクリティカルãªé ˜åŸŸã§ã¯ã€ + ã‚る種ã®æ“作ã«JDBCを直接使ã†ã¨è‰¯ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã—ã‹ã—何ãŒãƒœãƒˆãƒ«ãƒãƒƒã‚¯ã«ãªã£ã¦ã„ã‚‹ã‹ ã¯ã£ãã‚Šã™ã‚‹ ã¾ã§ã¯å¾…ã£ã¦ãã ã•ã„。 + ã¾ãŸJDBCを直接使ã†ã‹ã‚‰ã¨ã„ã£ã¦ã€å¿…ãšã—も速ããªã‚‹ã¨ã¯é™ã‚‰ãªã„ã“ã¨ã‚‚ç†è§£ã—ã¦ãã ã•ã„。 + JDBCを直接使ã†å¿…è¦ãŒã‚ã‚Œã°ã€Hibernateã® Session をオープンã—ã¦ã€ + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã†ã¨è‰¯ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ä¾ç„¶ã¨ã—ã¦åŒã˜ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³æˆ¦ç•¥ã¨ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ロãƒã‚¤ãƒ€ãŒä½¿ãˆã‚‹ã‹ã‚‰ã§ã™ã€‚ - Session ‚̃tƒ‰ƒbƒVƒ…‚ð—‰ð‚µ‚Ü‚µ‚傤B + Session ã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã‚’ç†è§£ã—ã¾ã—ょã†ã€‚ - Session‚ª‰i‘±ó‘Ô‚ðƒf[ƒ^ƒx[ƒX‚Æ“¯Šú‚³‚¹‚邱‚Æ‚ª‚Æ‚«‚Ç‚«‚ ‚è‚Ü‚·B - ‚µ‚©‚µ‚±‚ꂪ‚ ‚Ü‚è‚É•p”É‚É‹N‚±‚é‚悤‚¾‚ÆAƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ªo‚Ä‚«‚Ü‚·B - Ž©“®ƒtƒ‰ƒbƒVƒ…‚𖳌ø‚É‚µ‚½‚èA“Á’è‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃NƒGƒŠ‚â‘€ì‚̇”Ô‚ð•ÏX‚·‚邱‚Æ‚ÅA - •s•K—v‚ȃtƒ‰ƒbƒVƒ…‚ðŬŒÀ‚É‚Å‚«‚Ü‚·B + SessionãŒæ°¸ç¶šçŠ¶æ…‹ã‚’データベースã¨åŒæœŸã•ã›ã‚‹ã“ã¨ãŒã¨ãã©ãã‚ã‚Šã¾ã™ã€‚ + ã—ã‹ã—ã“ã‚ŒãŒã‚ã¾ã‚Šã«é »ç¹ã«èµ·ã“るよã†ã ã¨ã€ãƒ‘フォーマンスã«å½±éŸ¿ãŒå‡ºã¦ãã¾ã™ã€‚ + 自動フラッシュを無効ã«ã—ãŸã‚Šã€ç‰¹å®šã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¯ã‚¨ãƒªã‚„æ“作ã®é †ç•ªã‚’変更ã™ã‚‹ã“ã¨ã§ã€ + ä¸å¿…è¦ãªãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã‚’最å°é™ã«ã§ãã¾ã™ã€‚ - 3‘wƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B + 3層アーキテクãƒãƒ£ã§ã¯åˆ†é›¢ã‚ªãƒ–ジェクトã®ä½¿ç”¨ã‚’考ãˆã¾ã—ょã†ã€‚ - ƒT[ƒuƒŒƒbƒg / ƒZƒbƒVƒ‡ƒ“ƒr[ƒ“ƒA[ƒLƒeƒNƒ`ƒƒ‚ðŽg‚¤‚Æ‚«A - ƒT[ƒuƒŒƒbƒg‘w / JSP‘wŠÔ‚ŃZƒbƒVƒ‡ƒ“ƒr[ƒ“‚Ń[ƒh‚µ‚½‰i‘±ƒIƒuƒWƒFƒNƒg‚ð‚â‚èŽæ‚è‚Å‚«‚Ü‚·B - ‚»‚ÌÛƒŠƒNƒGƒXƒg‚²‚Æ‚ÉV‚µ‚¢Session‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½ Session.merge() ‚â Session.saveOrUpdate() - ‚ðŽg‚Á‚ÄAƒIƒuƒWƒFƒNƒg‚ƃf[ƒ^ƒx[ƒX‚𓯊ú‚³‚¹‚Ä‚­‚¾‚³‚¢B + サーブレット / セッションビーンアーキテクãƒãƒ£ã‚’使ã†ã¨ã〠+ サーブレット層 / JSP層間ã§ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ“ーンã§ãƒ­ãƒ¼ãƒ‰ã—ãŸæ°¸ç¶šã‚ªãƒ–ジェクトをやりå–ã‚Šã§ãã¾ã™ã€‚ + ãã®éš›ãƒªã‚¯ã‚¨ã‚¹ãƒˆã”ã¨ã«æ–°ã—ã„Sessionを使ã£ã¦ãã ã•ã„。 + ã¾ãŸ Session.merge() ã‚„ Session.saveOrUpdate() + を使ã£ã¦ã€ã‚ªãƒ–ジェクトã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæœŸã•ã›ã¦ãã ã•ã„。 - 2‘wƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚Í’·‚¢‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B + 2層アーキテクãƒãƒ£ã§ã¯é•·ã„永続コンテキストã®ä½¿ç”¨ã‚’考ãˆã¾ã—ょã†ã€‚ - Å‚‚̃XƒP[ƒ‰ƒrƒŠƒeƒB‚𓾂é‚É‚ÍA - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‚Å‚«‚邾‚¯’Z‚­‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚µ‚©‚µ’·‚¢ŠÔŽÀs‚·‚é ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ - ‚ÌŽÀ‘•‚ª•K—v‚È‚±‚Æ‚Í‚µ‚΂µ‚΂ł·B - ‚±‚ê‚̓†[ƒU‚ÌŽ‹“_‚©‚ç‚Í1ŒÂ‚Ìì‹Æ’PˆÊiunit of workj‚É‚È‚è‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Í‚¢‚­‚‚©‚̃Nƒ‰ƒCƒAƒ“ƒg‚̃ŠƒNƒGƒXƒg/ƒŒƒXƒ|ƒ“ƒXƒTƒCƒNƒ‹‚É‚Ü‚½‚ª‚è‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽÀ‘•‚É•ª—£ƒIƒuƒWƒFƒNƒg‚ðŽg‚¤‚͈̂ê”Ê“I‚Å‚·B + 最高ã®ã‚¹ã‚±ãƒ¼ãƒ©ãƒ“リティを得るã«ã¯ã€ + データベーストランザクションをã§ãã‚‹ã ã‘短ãã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã—ã‹ã—é•·ã„間実行ã™ã‚‹ アプリケーショントランザクション + ã®å®Ÿè£…ãŒå¿…è¦ãªã“ã¨ã¯ã—ã°ã—ã°ã§ã™ã€‚ + ã“ã‚Œã¯ãƒ¦ãƒ¼ã‚¶ã®è¦–点ã‹ã‚‰ã¯1個ã®ä½œæ¥­å˜ä½ï¼ˆunit of work)ã«ãªã‚Šã¾ã™ã€‚ + アプリケーショントランザクションã¯ã„ãã¤ã‹ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆ/レスãƒãƒ³ã‚¹ã‚µã‚¤ã‚¯ãƒ«ã«ã¾ãŸãŒã‚Šã¾ã™ã€‚ + アプリケーショントランザクションã®å®Ÿè£…ã«åˆ†é›¢ã‚ªãƒ–ジェクトを使ã†ã®ã¯ä¸€èˆ¬çš„ã§ã™ã€‚ - ‚»‚¤‚Å‚È‚¯‚ê‚ÎA2‘wƒA[ƒLƒeƒNƒ`ƒƒ‚Ìꇂ͓Á‚É“KØ‚È‚±‚Æ‚Å‚·‚ªA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃‰ƒCƒtƒTƒCƒNƒ‹‘S‘̂ɑ΂µ‚Ä - ’Pˆê‚̃I[ƒvƒ“‚ȉi‘±‰»ƒRƒ“ƒeƒLƒXƒgiƒZƒbƒVƒ‡ƒ“j‚ðˆÛŽ‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚µ‚Ä’Pƒ‚ɃŠƒNƒGƒXƒg‚ÌÅŒã‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚©‚çØ’f‚µA - ŽŸ‚̃ŠƒNƒGƒXƒg‚Ìʼn‚ÉÄÚ‘±‚µ‚Ü‚·B + ãã†ã§ãªã‘ã‚Œã°ã€2層アーキテクãƒãƒ£ã®å ´åˆã¯ç‰¹ã«é©åˆ‡ãªã“ã¨ã§ã™ãŒã€ + アプリケーショントランザクションã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«å…¨ä½“ã«å¯¾ã—㦠+ å˜ä¸€ã®ã‚ªãƒ¼ãƒ—ンãªæ°¸ç¶šåŒ–コンテキスト(セッション)を維æŒã—ã¦ãã ã•ã„。 + ãã—ã¦å˜ç´”ã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®æœ€å¾Œã«JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰åˆ‡æ–­ã—〠+ 次ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®æœ€åˆã«å†æŽ¥ç¶šã—ã¾ã™ã€‚ - Œˆ‚µ‚Ä•¡”‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ†[ƒXƒP[ƒX‚É“n‚Á‚Ä - 1ŒÂ‚ÌSession‚ðŽg‚¢‰ñ‚³‚È‚¢‚Å‚­‚¾‚³‚¢B - ‚»‚¤‚Å‚È‚¯‚ê‚ÎAŒÃ‚¢ƒf[ƒ^‚Åì‹Æ‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B + 決ã—ã¦è¤‡æ•°ã®ã‚¢ãƒ—リケーショントランザクションユースケースã«æ¸¡ã£ã¦ + 1個ã®Sessionを使ã„回ã•ãªã„ã§ãã ã•ã„。 + ãã†ã§ãªã‘ã‚Œã°ã€å¤ã„データã§ä½œæ¥­ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - —áŠO‚𕜋A‰Â”\‚È‚à‚Ì‚Æ‚µ‚Ĉµ‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB + 例外を復帰å¯èƒ½ãªã‚‚ã®ã¨ã—ã¦æ‰±ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 - ‚±‚ê‚ÍuƒxƒXƒgvƒvƒ‰ƒNƒeƒBƒXˆÈã‚ÌA•K{‚̃vƒ‰ƒNƒeƒBƒX‚Å‚·B - —áŠO‚ª”­¶‚µ‚½‚Æ‚«‚Í Transaction ‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚ÄA - Session ‚ðƒNƒ[ƒY‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚¤‚µ‚È‚¢‚ÆHibernate‚̓ƒ‚ƒŠ‚Ìó‘Ô‚ª‰i‘±ó‘Ô‚ð³Šm‚É•\Œ»‚µ‚Ä‚¢‚邱‚Æ‚ð•ÛØ‚Å‚«‚Ü‚¹‚ñB - ‚±‚Ì“Á•Ê‚ÈꇂƂµ‚ÄA—^‚¦‚ç‚ꂽŽ¯•ÊŽq‚ðŽ‚ƒCƒ“ƒXƒ^ƒ“ƒX‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚©‚Ç‚¤‚©‚ð”»’è‚·‚邽‚ß‚ÉA - Session.load() ‚ðŽg‚¤‚±‚Æ‚Í‚â‚ß‚Ä‚­‚¾‚³‚¢B - ‚»‚Ì‘ã‚í‚è‚É Session.get() ‚©ƒNƒGƒŠ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B + ã“ã‚Œã¯ã€Œãƒ™ã‚¹ãƒˆã€ãƒ—ラクティス以上ã®ã€å¿…é ˆã®ãƒ—ラクティスã§ã™ã€‚ + 例外ãŒç™ºç”Ÿã—ãŸã¨ã㯠Transaction をロールãƒãƒƒã‚¯ã—ã¦ã€ + Session をクローズã—ã¦ãã ã•ã„。 + ãã†ã—ãªã„ã¨Hibernateã¯ãƒ¡ãƒ¢ãƒªã®çŠ¶æ…‹ãŒæ°¸ç¶šçŠ¶æ…‹ã‚’正確ã«è¡¨ç¾ã—ã¦ã„ã‚‹ã“ã¨ã‚’ä¿è¨¼ã§ãã¾ã›ã‚“。 + ã“ã®ç‰¹åˆ¥ãªå ´åˆã¨ã—ã¦ã€ä¸Žãˆã‚‰ã‚ŒãŸè­˜åˆ¥å­ã‚’æŒã¤ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å­˜åœ¨ã™ã‚‹ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãŸã‚ã«ã€ + Session.load() を使ã†ã“ã¨ã¯ã‚„ã‚ã¦ãã ã•ã„。 + ãã®ä»£ã‚ã‚Šã« Session.get() ã‹ã‚¯ã‚¨ãƒªã‚’使ã£ã¦ãã ã•ã„。 - ŠÖ˜A‚É‚Í‚È‚é‚ׂ­’x‰„ƒtƒFƒbƒ`‚ðŽg‚¢‚Ü‚µ‚傤B + 関連ã«ã¯ãªã‚‹ã¹ãé…延フェッãƒã‚’使ã„ã¾ã—ょã†ã€‚ - ‘¦ŽžƒtƒFƒbƒ`‚ÍT‚¦‚ß‚É‚µ‚Ü‚µ‚傤B - “ñŽŸƒLƒƒƒbƒVƒ…‚É‚ÍŠ®‘S‚É•ÛŽ‚³‚ê‚È‚¢‚悤‚ȃNƒ‰ƒX‚ÌŠÖ˜A‚É‚ÍA - ƒvƒƒLƒV‚Æ’x‰„ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - ƒLƒƒƒbƒVƒ…‚³‚ê‚éƒNƒ‰ƒX‚ÌŠÖ˜AA‚‚܂èƒLƒƒƒbƒVƒ…‚ªƒqƒbƒg‚·‚é‰Â”\«‚ª”ñí‚É‚‚¢ŠÖ˜A‚ÍA - lazy="false" ‚ÅÏ‹É“I‚ȃtƒFƒbƒ`‚𖾎¦“I‚É–³Œø‚É‚µ‚Ä‚­‚¾‚³‚¢B - Œ‹‡ƒtƒFƒbƒ`‚ª“KØ‚È“Á’è‚̃†[ƒXƒP[ƒX‚É‚ÍA - ƒNƒGƒŠ‚Å left join fetch ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B + å³æ™‚フェッãƒã¯æŽ§ãˆã‚ã«ã—ã¾ã—ょã†ã€‚ + 二次キャッシュã«ã¯å®Œå…¨ã«ä¿æŒã•ã‚Œãªã„よã†ãªã‚¯ãƒ©ã‚¹ã®é–¢é€£ã«ã¯ã€ + プロキシã¨é…延コレクションを使ã£ã¦ãã ã•ã„。 + キャッシュã•ã‚Œã‚‹ã‚¯ãƒ©ã‚¹ã®é–¢é€£ã€ã¤ã¾ã‚Šã‚­ãƒ£ãƒƒã‚·ãƒ¥ãŒãƒ’ットã™ã‚‹å¯èƒ½æ€§ãŒéžå¸¸ã«é«˜ã„関連ã¯ã€ + lazy="false" ã§ç©æ¥µçš„ãªãƒ•ã‚§ãƒƒãƒã‚’明示的ã«ç„¡åŠ¹ã«ã—ã¦ãã ã•ã„。 + çµåˆãƒ•ã‚§ãƒƒãƒãŒé©åˆ‡ãªç‰¹å®šã®ãƒ¦ãƒ¼ã‚¹ã‚±ãƒ¼ã‚¹ã«ã¯ã€ + クエリ㧠left join fetch を使ã£ã¦ãã ã•ã„。 - ƒtƒFƒbƒ`‚³‚ê‚Ä‚¢‚È‚¢ƒf[ƒ^‚ÉŠÖ‚í‚é–â‘è‚ð”ð‚¯‚é‚½‚ß‚ÉA - ƒrƒ…[‚Ì’†‚ŃI[ƒvƒ“ƒZƒbƒVƒ‡ƒ“‚ðŽg‚¤(open session in view) - ƒpƒ^[ƒ“‚©A“§‚³‚ꂽ ‘g‚Ý—§‚ătƒF[ƒY(assembly phase) ‚ðŽg‚¢‚Ü‚µ‚傤B + フェッãƒã•ã‚Œã¦ã„ãªã„データã«é–¢ã‚ã‚‹å•é¡Œã‚’é¿ã‘ã‚‹ãŸã‚ã«ã€ + ビューã®ä¸­ã§ã‚ªãƒ¼ãƒ—ンセッションを使ã†(open session in view) + パターンã‹ã€çµ±åˆ¶ã•ã‚ŒãŸ 組ã¿ç«‹ã¦ãƒ•ã‚§ãƒ¼ã‚º(assembly phase) を使ã„ã¾ã—ょã†ã€‚ - Hibernate‚Í Data Transfer Objects (DTO)‚ð‘‚­‘Þ‹ü‚Èì‹Æ‚©‚çŠJ”­ŽÒ‚ð‰ð•ú‚µ‚Ü‚·B - “`““I‚ÈEJBƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚ÍDTO‚Í“ñ‚–ړI‚ª‚ ‚è‚Ü‚·F - 1‚–ڂÍAƒGƒ“ƒeƒBƒeƒBƒr[ƒ“‚ªƒVƒŠƒAƒ‰ƒCƒY‚³‚ê‚È‚¢–â‘è‚Ö‚Ì‘Îô‚Å‚·B - 2‚–ڂÍAƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚ɧŒä‚ª–ß‚é‘O‚ÉA - ƒrƒ…[‚ÉŽg‚í‚ê‚é‚·‚ׂẴf[ƒ^‚ªƒtƒFƒbƒ`‚³‚ê‚ÄADTO‚É•œŒ³‚³‚ê‚é‚悤‚È‘g‚Ý—§‚ătƒF[ƒY‚ðˆÃ–Ù“I‚É’è‹`‚µ‚Ü‚·B - Hibernate‚Å‚Í1‚–ڂ̖ړI‚ª•s—v‚É‚È‚è‚Ü‚·B - ‚µ‚©‚µƒrƒ…[‚̃Œƒ“ƒ_ƒŠƒ“ƒOˆ—‚ÌŠÔA‰i‘±ƒRƒ“ƒeƒLƒXƒgiƒZƒbƒVƒ‡ƒ“j‚ðƒI[ƒvƒ“‚É‚µ‚½‚Ü‚Ü‚É‚µ‚È‚¯‚ê‚ÎA - ‘g‚Ý—§‚ătƒF[ƒY‚Í‚Ü‚¾•K—v‚Å‚·i•ª—£ƒIƒuƒWƒFƒNƒg‚Ì’†‚̂ǂ̃f[ƒ^‚ª—˜—p‰Â”\‚©‚ɂ‚¢‚ÄA - ƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚ÆŒµ–§‚ÈŽæ‚茈‚ß‚ð‚µ‚Ä‚¢‚éƒrƒWƒlƒXƒƒ\ƒbƒh‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢jB - ‚±‚ê‚ÍHibernate‘¤‚Ì–â‘è‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ““à‚ňÀ‘S‚Ƀf[ƒ^ƒAƒNƒZƒX‚·‚邽‚ß‚ÌŠî–{“I‚È—vŒ‚Å‚·B + Hibernate㯠Data Transfer Objects (DTO)を書ã退屈ãªä½œæ¥­ã‹ã‚‰é–‹ç™ºè€…を解放ã—ã¾ã™ã€‚ + ä¼çµ±çš„ãªEJBアーキテクãƒãƒ£ã§ã¯DTOã¯äºŒã¤ç›®çš„ãŒã‚ã‚Šã¾ã™ï¼š + 1ã¤ç›®ã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ“ーンãŒã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•ã‚Œãªã„å•é¡Œã¸ã®å¯¾ç­–ã§ã™ã€‚ + 2ã¤ç›®ã¯ã€ãƒ—レゼンテーション層ã«åˆ¶å¾¡ãŒæˆ»ã‚‹å‰ã«ã€ + ビューã«ä½¿ã‚れるã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãŒãƒ•ã‚§ãƒƒãƒã•ã‚Œã¦ã€DTOã«å¾©å…ƒã•ã‚Œã‚‹ã‚ˆã†ãªçµ„ã¿ç«‹ã¦ãƒ•ã‚§ãƒ¼ã‚ºã‚’暗黙的ã«å®šç¾©ã—ã¾ã™ã€‚ + Hibernateã§ã¯1ã¤ç›®ã®ç›®çš„ãŒä¸è¦ã«ãªã‚Šã¾ã™ã€‚ + ã—ã‹ã—ビューã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°å‡¦ç†ã®é–“ã€æ°¸ç¶šã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼ˆã‚»ãƒƒã‚·ãƒ§ãƒ³ï¼‰ã‚’オープンã«ã—ãŸã¾ã¾ã«ã—ãªã‘ã‚Œã°ã€ + 組ã¿ç«‹ã¦ãƒ•ã‚§ãƒ¼ã‚ºã¯ã¾ã å¿…è¦ã§ã™ï¼ˆåˆ†é›¢ã‚ªãƒ–ジェクトã®ä¸­ã®ã©ã®ãƒ‡ãƒ¼ã‚¿ãŒåˆ©ç”¨å¯èƒ½ã‹ã«ã¤ã„ã¦ã€ + プレゼンテーション層ã¨åŽ³å¯†ãªå–り決ã‚ã‚’ã—ã¦ã„るビジãƒã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„)。 + ã“ã‚Œã¯Hibernateå´ã®å•é¡Œã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + トランザクション内ã§å®‰å…¨ã«ãƒ‡ãƒ¼ã‚¿ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®åŸºæœ¬çš„ãªè¦ä»¶ã§ã™ã€‚ - Hibernate‚©‚çƒrƒWƒlƒXƒƒWƒbƒN‚ð’ŠÛ‰»‚·‚邱‚Æ‚ðl‚¦‚Ü‚µ‚傤B + Hibernateã‹ã‚‰ãƒ“ジãƒã‚¹ãƒ­ã‚¸ãƒƒã‚¯ã‚’抽象化ã™ã‚‹ã“ã¨ã‚’考ãˆã¾ã—ょã†ã€‚ - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÅiHibernate‚Ìjƒf[ƒ^ƒAƒNƒZƒXƒR[ƒh‚ð‰B•Á‚µ‚Ü‚µ‚傤B - DAO ‚Æ Thread Local Session ƒpƒ^[ƒ“‚ð‘g‚݇‚킹‚Ü‚µ‚傤B - UserType ‚ÅHibernate‚ÉŠÖ˜A•t‚¯‚é‚ÆA - ƒnƒ“ƒhƒR[ƒh‚µ‚½JDBC‚ʼni‘±‰»‚·‚éƒNƒ‰ƒX‚ðŽ‚‚±‚Æ‚à‚Å‚«‚Ü‚·B - i‚±‚̃AƒhƒoƒCƒX‚Íu\•ª‘å‚«‚ÈvƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚Ä‚Ì‚à‚Ì‚Å‚·B - ƒe[ƒuƒ‹‚ª5ŒÂ‚µ‚©‚È‚¢‚悤‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñBj + インターフェイスã§ï¼ˆHibernateã®ï¼‰ãƒ‡ãƒ¼ã‚¿ã‚¢ã‚¯ã‚»ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’隠蔽ã—ã¾ã—ょã†ã€‚ + DAO 㨠Thread Local Session パターンを組ã¿åˆã‚ã›ã¾ã—ょã†ã€‚ + UserType ã§Hibernateã«é–¢é€£ä»˜ã‘ã‚‹ã¨ã€ + ãƒãƒ³ãƒ‰ã‚³ãƒ¼ãƒ‰ã—ãŸJDBCã§æ°¸ç¶šåŒ–ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’æŒã¤ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + (ã“ã®ã‚¢ãƒ‰ãƒã‚¤ã‚¹ã¯ã€Œå分大ããªã€ã‚¢ãƒ—リケーションã«å¯¾ã—ã¦ã®ã‚‚ã®ã§ã™ã€‚ + テーブルãŒ5個ã—ã‹ãªã„よã†ãªã‚¢ãƒ—リケーションã«ã¯å½“ã¦ã¯ã¾ã‚Šã¾ã›ã‚“。) - ’¿‚µ‚¢ŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚ÍŽg‚í‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤B + çã—ã„関連マッピングã¯ä½¿ã‚ãªã„よã†ã«ã—ã¾ã—ょã†ã€‚ - ‚æ‚¢ƒ†[ƒXƒP[ƒX‚É–{“–‚Ì‘½‘Α½ŠÖ˜A‚ª‚ ‚邱‚Æ‚Í‹Hi‚Ü‚êj‚Å‚·B - ‚Ù‚Æ‚ñ‚Ç‚Ìê‡uƒŠƒ“ƒNƒe[ƒuƒ‹v‚Ì•t‰Á“I‚Èî•ñ‚ª•K—v‚É‚È‚è‚Ü‚·B - ‚±‚Ìê‡AƒŠƒ“ƒNƒNƒ‰ƒX‚É2‚‚Ì1‘Α½ŠÖ˜A‚ðŽg‚¤•û‚ª‚¸‚Á‚Æ—Ç‚¢‚Å‚·B - ŽÀÛ‚Ù‚Æ‚ñ‚Ç‚Ìꇊ֘A‚Í1‘Α½‚Æ‘½‘Î1‚È‚Ì‚ÅA - ‘¼‚̃Xƒ^ƒCƒ‹‚ÌŠÖ˜A‚ðŽg‚¤‚Æ‚«‚Í–{“–‚É•K—v‚©‚Ç‚¤‚©‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B + よã„ユースケースã«æœ¬å½“ã®å¤šå¯¾å¤šé–¢é€£ãŒã‚ã‚‹ã“ã¨ã¯ç¨€ï¼ˆã¾ã‚Œï¼‰ã§ã™ã€‚ + ã»ã¨ã‚“ã©ã®å ´åˆã€Œãƒªãƒ³ã‚¯ãƒ†ãƒ¼ãƒ–ルã€ã®ä»˜åŠ çš„ãªæƒ…å ±ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + ã“ã®å ´åˆã€ãƒªãƒ³ã‚¯ã‚¯ãƒ©ã‚¹ã«2ã¤ã®1対多関連を使ã†æ–¹ãŒãšã£ã¨è‰¯ã„ã§ã™ã€‚ + 実際ã»ã¨ã‚“ã©ã®å ´åˆé–¢é€£ã¯1対多ã¨å¤šå¯¾1ãªã®ã§ã€ + ä»–ã®ã‚¹ã‚¿ã‚¤ãƒ«ã®é–¢é€£ã‚’使ã†ã¨ãã¯æœ¬å½“ã«å¿…è¦ã‹ã©ã†ã‹ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„。 - ‚È‚é‚ׂ­‘o•ûŒüŠÖ˜A‚É‚µ‚Ü‚µ‚傤B + ãªã‚‹ã¹ãåŒæ–¹å‘関連ã«ã—ã¾ã—ょã†ã€‚ - ’P•ûŒüŠÖ˜A‚Í‘o•ûŒü‚É”ä‚ׂČŸõ‚ª“‚­‚È‚è‚Ü‚·B - ‘å‚«‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍA - ‚Ù‚Æ‚ñ‚Ç‚·‚ׂĂ̊֘A‚ª‘o•ûŒü‚ɃiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + å˜æ–¹å‘関連ã¯åŒæ–¹å‘ã«æ¯”ã¹ã¦æ¤œç´¢ãŒé›£ã—ããªã‚Šã¾ã™ã€‚ + 大ããªã‚¢ãƒ—リケーションã§ã¯ã€ + ã»ã¨ã‚“ã©ã™ã¹ã¦ã®é–¢é€£ãŒåŒæ–¹å‘ã«ãƒŠãƒ“ゲーションã§ããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 diff --git a/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml b/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml index b770781fe0..8acce2b00a 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml @@ -1,14 +1,16 @@ - + + + - ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO + コレクションã®ãƒžãƒƒãƒ”ング - ƒRƒŒƒNƒVƒ‡ƒ“‚̉i‘±‰» + コレクションã®æ°¸ç¶šåŒ– - ƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃tƒB[ƒ‹ƒh‚ð‰i‘±‰»‚·‚é‚É‚ÍA - ‚»‚̃RƒŒƒNƒVƒ‡ƒ“Œ^‚ªƒCƒ“ƒ^[ƒtƒFƒCƒXŒ^‚Å‚ ‚é•K—v‚ª‚ ‚è‚Ü‚·B - —Ⴆ‚ÎA + コレクション型ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’永続化ã™ã‚‹ã«ã¯ã€ + ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³åž‹ãŒã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹åž‹ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + 例ãˆã°ã€ - ŽÀÝ‚·‚éƒCƒ“ƒ^[ƒtƒFƒCƒX‚É‚Í java.util.SetA - java.util.CollectionAjava.util.ListA - java.util.MapAjava.util.SortedSetA - java.util.SortedMap ‚È‚Ç‚ª‚ ‚è‚Ü‚·B - ‚Ü‚½‚ÍA”CˆÓ‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ªŽg‚¦‚Ü‚·I - i‚½‚¾‚µA”CˆÓ‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg—p‚·‚éꇂÍA + 実在ã™ã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã«ã¯ java.util.Set〠+ java.util.Collectionã€java.util.List〠+ java.util.Mapã€java.util.SortedSet〠+ java.util.SortedMap ãªã©ãŒã‚ã‚Šã¾ã™ã€‚ + ã¾ãŸã¯ã€ä»»æ„ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ãŒä½¿ãˆã¾ã™ï¼ + (ãŸã ã—ã€ä»»æ„ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’使用ã™ã‚‹å ´åˆã¯ã€ org.hibernate.usertype.UserCollectionType - ‚ÌŽÀ‘•ƒNƒ‰ƒX‚ð쬂·‚é•K—v‚ª‚ ‚è‚Ü‚·Bj + ã®å®Ÿè£…クラスを作æˆã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚) - HashSet ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽ‚ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ª - ‚ǂ̂悤‚ɉŠú‰»‚³‚ê‚é‚©‚É’–Ú‚µ‚Ä‚Ý‚Ü‚µ‚傤B - ‚±‚ê‚ÍV‚½‚ɶ¬‚³‚ꂽi‰i‘±‰»‚³‚ê‚Ä‚¢‚È‚¢jƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃vƒƒpƒeƒB‚ð - ‰Šú‰»‚·‚éÅ“K‚È•û–@‚Å‚·B - i—Ⴆ‚Î persist() ‚É‚æ‚èjƒCƒ“ƒXƒ^ƒ“ƒX‚ð‰i‘±‰»‚µ‚悤‚Æ‚µ‚½‚Æ‚«A - Hibernate‚Í HashSet ‚ðHibernate“ÆŽ©‚Ì Set - ‚ÌŽÀ‘•ƒNƒ‰ƒX‚É’u‚«Š·‚¦‚Ü‚·B - ‚±‚Ì‚½‚ßAŽŸ‚̂悤‚ȃGƒ‰[‚É‚Í’ˆÓ‚ª•K—v‚Å‚·B + HashSet ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æŒã¤ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ãŒ + ã©ã®ã‚ˆã†ã«åˆæœŸåŒ–ã•ã‚Œã‚‹ã‹ã«æ³¨ç›®ã—ã¦ã¿ã¾ã—ょã†ã€‚ + ã“ã‚Œã¯æ–°ãŸã«ç”Ÿæˆã•ã‚ŒãŸï¼ˆæ°¸ç¶šåŒ–ã•ã‚Œã¦ã„ãªã„)コレクション型ã®ãƒ—ロパティを + åˆæœŸåŒ–ã™ã‚‹æœ€é©ãªæ–¹æ³•ã§ã™ã€‚ + (例ãˆã° persist() ã«ã‚ˆã‚Šï¼‰ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’永続化ã—よã†ã¨ã—ãŸã¨ã〠+ Hibernate㯠HashSet ã‚’Hibernate独自㮠Set + ã®å®Ÿè£…クラスã«ç½®ãæ›ãˆã¾ã™ã€‚ + ã“ã®ãŸã‚ã€æ¬¡ã®ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ã«ã¯æ³¨æ„ãŒå¿…è¦ã§ã™ã€‚ - Hibernate‚É‚æ‚è’“ü‚³‚ꂽ‰i‘±«ƒRƒŒƒNƒVƒ‡ƒ“‚ÍAƒCƒ“ƒ^[ƒtƒFƒCƒXŒ^‚ɉž‚¶‚ÄA - HashMap ‚â HashSetA - TreeMapA TreeSetA - ArrayList ‚̂悤‚ÉU•‘‚¢‚Ü‚·B + Hibernateã«ã‚ˆã‚Šæ³¨å…¥ã•ã‚ŒãŸæ°¸ç¶šæ€§ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹åž‹ã«å¿œã˜ã¦ã€ + HashMap ã‚„ HashSet〠+ TreeMap〠TreeSet〠+ ArrayList ã®ã‚ˆã†ã«æŒ¯èˆžã„ã¾ã™ã€‚ - ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA’lŒ^‚Æ‚µ‚Ä•’Ê‚ÉU•‘‚¢‚Ü‚·B - ‰i‘±‰»ƒIƒuƒWƒFƒNƒg‚ÉŽQÆ‚³‚ꂽ‚Æ‚«‚ÉŽ©“®“I‚ɉi‘±‰»‚³‚êA - ŽQÆ‚ª‚È‚­‚È‚Á‚½‚Æ‚«‚ÉŽ©“®“I‚É휂³‚ê‚Ü‚·B - ‚à‚µ‚ ‚é‰i‘±‰»ƒIƒuƒWƒFƒNƒg‚©‚ç•Ê‚̉i‘±‰»ƒIƒuƒWƒFƒNƒg‚É“n‚³‚ꂽ‚çA - ‚»‚Ì—v‘f‚ÍŒ»Ý‚̃e[ƒuƒ‹‚©‚ç•Ê‚̃e[ƒuƒ‹‚Ɉړ®‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚Q‚‚̃Gƒ“ƒeƒBƒeƒB‚ª“¯‚¶ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB - ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚ðƒx[ƒX‚É‚µ‚Ä‚¢‚邽‚ßAƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃vƒƒpƒeƒB‚É - null’l‚ð‘ã“ü‚µ‚Ä‚àˆÓ–¡‚ª‚ ‚è‚Ü‚¹‚ñB - ‚‚܂èHibernate‚ÍŽQÆæ‚Ì‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Æ‹ó‚̃RƒŒƒNƒVƒ‡ƒ“‚ð‹æ•Ê‚µ‚Ü‚¹‚ñB + コレクションインスタンスã¯ã€å€¤åž‹ã¨ã—ã¦æ™®é€šã«æŒ¯èˆžã„ã¾ã™ã€‚ + 永続化オブジェクトã«å‚ç…§ã•ã‚ŒãŸã¨ãã«è‡ªå‹•çš„ã«æ°¸ç¶šåŒ–ã•ã‚Œã€ + å‚ç…§ãŒãªããªã£ãŸã¨ãã«è‡ªå‹•çš„ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ + ã‚‚ã—ã‚る永続化オブジェクトã‹ã‚‰åˆ¥ã®æ°¸ç¶šåŒ–オブジェクトã«æ¸¡ã•ã‚ŒãŸã‚‰ã€ + ãã®è¦ç´ ã¯ç¾åœ¨ã®ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰åˆ¥ã®ãƒ†ãƒ¼ãƒ–ルã«ç§»å‹•ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ï¼’ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒåŒã˜ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’共有ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 + リレーショナルモデルをベースã«ã—ã¦ã„ã‚‹ãŸã‚ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³åž‹ã®ãƒ—ロパティ㫠+ null値を代入ã—ã¦ã‚‚æ„味ãŒã‚ã‚Šã¾ã›ã‚“。 + ã¤ã¾ã‚ŠHibernateã¯å‚照先ã®ãªã„コレクションã¨ç©ºã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’区別ã—ã¾ã›ã‚“。 - ‚µ‚©‚µ‚»‚ê‚Ù‚ÇS”z‚µ‚È‚­‚Ä‚à\‚¢‚Ü‚¹‚ñB - •’iŽg‚Á‚Ä‚¢‚éJava‚̃RƒŒƒNƒVƒ‡ƒ“‚Æ“¯‚¶‚悤‚ÉA‰i‘±‰»ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - ‘o•ûŒüŠÖ˜A‚̈Ӗ¡‚ð—‰ð‚·‚ê‚΂悢‚Ì‚Å‚·i‚±‚ê‚ÍŒã‚Ù‚Çà–¾‚µ‚Ü‚·jB + ã—ã‹ã—ãã‚Œã»ã©å¿ƒé…ã—ãªãã¦ã‚‚構ã„ã¾ã›ã‚“。 + 普段使ã£ã¦ã„ã‚‹Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¨åŒã˜ã‚ˆã†ã«ã€æ°¸ç¶šåŒ–コレクションを使ã£ã¦ãã ã•ã„。 + åŒæ–¹å‘関連ã®æ„味をç†è§£ã™ã‚Œã°ã‚ˆã„ã®ã§ã™ï¼ˆã“ã‚Œã¯å¾Œã»ã©èª¬æ˜Žã—ã¾ã™ï¼‰ã€‚ - ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO + コレクションã®ãƒžãƒƒãƒ”ング - ƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ}ƒbƒsƒ“ƒO‚·‚邽‚߂̃}ƒbƒsƒ“ƒO—v‘f‚ÍAƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŒ^‚Ɉˑ¶‚µ‚Ü‚·B - —Ⴆ‚ÎA<set> —v‘f‚Í Set Œ^‚ð - ƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B + コレクションをマッピングã™ã‚‹ãŸã‚ã®ãƒžãƒƒãƒ”ングè¦ç´ ã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®åž‹ã«ä¾å­˜ã—ã¾ã™ã€‚ + 例ãˆã°ã€<set> è¦ç´ ã¯ Set åž‹ã‚’ + マッピングã™ã‚‹ãŸã‚ã«ä½¿ã„ã¾ã™ã€‚ @@ -98,10 +100,10 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set ]]> - ƒ}ƒbƒsƒ“ƒO—v‘f‚É‚Í <set> ‚Ì‘¼‚É <list>A - <map>A<bag>A - <array>A<primitive-array> ‚ª‚ ‚è‚Ü‚·B - ‘ã•\‚Æ‚µ‚ÄA<map> —v‘f‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + マッピングè¦ç´ ã«ã¯ <set> ã®ä»–ã« <list>〠+ <map>ã€<bag>〠+ <array>ã€<primitive-array> ãŒã‚ã‚Šã¾ã™ã€‚ + 代表ã¨ã—ã¦ã€<map> è¦ç´ ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ @@ -147,171 +149,171 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - name ƒRƒŒƒNƒVƒ‡ƒ“Œ^‚Å‚ ‚éƒvƒƒpƒeƒB‚Ì–¼‘O + name コレクション型ã§ã‚るプロパティã®åå‰ - table iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì–¼‘O - iˆê‘Α½ŠÖ˜A‚Å‚ÍŽg—p‚µ‚Ü‚¹‚ñjB + table (オプション - デフォルトã¯ãƒ—ロパティå)コレクションテーブルã®åå‰ + (一対多関連ã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“)。 - schema iƒIƒvƒVƒ‡ƒ“jƒe[ƒuƒ‹ƒXƒL[ƒ}‚Ì–¼‘OB - ƒ‹[ƒg—v‘f‚Å錾‚³‚ê‚Ä‚¢‚éƒXƒL[ƒ}‚æ‚è—D悳‚ê‚Ü‚·B + schema (オプション)テーブルスキーマã®åå‰ã€‚ + ルートè¦ç´ ã§å®£è¨€ã•ã‚Œã¦ã„るスキーマより優先ã•ã‚Œã¾ã™ã€‚ - lazy iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í truej - ’x‰„ƒtƒFƒbƒ`‚𖳌ø‚É‚µAŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚É‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B - ‚Ü‚½‚ÍAuextra-lazyvƒtƒFƒbƒ`‚ð—LŒø‚É‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B - uextra-lazyvƒtƒFƒbƒ`‚ÍA‚Ù‚Æ‚ñ‚Ç‚Ì‘€ì‚ł̓RƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚µ‚Ü‚¹‚ñ - i”ñí‚É‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚É“K‚µ‚Ä‚¢‚Ü‚·jB + lazy (オプション - デフォルト㯠true) + é…延フェッãƒã‚’無効ã«ã—ã€é–¢é€£ã‚’常ã«å³æ™‚ã«ãƒ•ã‚§ãƒƒãƒã«ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ + ã¾ãŸã¯ã€ã€Œextra-lazyã€ãƒ•ã‚§ãƒƒãƒã‚’有効ã«ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ + 「extra-lazyã€ãƒ•ã‚§ãƒƒãƒã¯ã€ã»ã¨ã‚“ã©ã®æ“作ã§ã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’åˆæœŸåŒ–ã—ã¾ã›ã‚“ + (éžå¸¸ã«å¤§ããªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«é©ã—ã¦ã„ã¾ã™ï¼‰ã€‚ - inverse iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í falsej - ‚±‚̃RƒŒƒNƒVƒ‡ƒ“‚ª‘o•ûŒüŠÖ˜A‚Ìu‹tv‘¤‚Å‚ ‚é‚ƃ}[ƒN‚µ‚Ü‚·B + inverse (オプション - デフォルト㯠false) + ã“ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãŒåŒæ–¹å‘関連ã®ã€Œé€†ã€å´ã§ã‚ã‚‹ã¨ãƒžãƒ¼ã‚¯ã—ã¾ã™ã€‚ - cascade iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í nonej - ŽqƒGƒ“ƒeƒBƒeƒB‚ւ̃JƒXƒP[ƒh‘€ì‚ð—LŒø‚É‚µ‚Ü‚·B + cascade (オプション - デフォルト㯠none) + å­ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰æ“作を有効ã«ã—ã¾ã™ã€‚ - sort iƒIƒvƒVƒ‡ƒ“jƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ©‘R‚ȇ˜‚Ń\[ƒg‚·‚éê‡‚Í - natural ‚ðŽw’肵‚Ü‚·B - ‚ ‚é‚¢‚ÍComparatorƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B + sort (オプション)コレクションを自然ãªé †åºã§ã‚½ãƒ¼ãƒˆã™ã‚‹å ´åˆã¯ + natural を指定ã—ã¾ã™ã€‚ + ã‚ã‚‹ã„ã¯Comparatorクラスを指定ã—ã¾ã™ã€‚ - order-by iƒIƒvƒVƒ‡ƒ“AJDK1.4‚Ì‚Ýj - MapASetAbag‚̃CƒeƒŒ[ƒVƒ‡ƒ“‡˜‚ð’è‹`‚·‚é - ƒe[ƒuƒ‹ƒJƒ‰ƒ€‚ðŽw’è‚·‚é‚Æ‹¤‚ÉA - ƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚Ä ascAdesc ‚ðŽw’肵‚Ü‚·B + order-by (オプションã€JDK1.4ã®ã¿ï¼‰ + Mapã€Setã€bagã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³é †åºã‚’定義ã™ã‚‹ + テーブルカラムを指定ã™ã‚‹ã¨å…±ã«ã€ + オプションã¨ã—㦠ascã€desc を指定ã—ã¾ã™ã€‚ - where iƒIƒvƒVƒ‡ƒ“jƒRƒŒƒNƒVƒ‡ƒ“‚ÌŒŸõ‚â휂ÌÛ‚ÉŽg‚¤ - ”CˆÓ‚ÌSQL‚ÌWHERE ðŒ‚ðŽw’肵‚Ü‚· - i—˜—p‰Â”\‚ȃf[ƒ^‚̈ꕔ•ª‚¾‚¯‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ªŠÜ‚ނׂ«‚Æ‚«‚ÉA‚±‚ê‚Í—L—p‚Å‚·jB + where (オプション)コレクションã®æ¤œç´¢ã‚„削除ã®éš›ã«ä½¿ã† + ä»»æ„ã®SQLã®WHERE æ¡ä»¶ã‚’指定ã—ã¾ã™ + (利用å¯èƒ½ãªãƒ‡ãƒ¼ã‚¿ã®ä¸€éƒ¨åˆ†ã ã‘をコレクションãŒå«ã‚€ã¹ãã¨ãã«ã€ã“ã‚Œã¯æœ‰ç”¨ã§ã™ï¼‰ã€‚ - fetchiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í selectj - ŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`A‡ŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchjA - ‡ŽŸƒTƒuƒZƒŒƒNƒgƒtƒFƒbƒ`isequential subselect fetchj‚Ì‚Ç‚ê‚©‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B + fetch(オプション - デフォルト㯠select) + 外部çµåˆã«ã‚ˆã‚‹ãƒ•ã‚§ãƒƒãƒã€é †æ¬¡é¸æŠžãƒ•ã‚§ãƒƒãƒï¼ˆsequential select fetch)〠+ 順次サブセレクトフェッãƒï¼ˆsequential subselect fetch)ã®ã©ã‚Œã‹ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - batch-size iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í 1j - ƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ì’x‰„ƒtƒFƒbƒ`‚Ì‚½‚ß‚Ìuƒoƒbƒ`ƒTƒCƒYv‚ðŽw’肵‚Ü‚·B + batch-size (オプション - デフォルト㯠1) + コレクションã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®é…延フェッãƒã®ãŸã‚ã®ã€Œãƒãƒƒãƒã‚µã‚¤ã‚ºã€ã‚’指定ã—ã¾ã™ã€‚ - access iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í propertyj - ƒRƒŒƒNƒVƒ‡ƒ“Œ^ƒvƒƒpƒeƒB‚Ì’l‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg—p‚·‚éí—ª‚Å‚·B + access (オプション - デフォルト㯠property) + コレクション型プロパティã®å€¤ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹æˆ¦ç•¥ã§ã™ã€‚ - optimistic-lockiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í truej - ƒRƒŒƒNƒVƒ‡ƒ“‚Ìó‘Ô‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚Á‚ÄA - ‚»‚̃I[ƒi[‚Å‚ ‚éƒGƒ“ƒeƒBƒeƒB‚̃o[ƒWƒ‡ƒ“‚ªƒCƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚é‚©‚ðŽw’肵‚Ü‚·B - iˆê‘Α½ŠÖ˜A‚Å‚ÍA‚Ù‚Æ‚ñ‚Ç‚Ìꇂɂ¨‚¢‚Ä–³Œø‚ÉÝ’è‚·‚é‚Ì‚ª‘Ó–‚Å‚·Bj + optimistic-lock(オプション - デフォルト㯠true) + コレクションã®çŠ¶æ…‹ã‚’変ãˆã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€ + ãã®ã‚ªãƒ¼ãƒŠãƒ¼ã§ã‚るエンティティã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã•ã‚Œã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ + (一対多関連ã§ã¯ã€ã»ã¨ã‚“ã©ã®å ´åˆã«ãŠã„ã¦ç„¡åŠ¹ã«è¨­å®šã™ã‚‹ã®ãŒå¦¥å½“ã§ã™ã€‚) - mutableiƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í truej - false ’l‚ÍAƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ª•ÏX‚³‚ê‚È‚¢‚±‚Æ‚ð•\‚µ‚Ü‚· - i‚ ‚éꇂɂÍA­‚µƒpƒtƒH[ƒ}ƒ“ƒX‚ð‚‚ß‚Ü‚·jB + mutable(オプション - デフォルト㯠true) + false 値ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ãŒå¤‰æ›´ã•ã‚Œãªã„ã“ã¨ã‚’表ã—ã¾ã™ + (ã‚ã‚‹å ´åˆã«ã¯ã€å°‘ã—パフォーマンスを高ã‚ã¾ã™ï¼‰ã€‚ - ƒRƒŒƒNƒVƒ‡ƒ“‚ÌŠO•”ƒL[ + コレクションã®å¤–部キー - ƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍAƒf[ƒ^ƒx[ƒX“à‚Å‚ÍA - ‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŠ—L‚·‚éƒGƒ“ƒeƒBƒeƒB‚ÌŠO•”ƒL[‚É‚æ‚Á‚ÄŽ¯•Ê‚³‚ê‚Ü‚·B - ‚±‚ÌŠO•”ƒL[‚̓RƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì ƒRƒŒƒNƒVƒ‡ƒ“ƒL[ƒJƒ‰ƒ€ ‚ƌĂ΂ê‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“ƒL[ƒJƒ‰ƒ€‚Í <key> —v‘f‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B + コレクションã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã§ã¯ã€ + ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’所有ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å¤–部キーã«ã‚ˆã£ã¦è­˜åˆ¥ã•ã‚Œã¾ã™ã€‚ + ã“ã®å¤–部キーã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ†ãƒ¼ãƒ–ル㮠コレクションキーカラム ã¨å‘¼ã°ã‚Œã¾ã™ã€‚ + コレクションキーカラム㯠<key> è¦ç´ ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ - ŠO•”ƒL[ƒJƒ‰ƒ€‚É‚Ínullݒ觖ñ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚Ù‚Æ‚ñ‚ǂ̃RƒŒƒNƒVƒ‡ƒ“‚É“–‚Ä‚Í‚Ü‚é‚Å‚µ‚傤B - ’P•ûŒü‚̈ê‘Α½ŠÖ˜A‚É‚¨‚¢‚ÄAŠO•”ƒL[ƒJƒ‰ƒ€‚̓fƒtƒHƒ‹ƒg‚Ånull‚ð‹–‚·Ý’è‚É‚È‚Á‚Ä‚¢‚Ü‚·B - ‚æ‚Á‚ÄAnot-null="true" ‚ðŽw’è‚·‚é•K—v‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + 外部キーカラムã«ã¯null設定制約ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã»ã¨ã‚“ã©ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«å½“ã¦ã¯ã¾ã‚‹ã§ã—ょã†ã€‚ + å˜æ–¹å‘ã®ä¸€å¯¾å¤šé–¢é€£ã«ãŠã„ã¦ã€å¤–部キーカラムã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§nullを許ã™è¨­å®šã«ãªã£ã¦ã„ã¾ã™ã€‚ + よã£ã¦ã€not-null="true" を指定ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 ]]> - ŠO•”ƒL[‚̧–ñ‚ª ON DELETE CASCADE ‚ðŽg‚¤‚©‚à‚µ‚ê‚Ü‚¹‚ñB + 外部キーã®åˆ¶ç´„㌠ON DELETE CASCADE を使ã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 ]]> - <key> —v‘f‚Ì‚·‚ׂĂ̒è‹`‚ɂ‚¢‚Ä‚Í‘O‚ÌÍ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + <key> è¦ç´ ã®ã™ã¹ã¦ã®å®šç¾©ã«ã¤ã„ã¦ã¯å‰ã®ç« ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f + コレクションã®è¦ç´  - ƒRƒŒƒNƒVƒ‡ƒ“‚Í‘¼‚ÌHibernate‚ÌŒ^‚Ì‚Ù‚Æ‚ñ‚Çi‚·‚ׂĂ̊î–{Œ^AƒJƒXƒ^ƒ€Œ^AƒRƒ“ƒ|[ƒlƒ“ƒgA - ‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆj‚ðŠi”[‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ŽŸ‚Ì“_‚Íd—v‚ȈႢ‚É‚È‚è‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠi”[‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªu’lvƒZƒ}ƒ“ƒeƒBƒNƒX‚Æ‚µ‚Ĉµ‚í‚ê‚é‚Ì‚© - iƒ‰ƒCƒtƒTƒCƒNƒ‹‚̓RƒŒƒNƒVƒ‡ƒ“‚̃I[ƒi[‚ÉŠ®‘S‚Ɉˑ¶‚µ‚Ü‚·jA - ‚à‚µ‚­‚Í‚»‚ꎩg‚̃‰ƒCƒtƒTƒCƒNƒ‹‚ðŽ‚Á‚½•Ê‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚Å‚ ‚é‚©‚Ì‚©‚Æ‚¢‚¤ˆá‚¢‚Å‚·B - ŒãŽÒ‚ÍA2‚‚̃IƒuƒWƒFƒNƒgŠÔ‚ÌuƒŠƒ“ƒNv‚ðƒRƒŒƒNƒVƒ‡ƒ“‚É•ÛŽ‚µ‚Ä‚¢‚é‚ÆŒ©‚È‚µ‚Ä‚¢‚邾‚¯‚Å‚·B + コレクションã¯ä»–ã®Hibernateã®åž‹ã®ã»ã¨ã‚“ã©ï¼ˆã™ã¹ã¦ã®åŸºæœ¬åž‹ã€ã‚«ã‚¹ã‚¿ãƒ åž‹ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ + ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚照)を格ç´ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + 次ã®ç‚¹ã¯é‡è¦ãªé•ã„ã«ãªã‚Šã¾ã™ã€‚ + コレクションã«æ ¼ç´ã•ã‚ŒãŸã‚ªãƒ–ジェクトãŒã€Œå€¤ã€ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã¨ã—ã¦æ‰±ã‚れるã®ã‹ + (ライフサイクルã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«å®Œå…¨ã«ä¾å­˜ã—ã¾ã™ï¼‰ã€ + ã‚‚ã—ãã¯ãれ自身ã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã‚’æŒã£ãŸåˆ¥ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚ç…§ã§ã‚ã‚‹ã‹ã®ã‹ã¨ã„ã†é•ã„ã§ã™ã€‚ + 後者ã¯ã€2ã¤ã®ã‚ªãƒ–ジェクト間ã®ã€Œãƒªãƒ³ã‚¯ã€ã‚’コレクションã«ä¿æŒã—ã¦ã„ã‚‹ã¨è¦‹ãªã—ã¦ã„ã‚‹ã ã‘ã§ã™ã€‚ - Ši”[‚³‚ê‚éŒ^‚Í ƒRƒŒƒNƒVƒ‡ƒ“—v‘fŒ^ ‚ƌĂ΂ê‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“—v‘f‚ÍA<element> ‚Ü‚½‚Í <composite-element> - ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚êAƒGƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚Ìê‡‚É‚Í - <one-to-many> ‚Ü‚½‚Í <many-to-many> - ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B - ʼn‚Ì“ñ‚‚͒l‚Æ‚µ‚Ä—v‘f‚ðƒ}ƒbƒsƒ“ƒO‚µAŽŸ‚Ì“ñ‚‚̓Gƒ“ƒeƒBƒeƒB‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚Ì‚ÉŽg‚í‚ê‚Ü‚·B + æ ¼ç´ã•ã‚Œã‚‹åž‹ã¯ コレクションè¦ç´ åž‹ ã¨å‘¼ã°ã‚Œã¾ã™ã€‚ + コレクションè¦ç´ ã¯ã€<element> ã¾ãŸã¯ <composite-element> + ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã•ã‚Œã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚ç…§ã®å ´åˆã«ã¯ + <one-to-many> ã¾ãŸã¯ <many-to-many> + ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ + 最åˆã®äºŒã¤ã¯å€¤ã¨ã—ã¦è¦ç´ ã‚’マッピングã—ã€æ¬¡ã®äºŒã¤ã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®é–¢é€£ã‚’マッピングã™ã‚‹ã®ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ - ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“ + インデックス付ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ - set‚Æbag‚𜂭‘S‚ẴRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚É‚ÍA - ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì’†‚É ƒCƒ“ƒfƒbƒNƒX—p‚̃Jƒ‰ƒ€ ‚ª•K—v‚Å‚·B - ‚»‚̃Jƒ‰ƒ€‚ÉA”z—ñ‚â List ‚̃Cƒ“ƒfƒbƒNƒXA - ‚à‚µ‚­‚Í Map ‚̃L[‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - Map ‚̃Cƒ“ƒfƒbƒNƒX‚ÍA - <map-key> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽŠî–{Œ^‚©A - <map-key-many-to-many> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚ÌŠÖ˜A‚©A - ‚ ‚é‚¢‚Í <composite-map-key> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒRƒ“ƒ|ƒWƒbƒgŒ^‚É‚È‚è‚Ü‚·B - ”z—ñ‚©ƒŠƒXƒg‚̃Cƒ“ƒfƒbƒNƒX‚ÍAí‚É integer Œ^‚ÅA - <list-index> —v‘f‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ɂ̓V[ƒPƒ“ƒVƒƒƒ‹‚È®”‚ðŠi”[‚µ‚Ü‚·iƒfƒtƒHƒ‹ƒg‚Å‚Í0‚©‚ç”Ô†‚ª•t‚¯‚ç‚ê‚Ü‚·jB + setã¨bagを除ãå…¨ã¦ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒžãƒƒãƒ”ングã«ã¯ã€ + コレクションテーブルã®ä¸­ã« インデックス用ã®ã‚«ãƒ©ãƒ  ãŒå¿…è¦ã§ã™ã€‚ + ãã®ã‚«ãƒ©ãƒ ã«ã€é…列や List ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€ + ã‚‚ã—ã㯠Map ã®ã‚­ãƒ¼ã‚’マッピングã—ã¾ã™ã€‚ + Map ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ã€ + <map-key> ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã•ã‚ŒãŸåŸºæœ¬åž‹ã‹ã€ + <map-key-many-to-many> ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã•ã‚ŒãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®é–¢é€£ã‹ã€ + ã‚ã‚‹ã„㯠<composite-map-key> ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã•ã‚ŒãŸã‚³ãƒ³ãƒã‚¸ãƒƒãƒˆåž‹ã«ãªã‚Šã¾ã™ã€‚ + é…列ã‹ãƒªã‚¹ãƒˆã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ã€å¸¸ã« integer åž‹ã§ã€ + <list-index> è¦ç´ ã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + マッピングã•ã‚ŒãŸã‚«ãƒ©ãƒ ã«ã¯ã‚·ãƒ¼ã‚±ãƒ³ã‚·ãƒ£ãƒ«ãªæ•´æ•°ã‚’æ ¼ç´ã—ã¾ã™ï¼ˆãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯0ã‹ã‚‰ç•ªå·ãŒä»˜ã‘られã¾ã™ï¼‰ã€‚ @@ -325,13 +327,13 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - column_namei•K{j:ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB + column_name(必須):コレクションインデックスã®å€¤ã‚’ä¿æŒã™ã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã€‚ - baseiƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚Í 0j: - ƒŠƒXƒg‚à‚µ‚­‚Í”z—ñ‚Ìʼn‚Ì—v‘f‚ÉŠY“–‚·‚éƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚Ì’lB + base(オプションã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ 0): + リストもã—ãã¯é…列ã®æœ€åˆã®è¦ç´ ã«è©²å½“ã™ã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚«ãƒ©ãƒ ã®å€¤ã€‚ @@ -352,17 +354,17 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - columniƒIƒvƒVƒ‡ƒ“j: ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB + column(オプション): コレクションインデックスã®å€¤ã‚’ä¿æŒã™ã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã€‚ - formulaiƒIƒvƒVƒ‡ƒ“j: Map‚̃L[‚ð•]‰¿‚·‚é‚Ì‚ÉŽg‚í‚ê‚éSQLŽ®B + formula(オプション): Mapã®ã‚­ãƒ¼ã‚’評価ã™ã‚‹ã®ã«ä½¿ã‚れるSQLå¼ã€‚ - typei•K{j: Map‚̃L[‚ÌŒ^B + type(必須): Mapã®ã‚­ãƒ¼ã®åž‹ã€‚ @@ -382,20 +384,20 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - column iƒIƒvƒVƒ‡ƒ“j: - ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚Ì‚½‚ß‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB + column (オプション): + コレクションインデックスã®å€¤ã®ãŸã‚ã®å¤–部キーカラムã®åå‰ã€‚ - formula iƒIƒvƒVƒ‡ƒ“j: - Map‚̃L[‚Ì‚½‚ß‚ÌŠO•”ƒL[‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B + formula (オプション): + Mapã®ã‚­ãƒ¼ã®ãŸã‚ã®å¤–部キーを評価ã™ã‚‹ãŸã‚ã«ä½¿ã†SQLå¼ã€‚ - class i•K{j: - Map‚̃L[‚Æ‚µ‚ÄŽg‚í‚ê‚éƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXB + class (必須): + Mapã®ã‚­ãƒ¼ã¨ã—ã¦ä½¿ã‚れるエンティティクラス。 @@ -403,33 +405,33 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - ‚à‚µƒe[ƒuƒ‹‚ɃCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ª‚È‚­‚Ä‚àAƒvƒƒpƒeƒBŒ^‚Æ‚µ‚Ä List ‚ðŽg‚¢‚½‚¯‚ê‚ÎA - Hibernate‚Ì <bag> ‚Æ‚µ‚ăvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - bag‚̓f[ƒ^ƒx[ƒX‚©‚ç•œŒ³‚³‚ê‚鎞A‡˜‚ð•ÛŽ‚µ‚Ü‚¹‚ñB - ‚µ‚©‚µAiƒƒ‚ƒŠã‚Åjƒ\[ƒg‚µ‚½‚èAiSQL‚Åj‡˜•t‚¯‚µ‚½‚èiorder byj‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + ã‚‚ã—テーブルã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚«ãƒ©ãƒ ãŒãªãã¦ã‚‚ã€ãƒ—ロパティ型ã¨ã—㦠List を使ã„ãŸã‘ã‚Œã°ã€ + Hibernateã® <bag> ã¨ã—ã¦ãƒ—ロパティをマッピングã—ã¾ã™ã€‚ + bagã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰å¾©å…ƒã•ã‚Œã‚‹æ™‚ã€é †åºã‚’ä¿æŒã—ã¾ã›ã‚“。 + ã—ã‹ã—ã€ï¼ˆãƒ¡ãƒ¢ãƒªä¸Šã§ï¼‰ã‚½ãƒ¼ãƒˆã—ãŸã‚Šã€ï¼ˆSQLã§ï¼‰é †åºä»˜ã‘ã—ãŸã‚Šï¼ˆorder by)ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - ‘½‚­‚̈ê”Ê“I‚ȃŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚ðƒJƒo[‚µ‚½‚½‚ß‚ÉA - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚ß‚É—˜—p‚Å‚«‚éƒ}ƒbƒsƒ“ƒO‚É‚Í‚©‚È‚è‚Ì•‚ª‚ ‚è‚Ü‚·B - —lX‚ȃ}ƒbƒsƒ“ƒO錾‚ª‚ǂ̂悤‚Ƀf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚É•ÏŠ·‚³‚ê‚é‚©‚ð’m‚邽‚ß‚ÉA - ƒXƒL[ƒ}¶¬ƒc[ƒ‹‚ðŽg‚Á‚Ä‚Ý‚é‚Æ—Ç‚¢‚Å‚µ‚傤B + 多ãã®ä¸€èˆ¬çš„ãªãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ¢ãƒ‡ãƒ«ã‚’ã‚«ãƒãƒ¼ã—ãŸãŸã‚ã«ã€ + コレクションã®ãŸã‚ã«åˆ©ç”¨ã§ãるマッピングã«ã¯ã‹ãªã‚Šã®å¹…ãŒã‚ã‚Šã¾ã™ã€‚ + 様々ãªãƒžãƒƒãƒ”ング宣言ãŒã©ã®ã‚ˆã†ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã«å¤‰æ›ã•ã‚Œã‚‹ã‹ã‚’知るãŸã‚ã«ã€ + スキーマ生æˆãƒ„ールを使ã£ã¦ã¿ã‚‹ã¨è‰¯ã„ã§ã—ょã†ã€‚ - ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Æ‘½‘Α½ŠÖ˜A + 値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¨å¤šå¯¾å¤šé–¢é€£ - ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚⑽‘Α½ŠÖ˜A‚ÍAê—p‚Ì ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹ ‚ª•K—v‚Å‚·B - ‚±‚̃e[ƒuƒ‹‚ÍAŠO•”ƒL[ƒJƒ‰ƒ€‚ÆA - ƒRƒŒƒNƒVƒ‡ƒ“—v‘f‚̃Jƒ‰ƒ€ ‚ÆA - ꇂɂæ‚Á‚Ă̓Cƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ðŽ‚¿‚Ü‚·B + 値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚„多対多関連ã¯ã€å°‚用㮠コレクションテーブル ãŒå¿…è¦ã§ã™ã€‚ + ã“ã®ãƒ†ãƒ¼ãƒ–ルã¯ã€å¤–部キーカラムã¨ã€ + コレクションè¦ç´ ã®ã‚«ãƒ©ãƒ  ã¨ã€ + å ´åˆã«ã‚ˆã£ã¦ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚«ãƒ©ãƒ ã‚’æŒã¡ã¾ã™ã€‚ - ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚ß‚ÉA<element>ƒ^ƒO‚ðŽg—p‚µ‚Ü‚·B + 値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ãŸã‚ã«ã€<element>タグを使用ã—ã¾ã™ã€‚ @@ -452,24 +454,24 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - column iƒIƒvƒVƒ‡ƒ“j: ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB + column (オプション): コレクションã®è¦ç´ ã®å€¤ã‚’ä¿æŒã™ã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã€‚ - formula iƒIƒvƒVƒ‡ƒ“j: —v‘f‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B + formula (オプション): è¦ç´ ã‚’評価ã™ã‚‹ãŸã‚ã«ä½¿ã†SQLå¼ã€‚ - type i•K{jƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ÌŒ^B + type (必須)コレクションã®è¦ç´ ã®åž‹ã€‚ - ‘½‘Α½ŠÖ˜A ‚Í <many-to-many> —v‘f‚ÅŽw’肵‚Ü‚·B + 多対多関連 㯠<many-to-many> è¦ç´ ã§æŒ‡å®šã—ã¾ã™ã€‚ @@ -498,64 +500,64 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - column iƒIƒvƒVƒ‡ƒ“j: ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì—v‘f‚Ì–¼‘OB + column (オプション): 外部キーカラムã®è¦ç´ ã®åå‰ã€‚ - formula iƒIƒvƒVƒ‡ƒ“j: ŠO•”ƒL[’l‚Ì—v‘f‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B + formula (オプション): 外部キー値ã®è¦ç´ ã‚’評価ã™ã‚‹ãŸã‚ã«ä½¿ã†SQLå¼ã€‚ - class i•K{j: ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB + class (必須): 関連クラスã®åå‰ã€‚ - fetch (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í join): - ŠÖ˜A‚Ì‚½‚ß‚ÉAŠO•”Œ‹‡‚©‡ŽŸ‘I‘ðƒtƒFƒbƒ`‚ð—LŒø‚É‚µ‚Ü‚·B - ‚±‚ê‚Í“ÁŽê‚ȃP[ƒX‚Å‚·‚ªAƒGƒ“ƒeƒBƒeƒB‚Æ‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Æ‚Ì‘½‘Α½ŠÖŒW‚ð - i‚P‚Â‚Ì SELECT ‚É‚æ‚èjŠ®‘S‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚邽‚ß‚É‚ÍA - ‚»‚̃RƒŒƒNƒVƒ‡ƒ“Ž©‘Ì‚¾‚¯‚Å‚È‚­A - ƒlƒXƒg‚µ‚½—v‘f‚Å‚ ‚é <many-to-many> ‚Ì‚±‚Ì‘®«‚ɂ‚¢‚Ä‚à - join ƒtƒFƒbƒ`‚ð—LŒø‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + fetch (オプション - デフォルト㯠join): + 関連ã®ãŸã‚ã«ã€å¤–部çµåˆã‹é †æ¬¡é¸æŠžãƒ•ã‚§ãƒƒãƒã‚’有効ã«ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ç‰¹æ®Šãªã‚±ãƒ¼ã‚¹ã§ã™ãŒã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨ã®å¤šå¯¾å¤šé–¢ä¿‚ã‚’ + (1ã¤ã® SELECT ã«ã‚ˆã‚Šï¼‰å®Œå…¨ã«å³æ™‚ã«ãƒ•ã‚§ãƒƒãƒã™ã‚‹ãŸã‚ã«ã¯ã€ + ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³è‡ªä½“ã ã‘ã§ãªã〠+ ãƒã‚¹ãƒˆã—ãŸè¦ç´ ã§ã‚ã‚‹ <many-to-many> ã®ã“ã®å±žæ€§ã«ã¤ã„ã¦ã‚‚ + join フェッãƒã‚’有効ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - unique iƒIƒvƒVƒ‡ƒ“j: - ŠO•”ƒL[ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚ÌDDL¶¬‚ð—LŒø‚É‚µ‚Ü‚·B - ‚±‚ê‚ÍAŠÖ˜A‚Ì‘½d“x‚ðŽ–ŽÀãˆê‘Α½‚É‚µ‚Ü‚·B + unique (オプション): + 外部キーカラムã®ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã®DDL生æˆã‚’有効ã«ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ã€é–¢é€£ã®å¤šé‡åº¦ã‚’事実上一対多ã«ã—ã¾ã™ã€‚ - not-found iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í exceptionj - ŽQÆæ‚Ìs‚ª‚È‚¢ŠO•”ƒL[‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B - ignore ‚É‚·‚é‚ÆAs‚ª‚È‚¢‚±‚Æ‚ðŠÖ˜A‚ª–³‚¢‚à‚Ì‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B + not-found (オプション - デフォルト㯠exception) + å‚照先ã®è¡ŒãŒãªã„外部キーをã©ã®ã‚ˆã†ã«æ‰±ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + ignore ã«ã™ã‚‹ã¨ã€è¡ŒãŒãªã„ã“ã¨ã‚’関連ãŒç„¡ã„ã‚‚ã®ã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ - entity-name iƒIƒvƒVƒ‡ƒ“j: - class ‚Ì‘ã‘Ö‚Å‚ ‚éŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B - class ‚Ì‘ã‚í‚è‚ÉŽw’è‚·‚éAŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B + entity-name (オプション): + class ã®ä»£æ›¿ã§ã‚る関連クラスã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å。 + class ã®ä»£ã‚ã‚Šã«æŒ‡å®šã™ã‚‹ã€é–¢é€£ã‚¯ãƒ©ã‚¹ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å。 - property-ref: iƒIƒvƒVƒ‡ƒ“j - ‚±‚ÌŠO•”ƒL[‚ÉŒ‹‡‚·‚éŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B - Žw’肵‚È‚©‚Á‚½ê‡‚ÍAŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ðŽg‚¢‚Ü‚·B + property-ref: (オプション) + ã“ã®å¤–部キーã«çµåˆã™ã‚‹é–¢é€£ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティå。 + 指定ã—ãªã‹ã£ãŸå ´åˆã¯ã€é–¢é€£ã‚¯ãƒ©ã‚¹ã®ä¸»ã‚­ãƒ¼ã‚’使ã„ã¾ã™ã€‚ - ˆÈ‰º‚É‚¢‚­‚‚©—á‚ðŽ¦‚µ‚Ü‚·B - ‚Ü‚¸‚ÍString‚Ìset‚ÉŠÖ‚µ‚Ä‚Ì—á‚Å‚·B + 以下ã«ã„ãã¤ã‹ä¾‹ã‚’示ã—ã¾ã™ã€‚ + ã¾ãšã¯Stringã®setã«é–¢ã—ã¦ã®ä¾‹ã§ã™ã€‚ @@ -564,7 +566,7 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set ]]> - ®”’l‚ðŠÜ‚Þbagibag‚Í order-by ‘®«‚É‚æ‚Á‚Ä”½•œ‡˜‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·j + 整数値をå«ã‚€bag(bag㯠order-by 属性ã«ã‚ˆã£ã¦å復順åºãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã™ï¼‰ ]]> - ƒGƒ“ƒeƒBƒeƒB‚Ì”z—ñ - ‚±‚Ìê‡A‘½‘Α½‚ÌŠÖ˜A‚Å‚·B + エンティティã®é…列 - ã“ã®å ´åˆã€å¤šå¯¾å¤šã®é–¢é€£ã§ã™ã€‚ ]]> - •¶Žš—ñ‚Æ“ú•t‚Ìmap + 文字列ã¨æ—¥ä»˜ã®map ]]> - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÌlistiŽŸ‚ÌÍ‚ÅÚ‚µ‚­à–¾‚µ‚Ü‚·j + コンãƒãƒ¼ãƒãƒ³ãƒˆã®list(次ã®ç« ã§è©³ã—ã説明ã—ã¾ã™ï¼‰ - ˆê‘Α½ŠÖ˜A + 一対多関連 - ˆê‘Α½ŠÖ˜A ‚ÍAƒRƒŒƒNƒVƒ‡ƒ“¥ƒe[ƒuƒ‹‚ð‰î‚³‚¸A - ŠO•”ƒL[‚É‚æ‚è2‚‚̃Nƒ‰ƒX‚̃e[ƒuƒ‹‚ðŠÖ˜A•t‚¯‚Ü‚·B - ‚±‚̃}ƒbƒsƒ“ƒO‚Í•W€“I‚ÈJava‚̃RƒŒƒNƒVƒ‡ƒ“‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ð‚¢‚­‚‚©Ž¸‚¢‚Ü‚·B + 一対多関連 ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï½¥ãƒ†ãƒ¼ãƒ–ルを介ã•ãšã€ + 外部キーã«ã‚ˆã‚Š2ã¤ã®ã‚¯ãƒ©ã‚¹ã®ãƒ†ãƒ¼ãƒ–ルを関連付ã‘ã¾ã™ã€‚ + ã“ã®ãƒžãƒƒãƒ”ングã¯æ¨™æº–çš„ãªJavaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‚’ã„ãã¤ã‹å¤±ã„ã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - 2‚ˆÈã‚̃RƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚É‘®‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB + エンティティクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + 2ã¤ä»¥ä¸Šã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å±žã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 - ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠÜ‚Ü‚ê‚éƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚Æ‚µ‚Ä2“xˆÈ㌻‚ê‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB + コレクションã«å«ã¾ã‚Œã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + コレクションインデックスã®å€¤ã¨ã—ã¦2度以上ç¾ã‚Œã¦ã¯ã„ã‘ã¾ã›ã‚“。 - Product ‚©‚ç Part ‚Ö‚ÌŠÖ˜A‚ÍA - Part ƒe[ƒuƒ‹‚Ö‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚ÆAꇂɂæ‚Á‚Ă̓Cƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ª•K—v‚Å‚·B - <one-to-many> ƒ^ƒO‚ÍA‚±‚ꂪˆê‘Α½ŠÖ˜A‚Å‚ ‚邱‚Æ‚ð•\‚µ‚Ä‚¢‚Ü‚·B + Product ã‹ã‚‰ Part ã¸ã®é–¢é€£ã¯ã€ + Part テーブルã¸ã®å¤–部キーカラムã¨ã€å ´åˆã«ã‚ˆã£ã¦ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚«ãƒ©ãƒ ãŒå¿…è¦ã§ã™ã€‚ + <one-to-many> ã‚¿ã‚°ã¯ã€ã“ã‚ŒãŒä¸€å¯¾å¤šé–¢é€£ã§ã‚ã‚‹ã“ã¨ã‚’表ã—ã¦ã„ã¾ã™ã€‚ @@ -662,44 +664,44 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - class i•K{j: ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB + class (必須): 関連クラスã®åå‰ã€‚ - not-found iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í exceptionj: - ŽQÆæ‚Ìs‚ª‚È‚¢ƒLƒƒƒbƒVƒ…‚³‚ꂽŽ¯•ÊŽq‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B - ignore ‚ðŽw’è‚·‚é‚ÆAs‚ª‚È‚¢‚±‚Æ‚ðŠÖ˜A‚ª‚È‚¢‚à‚Ì‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B + not-found (オプション - デフォルト㯠exception): + å‚照先ã®è¡ŒãŒãªã„キャッシュã•ã‚ŒãŸè­˜åˆ¥å­ã‚’ã©ã®ã‚ˆã†ã«æ‰±ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ + ignore を指定ã™ã‚‹ã¨ã€è¡ŒãŒãªã„ã“ã¨ã‚’関連ãŒãªã„ã‚‚ã®ã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ - entity-name iƒIƒvƒVƒ‡ƒ“j: - class ‚Ì‘ã‘Ö‚Å‚ ‚éŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B - class ‚Ì‘ã‚í‚è‚ÉŽw’è‚·‚éAŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B + entity-name (オプション): + class ã®ä»£æ›¿ã§ã‚る関連クラスã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å。 + class ã®ä»£ã‚ã‚Šã«æŒ‡å®šã™ã‚‹ã€é–¢é€£ã‚¯ãƒ©ã‚¹ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£å。 - <one-to-many> —v‘f‚̓Jƒ‰ƒ€‚ð錾‚·‚é•K—v‚ª‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - “¯—l‚É ƒe[ƒuƒ‹ –¼‚ðŽw’è‚·‚é•K—v‚à‚ ‚è‚Ü‚¹‚ñB + <one-to-many> è¦ç´ ã¯ã‚«ãƒ©ãƒ ã‚’宣言ã™ã‚‹å¿…è¦ãŒãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + åŒæ§˜ã« テーブル åを指定ã™ã‚‹å¿…è¦ã‚‚ã‚ã‚Šã¾ã›ã‚“。 - ‚Æ‚Ä‚àd—v‚È’ˆÓ: ‚à‚µ <one-to-many> - ŠÖ˜A‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚ª NOT NULL‚Æ錾‚³‚ꂽê‡A - <key> ƒ}ƒbƒsƒ“ƒO‚É not-null="true" ‚ð錾‚·‚é‚©A - ƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚É inverse="true" ‚ð•t‚¯‚½ã‚ÅA - ‘o•ûŒüŠÖ˜A‚ðŽg‚¤ •K—v‚ª‚ ‚è‚Ü‚·B - ‘o•ûŒüŠÖ˜A‚ɂ‚¢‚Ä‚Í‚±‚ÌÍ‚ÌŒã‚Ì‚Ù‚¤‚Åà–¾‚µ‚Ü‚·B + ã¨ã¦ã‚‚é‡è¦ãªæ³¨æ„: ã‚‚ã— <one-to-many> + 関連ã®å¤–部キーカラム㌠NOT NULLã¨å®£è¨€ã•ã‚ŒãŸå ´åˆã€ + <key> マッピング㫠not-null="true" を宣言ã™ã‚‹ã‹ã€ + コレクションマッピング㫠inverse="true" を付ã‘ãŸä¸Šã§ã€ + åŒæ–¹å‘関連を使ㆠ必è¦ãŒã‚ã‚Šã¾ã™ã€‚ + åŒæ–¹å‘関連ã«ã¤ã„ã¦ã¯ã“ã®ç« ã®å¾Œã®ã»ã†ã§èª¬æ˜Žã—ã¾ã™ã€‚ - ŽŸ‚Ì—á‚ÍA–¼ÌiPart ‚̉i‘±“I‚ȃvƒƒpƒeƒB‚Å‚ ‚é partNamej - ‚É‚æ‚é Part ƒGƒ“ƒeƒBƒeƒB‚Ìmap‚ð•\‚µ‚Ä‚¢‚Ü‚·B - formula‚É‚æ‚éƒCƒ“ƒfƒbƒNƒX‚ðŽg‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 次ã®ä¾‹ã¯ã€å称(Part ã®æ°¸ç¶šçš„ãªãƒ—ロパティã§ã‚ã‚‹ partName) + ã«ã‚ˆã‚‹ Part エンティティã®mapを表ã—ã¦ã„ã¾ã™ã€‚ + formulaã«ã‚ˆã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’使ã£ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‚“x‚ȃRƒŒƒNƒVƒ‡ƒ“¥ƒ}ƒbƒsƒ“ƒO + 高度ãªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï½¥ãƒžãƒƒãƒ”ング - ƒ\[ƒg‚³‚ꂽƒRƒŒƒNƒVƒ‡ƒ“ + ソートã•ã‚ŒãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ - Hibernate‚Í java.util.SortedMap ‚Æ java.util.SortedSet - ‚ðŽÀ‘•‚µ‚½ƒRƒŒƒNƒVƒ‡ƒ“‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - ŠJ”­ŽÒ‚̓}ƒbƒsƒ“ƒO’è‹`ƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒŒ[ƒ^‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + Hibernate㯠java.util.SortedMap 㨠java.util.SortedSet + を実装ã—ãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + 開発者ã¯ãƒžãƒƒãƒ”ング定義ファイルã«ã‚³ãƒ³ãƒ‘レータを指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 ]]> - sort ‘®«‚ÉÝ’è‚Å‚«‚é’l‚Í unsorted ‚Æ natural - ‚¨‚æ‚ÑAjava.util.Comparator ‚ðŽÀ‘•‚µ‚½ƒNƒ‰ƒX‚Ì–¼‘O‚Å‚·B + sort 属性ã«è¨­å®šã§ãる値㯠unsorted 㨠natural + ãŠã‚ˆã³ã€java.util.Comparator を実装ã—ãŸã‚¯ãƒ©ã‚¹ã®åå‰ã§ã™ã€‚ - ƒ\[ƒg‚³‚ꂽƒRƒŒƒNƒVƒ‡ƒ“‚ÍŽÀŽ¿“I‚É‚Í java.util.TreeSet ‚â - java.util.TreeMap ‚̂悤‚ÉU•‘‚¢‚Ü‚·B + ソートã•ã‚ŒãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯å®Ÿè³ªçš„ã«ã¯ java.util.TreeSet ã‚„ + java.util.TreeMap ã®ã‚ˆã†ã«æŒ¯èˆžã„ã¾ã™ã€‚ - ‚à‚µƒf[ƒ^ƒx[ƒXŽ©g‚ɃRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ð•À‚ׂ³‚¹‚½‚¢‚È‚çA - set ‚â bagAmap ‚Ì - order-by ‘®«‚ðŽg‚¢‚Ü‚·B - ‚±‚Ì‰ðŒˆ–@‚ÍJDK1.4A‚à‚µ‚­‚Í‚»‚êˆÈã‚̃o[ƒWƒ‡ƒ“‚Å—˜—p‰Â”\‚Å‚· - iLinkedHashSet ‚Ü‚½‚Í LinkedHashMap‚ðŽg‚Á‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·jB - ®—ñ‚̓ƒ‚ƒŠã‚Å‚Í‚È‚­ASQLƒNƒGƒŠ“à‚ÅŽÀs‚³‚ê‚Ü‚·B + ã‚‚ã—データベース自身ã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ã‚’並ã¹ã•ã›ãŸã„ãªã‚‰ã€ + set ã‚„ bagã€map ã® + order-by 属性を使ã„ã¾ã™ã€‚ + ã“ã®è§£æ±ºæ³•ã¯JDK1.4ã€ã‚‚ã—ãã¯ãれ以上ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§åˆ©ç”¨å¯èƒ½ã§ã™ + (LinkedHashSet ã¾ãŸã¯ LinkedHashMapを使ã£ã¦å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã™ï¼‰ã€‚ + 整列ã¯ãƒ¡ãƒ¢ãƒªä¸Šã§ã¯ãªãã€SQLクエリ内ã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ @@ -768,12 +770,12 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set ]]> - order-by ‘®«‚Ì’l‚ªSQL–½—ß‚Å‚ ‚Á‚ÄAHQL–½—ß‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢I + order-by 属性ã®å€¤ãŒSQL命令ã§ã‚ã£ã¦ã€HQL命令ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ï¼ - ŠÖ˜A‚ÍAƒRƒŒƒNƒVƒ‡ƒ“‚Ì filter() ‚ðŽg‚¤‚±‚Æ‚ÅA - ŽÀsŽž‚É”CˆÓ‚Ìcriteria‚É‚æ‚Á‚ă\[ƒg‚·‚邱‚Æ‚à‰Â”\‚Å‚·B + 関連ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã® filter() を使ã†ã“ã¨ã§ã€ + 実行時ã«ä»»æ„ã®criteriaã«ã‚ˆã£ã¦ã‚½ãƒ¼ãƒˆã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ @@ -781,18 +783,18 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - ‘o•ûŒüŠÖ˜A + åŒæ–¹å‘関連 - ‘o•ûŒüŠÖ˜A ‚ÍŠÖ˜A‚Ì‚Ç‚¿‚çu‘¤v‚©‚ç‚Å‚àƒiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚Ü‚·B - 2Ží—Þ‚Ì‘o•ûŒüŠÖ˜A‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚·B + åŒæ–¹å‘関連 ã¯é–¢é€£ã®ã©ã¡ã‚‰ã€Œå´ã€ã‹ã‚‰ã§ã‚‚ナビゲーションã§ãã¾ã™ã€‚ + 2種類ã®åŒæ–¹å‘関連ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ one-to-many - •Ð‘¤‚ªset‚©bagA‚à‚¤•Ð•û‚ª’Pˆê’l‚Å‚·B + 片å´ãŒsetã‹bagã€ã‚‚ã†ç‰‡æ–¹ãŒå˜ä¸€å€¤ã§ã™ã€‚ @@ -800,7 +802,7 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set many-to-many - —¼‘¤‚ªset‚©bag‚Å‚·B + 両å´ãŒsetã‹bagã§ã™ã€‚ @@ -809,15 +811,15 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set - 2‚‚̑½‘Α½ŠÖ˜A‚Å“¯‚¶ƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ðƒ}ƒbƒsƒ“ƒO‚µA - •Ð•û‚ð inverse ‚Æ‚µ‚Ä錾‚·‚邱‚Æ‚ÅA - ‘o•ûŒü‚Ì‘½‘Α½ŠÖ˜A‚ðŽw’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚· - i‚Ç‚¿‚ç‚ðinverse‚É‘I‚ñ‚¾‚Æ‚µ‚Ä‚àA‚»‚¿‚瑤‚ɂ̓Cƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍŽg‚¦‚Ü‚¹‚ñjB + 2ã¤ã®å¤šå¯¾å¤šé–¢é€£ã§åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルをマッピングã—〠+ 片方を inverse ã¨ã—ã¦å®£è¨€ã™ã‚‹ã“ã¨ã§ã€ + åŒæ–¹å‘ã®å¤šå¯¾å¤šé–¢é€£ã‚’指定ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ + (ã©ã¡ã‚‰ã‚’inverseã«é¸ã‚“ã ã¨ã—ã¦ã‚‚ã€ãã¡ã‚‰å´ã«ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ä½¿ãˆã¾ã›ã‚“)。 - ŽŸ‚É‘o•ûŒü‚Ì‘½‘Α½ŠÖ˜A‚Ì—á‚ðŽ¦‚µ‚Ü‚·B - ŠeƒJƒeƒSƒŠ‚Í‘½”‚̃AƒCƒeƒ€‚ðŽ‚‚±‚Æ‚ª‚Å‚«AŠeƒAƒCƒeƒ€‚Í‘½‚­‚̃JƒeƒSƒŠ‚É‘®‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + 次ã«åŒæ–¹å‘ã®å¤šå¯¾å¤šé–¢é€£ã®ä¾‹ã‚’示ã—ã¾ã™ã€‚ + å„カテゴリã¯å¤šæ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’æŒã¤ã“ã¨ãŒã§ãã€å„アイテムã¯å¤šãã®ã‚«ãƒ†ã‚´ãƒªã«å±žã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ @@ -841,11 +843,11 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set ]]> - ŠÖ˜A‚Ìinverse‘¤‚É‚Ì‚Ýs‚í‚ꂽ•ÏX‚͉i‘±‰» ‚³‚ê‚Ü‚¹‚ñB - ‚±‚ê‚ÍAHibernate‚Í‘S‚Ä‚Ì‘o•ûŒüŠÖ˜A‚ɂ‚¢‚ÄAƒƒ‚ƒŠã‚É‚Q‚‚̕\Œ»‚ðŽ‚Á‚Ä‚¢‚é‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B - ‚‚܂èˆê‚‚ÍA‚©‚çB‚ւ̃Šƒ“ƒN‚ÅA‚à‚¤ˆê‚‚ÍB‚©‚çA‚ւ̃Šƒ“ƒN‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - Java‚̃IƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚ɂ‚¢‚Äl‚¦AJava‚Å‘o•ûŒüŠÖŒW‚ð‚Ç‚¤‚â‚Á‚Äì‚é‚©‚ðl‚¦‚ê‚ÎA - ‚±‚ê‚Í—‰ð‚µ‚â‚·‚¢‚Å‚·B‰º‹L‚ÉAJava‚Å‚Ì‘o•ûŒüŠÖ˜A‚ðŽ¦‚µ‚Ü‚·B + 関連ã®inverseå´ã«ã®ã¿è¡Œã‚ã‚ŒãŸå¤‰æ›´ã¯æ°¸ç¶šåŒ– ã•ã‚Œã¾ã›ã‚“。 + ã“ã‚Œã¯ã€Hibernateã¯å…¨ã¦ã®åŒæ–¹å‘関連ã«ã¤ã„ã¦ã€ãƒ¡ãƒ¢ãƒªä¸Šã«ï¼’ã¤ã®è¡¨ç¾ã‚’æŒã£ã¦ã„ã‚‹ã¨ã„ã†æ„味ã§ã™ã€‚ + ã¤ã¾ã‚Šä¸€ã¤ã¯Aã‹ã‚‰Bã¸ã®ãƒªãƒ³ã‚¯ã§ã€ã‚‚ã†ä¸€ã¤ã¯Bã‹ã‚‰Aã¸ã®ãƒªãƒ³ã‚¯ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + Javaã®ã‚ªãƒ–ジェクトモデルã«ã¤ã„ã¦è€ƒãˆã€Javaã§åŒæ–¹å‘関係をã©ã†ã‚„ã£ã¦ä½œã‚‹ã‹ã‚’考ãˆã‚Œã°ã€ + ã“ã‚Œã¯ç†è§£ã—ã‚„ã™ã„ã§ã™ã€‚下記ã«ã€Javaã§ã®åŒæ–¹å‘関連を示ã—ã¾ã™ã€‚ - ŠÖ˜A‚Ìinverse‚Å‚Í‚È‚¢‘¤‚ÍAƒƒ‚ƒŠã‚Ì•\Œ»‚ðƒf[ƒ^ƒx[ƒX‚É•Û‘¶‚·‚é‚Ì‚ÉŽg‚í‚ê‚Ü‚·B + 関連ã®inverseã§ã¯ãªã„å´ã¯ã€ãƒ¡ãƒ¢ãƒªä¸Šã®è¡¨ç¾ã‚’データベースã«ä¿å­˜ã™ã‚‹ã®ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ - ‘o•ûŒü‚̈ê‘Α½ŠÖ˜A‚ð’è‹`‚·‚é‚É‚ÍA - ˆê‘Α½ŠÖ˜A‚𑽑ΈêŠÖ˜A‚Æ“¯‚¶ƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚µA - ‘½‘¤‚É inverse="true" ‚Æ錾‚µ‚Ü‚·B + åŒæ–¹å‘ã®ä¸€å¯¾å¤šé–¢é€£ã‚’定義ã™ã‚‹ã«ã¯ã€ + 一対多関連を多対一関連ã¨åŒã˜ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ ã«ãƒžãƒƒãƒ”ングã—〠+ 多å´ã« inverse="true" ã¨å®£è¨€ã—ã¾ã™ã€‚ @@ -884,19 +886,19 @@ session.persist(category); // The relationship will be saved]]>

]]>
- ŠÖ˜A‚̕Б¤‚É inverse="true" ‚ðݒ肵‚Ä‚àA - ƒJƒXƒP[ƒh‘€ì‚ɉe‹¿‚ð—^‚¦‚Ü‚¹‚ñB‚±‚ê‚ç‚Í’¼Œð‚µ‚½ŠT”O‚Å‚·I + 関連ã®ç‰‡å´ã« inverse="true" を設定ã—ã¦ã‚‚〠+ カスケードæ“作ã«å½±éŸ¿ã‚’与ãˆã¾ã›ã‚“。ã“れらã¯ç›´äº¤ã—ãŸæ¦‚念ã§ã™ï¼
- ƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚Æ‘o•ûŒüŠÖ˜A + インデックス付ãコレクションã¨åŒæ–¹å‘関連 - •Ð‘¤‚ª <list> ‚â <map> ‚Å‚ ‚é - ‘o•ûŒüŠÖ˜A‚ÍA“Á‚É‚æ‚­l‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B - ƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚Ƀ}ƒbƒv‚³‚ê‚éŽqƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ª‚ ‚éꇂÍA–â‘è‚È‚¢‚Å‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å inverse="true" ‚ðŽg‚¢‘±‚¯‚ç‚ê‚Ü‚·B + 片å´ãŒ <list> ã‚„ <map> ã§ã‚ã‚‹ + åŒæ–¹å‘関連ã¯ã€ç‰¹ã«ã‚ˆã考ãˆã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + インデックスカラムã«ãƒžãƒƒãƒ—ã•ã‚Œã‚‹å­ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティãŒã‚ã‚‹å ´åˆã¯ã€å•é¡Œãªã„ã§ã™ã€‚ + コレクションã®ãƒžãƒƒãƒ”ング㧠inverse="true" を使ã„続ã‘られã¾ã™ã€‚ @@ -922,11 +924,11 @@ session.persist(category); // The relationship will be saved]]>

]]>
- ‚µ‚©‚µAŽqƒNƒ‰ƒX‚É‚»‚̂悤‚ȃvƒƒpƒeƒB‚ª‚È‚¢ê‡‚ÍA - ŠÖ˜A‚ð^‚É‘o•ûŒü‚Å‚ ‚é‚Æl‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ - iŠÖ˜A‚̕Б¤‚É—˜—p‚Å‚«‚éî•ñ‚ª‚ ‚è‚Ü‚·‚ªA‚à‚¤ˆê•û‚É‚Í‚ ‚è‚Ü‚¹‚ñjB - ‚±‚ÌꇂÍAƒRƒŒƒNƒVƒ‡ƒ“‚É inverse="true" ‚ðƒ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚¹‚ñB - ‘ã‚í‚è‚ÉAŽŸ‚̂悤‚ȃ}ƒbƒsƒ“ƒO‚ªŽg‚¦‚Ü‚·B + ã—ã‹ã—ã€å­ã‚¯ãƒ©ã‚¹ã«ãã®ã‚ˆã†ãªãƒ—ロパティãŒãªã„å ´åˆã¯ã€ + 関連を真ã«åŒæ–¹å‘ã§ã‚ã‚‹ã¨è€ƒãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ + (関連ã®ç‰‡å´ã«åˆ©ç”¨ã§ãる情報ãŒã‚ã‚Šã¾ã™ãŒã€ã‚‚ã†ä¸€æ–¹ã«ã¯ã‚ã‚Šã¾ã›ã‚“)。 + ã“ã®å ´åˆã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã« inverse="true" をマッピングã§ãã¾ã›ã‚“。 + 代ã‚ã‚Šã«ã€æ¬¡ã®ã‚ˆã†ãªãƒžãƒƒãƒ”ングãŒä½¿ãˆã¾ã™ã€‚ @@ -953,19 +955,19 @@ session.persist(category); // The relationship will be saved]]>

]]>
- ’ˆÓF ‚±‚̃}ƒbƒsƒ“ƒO‚Å‚ÍAŠÖ˜A‚̃RƒŒƒNƒVƒ‡ƒ“’l‚Ì‘¤‚ÍA - ŠO•”ƒL[‚ðƒAƒbƒvƒf[ƒg‚·‚éÓ”C‚ª‚ ‚è‚Ü‚·B + 注æ„: ã“ã®ãƒžãƒƒãƒ”ングã§ã¯ã€é–¢é€£ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å€¤ã®å´ã¯ã€ + 外部キーをアップデートã™ã‚‹è²¬ä»»ãŒã‚ã‚Šã¾ã™ã€‚
- 3€ŠÖ˜A + 3項関連 - 3€ŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚É‚Í3‚‚̃Aƒvƒ[ƒ`‚ª‚ ‚è‚Ü‚·B - 1‚–ڂ͊֘A‚ðƒCƒ“ƒfƒbƒNƒX‚Æ‚µ‚Ä Map ‚ðŽg—p‚·‚éƒAƒvƒ[ƒ`‚Å‚·B + 3項関連ã®ãƒžãƒƒãƒ”ングã«ã¯3ã¤ã®ã‚¢ãƒ—ローãƒãŒã‚ã‚Šã¾ã™ã€‚ + 1ã¤ç›®ã¯é–¢é€£ã‚’インデックスã¨ã—㦠Map を使用ã™ã‚‹ã‚¢ãƒ—ローãƒã§ã™ã€‚ @@ -981,32 +983,32 @@ session.persist(category); // The relationship will be saved]]>

]]>
- 2‚–ڂ͒Pƒ‚ÉŠÖ˜A‚ðƒGƒ“ƒeƒBƒeƒB¥ƒNƒ‰ƒX‚Æ‚µ‚ă‚ƒfƒ‹‚ðì‚è’¼‚·ƒAƒvƒ[ƒ`‚ÅA - •p”É‚ÉŽg‚í‚ê‚Ü‚·B + 2ã¤ç›®ã¯å˜ç´”ã«é–¢é€£ã‚’エンティティ・クラスã¨ã—ã¦ãƒ¢ãƒ‡ãƒ«ã‚’作り直ã™ã‚¢ãƒ—ローãƒã§ã€ + é »ç¹ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ - ÅŒã‚Ícomposite—v‘f‚ðŽg‚¤ƒAƒvƒ[ƒ`‚Å‚·B‚±‚ê‚ÉŠÖ‚·‚é‹c˜_‚ÍŒã‚Ù‚Çs‚¢‚Ü‚·B + 最後ã¯compositeè¦ç´ ã‚’使ã†ã‚¢ãƒ—ローãƒã§ã™ã€‚ã“ã‚Œã«é–¢ã™ã‚‹è­°è«–ã¯å¾Œã»ã©è¡Œã„ã¾ã™ã€‚
- <literal><idbag></literal>‚ÌŽg—p + <literal><idbag></literal>ã®ä½¿ç”¨ - •¡‡ƒL[‚͈«‚¢‚à‚Ì‚ÅAƒGƒ“ƒeƒBƒeƒB‚ÍlH‚ÌŽ¯•ÊŽq(‘ã—ƒL[)‚ðŽ‚‚ׂ«‚Å‚ ‚é‚Æ‚¢‚¤l‚¦•û‚©‚ç‚ÍA - ‘½‘Α½ŠÖ˜A‚Æ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚𕡇ƒL[‚ð—p‚¢‚½ƒe[ƒuƒ‹‚Öƒ}ƒbƒsƒ“ƒO‚·‚é‚Ì‚Í­‚µŠï–­‚ÉŠ´‚¶‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñI - Šm‚©‚É‚±‚Ìl‚¦•û‚É‚Í‹c˜_‚Ì—]’n‚ª‚ ‚è‚Ü‚·B - ƒˆ‚ÈŠÖ˜Aƒe[ƒuƒ‹‚Í‘ã—ƒL[‚ðŽg‚Á‚Ä‚à—˜‰v‚𓾂ç‚ê‚È‚¢‚悤‚ÉŽv‚¦‚é‚©‚ç‚Å‚· - i‡¬’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Í—˜‰v‚ª‚ ‚é ‚©‚à ‚µ‚ê‚Ü‚¹‚ñ‚ªjB - ‚Æ‚Í‚¢‚¦AHibernate‚Í‘ã—ƒL[‚ðŽ‚ƒe[ƒuƒ‹‚Ö‘½‘Α½ŠÖ˜A‚Æ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚ð - ƒ}ƒbƒsƒ“ƒO‚·‚é‹@”\‚à”õ‚¦‚Ä‚¢‚Ü‚·B + 複åˆã‚­ãƒ¼ã¯æ‚ªã„ã‚‚ã®ã§ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¯äººå·¥ã®è­˜åˆ¥å­(代ç†ã‚­ãƒ¼)ã‚’æŒã¤ã¹ãã§ã‚ã‚‹ã¨ã„ã†è€ƒãˆæ–¹ã‹ã‚‰ã¯ã€ + 多対多関連ã¨å€¤ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’複åˆã‚­ãƒ¼ã‚’用ã„ãŸãƒ†ãƒ¼ãƒ–ルã¸ãƒžãƒƒãƒ”ングã™ã‚‹ã®ã¯å°‘ã—奇妙ã«æ„Ÿã˜ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ï¼ + 確ã‹ã«ã“ã®è€ƒãˆæ–¹ã«ã¯è­°è«–ã®ä½™åœ°ãŒã‚ã‚Šã¾ã™ã€‚ + 純粋ãªé–¢é€£ãƒ†ãƒ¼ãƒ–ルã¯ä»£ç†ã‚­ãƒ¼ã‚’使ã£ã¦ã‚‚利益を得られãªã„よã†ã«æ€ãˆã‚‹ã‹ã‚‰ã§ã™ + (åˆæˆå€¤ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯åˆ©ç›ŠãŒã‚ã‚‹ ã‹ã‚‚ ã—ã‚Œã¾ã›ã‚“ãŒï¼‰ã€‚ + ã¨ã¯ã„ãˆã€Hibernateã¯ä»£ç†ã‚­ãƒ¼ã‚’æŒã¤ãƒ†ãƒ¼ãƒ–ルã¸å¤šå¯¾å¤šé–¢é€£ã¨å€¤ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ + マッピングã™ã‚‹æ©Ÿèƒ½ã‚‚å‚™ãˆã¦ã„ã¾ã™ã€‚ - bag‚̃Zƒ}ƒ“ƒeƒBƒbƒNƒX‚ðŽ‚Á‚½ Listi‚Ü‚½‚Í Collectionj‚ð - <idbag> —v‘f‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·B + bagã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã‚’æŒã£ãŸ List(ã¾ãŸã¯ Collection)を + <idbag> è¦ç´ ã«ãƒžãƒƒãƒ”ングã§ãã¾ã™ã€‚ @@ -1018,22 +1020,22 @@ session.persist(category); // The relationship will be saved]]>

]]>
- ‚²‘¶’m‚̂悤‚É <idbag> ‚̓Gƒ“ƒeƒBƒeƒB¥ƒNƒ‰ƒX‚̂悤‚É - lH“I‚ÈidƒWƒFƒlƒŒ[ƒ^‚ðŽ‚Á‚Ä‚¢‚Ü‚·I - ˆÙ‚È‚é‘ã—ƒL[‚ð‚»‚ê‚¼‚ê‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì—ñ‚ÉŠ„‚è“–‚Ä‚Ü‚·B - ‚µ‚©‚µ‚È‚ª‚çAHibernate‚Í‚ ‚és‚Ì‘ã—ƒL[‚Ì’l‚ðŒ©‚Â‚¯o‚·‹@\‚ðŽ‚Á‚Ä‚¢‚Ü‚¹‚ñB + ã”存知ã®ã‚ˆã†ã« <idbag> ã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ï½¥ã‚¯ãƒ©ã‚¹ã®ã‚ˆã†ã« + 人工的ãªidジェãƒãƒ¬ãƒ¼ã‚¿ã‚’æŒã£ã¦ã„ã¾ã™ï¼ + ç•°ãªã‚‹ä»£ç†ã‚­ãƒ¼ã‚’ãã‚Œãžã‚Œã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®åˆ—ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚ + ã—ã‹ã—ãªãŒã‚‰ã€Hibernateã¯ã‚ã‚‹è¡Œã®ä»£ç†ã‚­ãƒ¼ã®å€¤ã‚’見ã¤ã‘出ã™æ©Ÿæ§‹ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。 - <idbag> ‚ðXV‚·‚éƒpƒtƒH[ƒ}ƒ“ƒX‚Í - ’Êí‚Ì <bag> ‚æ‚è‚à—Ç‚¢‚±‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢I - Hibernate‚ÍŒÂX‚Ìs‚ðŒø‰Ê“I‚ÉŒ©‚‚¯‚邱‚Æ‚ª‚Å‚«A - list‚âmapAset‚̂悤‚Ɍ•ʂɂ»‚Ìs‚ðXVA휂ł«‚Ü‚·B + <idbag> ã‚’æ›´æ–°ã™ã‚‹ãƒ‘フォーマンス㯠+ 通常㮠<bag> よりも良ã„ã“ã¨ã«æ³¨ç›®ã—ã¦ãã ã•ã„ï¼ + Hibernateã¯å€‹ã€…ã®è¡Œã‚’効果的ã«è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ã〠+ listã‚„mapã€setã®ã‚ˆã†ã«å€‹åˆ¥ã«ãã®è¡Œã‚’æ›´æ–°ã€å‰Šé™¤ã§ãã¾ã™ã€‚ - Œ»Ý‚ÌŽÀ‘•‚Å‚ÍAnative ‚Æ‚¢‚¤id¶¬í—ª‚ð - <idbag> ƒRƒŒƒNƒVƒ‡ƒ“‚ÌŽ¯•ÊŽq‚ɑ΂µ‚ÄŽg‚¦‚Ü‚¹‚ñB + ç¾åœ¨ã®å®Ÿè£…ã§ã¯ã€native ã¨ã„ã†id生æˆæˆ¦ç•¥ã‚’ + <idbag> コレクションã®è­˜åˆ¥å­ã«å¯¾ã—ã¦ä½¿ãˆã¾ã›ã‚“。
@@ -1055,10 +1057,10 @@ session.persist(category); // The relationship will be saved]]>

- ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—á + コレクションã®ä¾‹ - ‚±‚ê‚Ü‚Å‚Ìß‚Ìà–¾‚Å‚Í—‰ð‚µ‚É‚­‚¢‚Ì‚ÅAˆÈ‰º‚Ì—á‚ðŒ©‚Ä‚­‚¾‚³‚¢B + ã“ã‚Œã¾ã§ã®ç¯€ã®èª¬æ˜Žã§ã¯ç†è§£ã—ã«ãã„ã®ã§ã€ä»¥ä¸‹ã®ä¾‹ã‚’見ã¦ãã ã•ã„。 - ‚±‚̃Nƒ‰ƒX‚Í Child ƒCƒ“ƒXƒ^ƒ“ƒX‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Á‚Ä‚¢‚Ü‚·B - ‚à‚µŠeX‚Ìchild‚ªÅ‘å‚Å‚àˆê‚‚Ìparent‚ðŽ‚Á‚Ä‚¢‚é‚È‚ç‚ÎAÅ‚àŽ©‘R‚ȃ}ƒbƒsƒ“ƒO‚͈ê‘Α½ŠÖ˜A‚Å‚·B + ã“ã®ã‚¯ãƒ©ã‚¹ã¯ Child インスタンスã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + ã‚‚ã—å„々ã®childãŒæœ€å¤§ã§ã‚‚一ã¤ã®parentã‚’æŒã£ã¦ã„ã‚‹ãªã‚‰ã°ã€æœ€ã‚‚自然ãªãƒžãƒƒãƒ”ングã¯ä¸€å¯¾å¤šé–¢é€£ã§ã™ã€‚ @@ -1105,7 +1107,7 @@ public class Parent { ]]> - ‚±‚ê‚͈ȉº‚̃e[ƒuƒ‹’è‹`‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B + ã“ã‚Œã¯ä»¥ä¸‹ã®ãƒ†ãƒ¼ãƒ–ル定義ã«ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ - ‚à‚µparent‚ª —v‹ ‚³‚ê‚é‚È‚çA‘o•ûŒü‚̈ê‘Α½ŠÖ˜A‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B + ã‚‚ã—parent㌠è¦æ±‚ ã•ã‚Œã‚‹ãªã‚‰ã€åŒæ–¹å‘ã®ä¸€å¯¾å¤šé–¢é€£ã‚’使用ã—ã¦ãã ã•ã„。 @@ -1139,7 +1141,7 @@ alter table child add constraint childfk0 (parent_id) references parent]]>]]> - NOT NULL §–ñ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + NOT NULL 制約ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‚ ‚é‚¢‚ÍA‚à‚µ‚±‚ÌŠÖ˜A‚Í’P•ûŒü‚Å‚ ‚é‚ׂ«‚Æ‹­‚­Žå’£‚·‚é‚Ì‚Å‚ ‚ê‚ÎA - <key> ‚É NOT NULL §–ñ‚ð錾‚Å‚«‚Ü‚·B + ã‚ã‚‹ã„ã¯ã€ã‚‚ã—ã“ã®é–¢é€£ã¯å˜æ–¹å‘ã§ã‚ã‚‹ã¹ãã¨å¼·ã主張ã™ã‚‹ã®ã§ã‚ã‚Œã°ã€ + <key> ã« NOT NULL 制約を宣言ã§ãã¾ã™ã€‚ @@ -1176,7 +1178,7 @@ alter table child add constraint childfk0 (parent_id) references parent]]>]]> - ˆê•û‚ÅA‚à‚µchild‚ª•¡”‚Ìparent‚ðŽ‚Ä‚é‚È‚ç‚ÎA‘½‘Α½ŠÖ˜A‚ª‘Ó–‚Å‚·B + 一方ã§ã€ã‚‚ã—childãŒè¤‡æ•°ã®parentã‚’æŒã¦ã‚‹ãªã‚‰ã°ã€å¤šå¯¾å¤šé–¢é€£ãŒå¦¥å½“ã§ã™ã€‚ @@ -1201,7 +1203,7 @@ alter table child add constraint childfk0 (parent_id) references parent]]>]]> - ƒe[ƒuƒ‹’è‹`‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B + テーブル定義ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ - parent/childŠÖŒW‚̃}ƒbƒsƒ“ƒO‚ɂ‚¢‚Ä‚Ì‚æ‚葽‚­‚Ì—á‚⊮‘S‚Ȏ臂ª•K—v‚Å‚ ‚ê‚ÎA - ‚ð‚²——‚­‚¾‚³‚¢B + parent/child関係ã®ãƒžãƒƒãƒ”ングã«ã¤ã„ã¦ã®ã‚ˆã‚Šå¤šãã®ä¾‹ã‚„完全ãªæ‰‹é †ãŒå¿…è¦ã§ã‚ã‚Œã°ã€ + ã‚’ã”覧ãã ã•ã„。 - ‚Ü‚½A‚³‚ç‚É“ÁŽê‚ÈŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚à‰Â”\‚Å‚·BŽŸ‚ÌÍ‚ÅÚ‚µ‚­q‚ׂ܂·B + ã¾ãŸã€ã•ã‚‰ã«ç‰¹æ®Šãªé–¢é€£ãƒžãƒƒãƒ”ングもå¯èƒ½ã§ã™ã€‚次ã®ç« ã§è©³ã—ãè¿°ã¹ã¾ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml b/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml index eb59be70a0..96b3f8a55c 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml @@ -1,20 +1,22 @@ - + + + - ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃}ƒbƒsƒ“ƒO + コンãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒžãƒƒãƒ”ング - ƒRƒ“ƒ|[ƒlƒ“ƒg ‚ÌŠT”O‚ÍAHibernate‚ð’Ê‚µ‚Ä—lX‚È󋵂̒†‚Å - ˆÙ‚È‚é–Ú“I‚Ì‚½‚ß‚ÉÄ—˜—p‚³‚ê‚Ü‚·B + コンãƒãƒ¼ãƒãƒ³ãƒˆ ã®æ¦‚念ã¯ã€Hibernateを通ã—ã¦æ§˜ã€…ãªçŠ¶æ³ã®ä¸­ã§ + ç•°ãªã‚‹ç›®çš„ã®ãŸã‚ã«å†åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚ - ˆË‘¶ƒIƒuƒWƒFƒNƒg + ä¾å­˜ã‚ªãƒ–ジェクト - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍAƒGƒ“ƒeƒBƒeƒB‚ÌŽQÆ‚Å‚Í‚È‚­’lŒ^‚Æ‚µ‚ĉi‘±‰»‚³‚ꂽA - •ïŠÜ‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Å‚·BƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚¢‚¤Œ¾—t‚ɂ‚¢‚Ä‚ÍAƒRƒ“ƒ|ƒWƒVƒ‡ƒ“‚Æ‚¢‚¤ - ƒIƒuƒWƒFƒNƒgŽwŒü‚ÌŠT”O‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢iƒA[ƒLƒeƒNƒ`ƒƒƒŒƒxƒ‹‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚Å‚Í‚ ‚è‚Ü‚¹‚ñjB - —Ⴆ‚ÎAˆÈ‰º‚ÌPersonƒ‚ƒfƒ‹‚̂悤‚È‚à‚Ì‚Å‚·B + コンãƒãƒ¼ãƒãƒ³ãƒˆã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å‚ç…§ã§ã¯ãªã値型ã¨ã—ã¦æ°¸ç¶šåŒ–ã•ã‚ŒãŸã€ + 包å«ã•ã‚ŒãŸã‚ªãƒ–ジェクトã§ã™ã€‚コンãƒãƒ¼ãƒãƒ³ãƒˆã¨ã„ã†è¨€è‘‰ã«ã¤ã„ã¦ã¯ã€ã‚³ãƒ³ãƒã‚¸ã‚·ãƒ§ãƒ³ã¨ã„ㆠ+ オブジェクト指å‘ã®æ¦‚念をå‚ç…§ã—ã¦ãã ã•ã„(アーキテクãƒãƒ£ãƒ¬ãƒ™ãƒ«ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã§ã¯ã‚ã‚Šã¾ã›ã‚“)。 + 例ãˆã°ã€ä»¥ä¸‹ã®Personモデルã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚ - ‚¢‚ÜAName ‚Í Person ‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚Ä - ‰i‘±‰»‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B‚±‚±‚Å Name ‚͉i‘±‰»‘®«‚ɑ΂µ‚ÄgetterA - setterƒƒ\ƒbƒh‚ð’è‹`‚µ‚Ü‚·‚ªAƒCƒ“ƒ^[ƒtƒFƒCƒX‚⎯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚·‚é•K—v‚ª - ‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚ĉº‚³‚¢B + ã„ã¾ã€Name 㯠Person ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã—㦠+ 永続化ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã“ã“㧠Name ã¯æ°¸ç¶šåŒ–属性ã«å¯¾ã—ã¦getter〠+ setterメソッドを定義ã—ã¾ã™ãŒã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚„識別å­ãƒ—ロパティを定義ã™ã‚‹å¿…è¦ãŒ + ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。 - ƒ}ƒbƒsƒ“ƒO’è‹`‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B + マッピング定義ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ @@ -91,33 +93,33 @@ ]]> - Personƒe[ƒuƒ‹‚Í pidA - birthdayA - initialA - firstA - last ƒJƒ‰ƒ€‚ðŽ‚¿‚Ü‚·B + Personテーブル㯠pid〠+ birthday〠+ initial〠+ first〠+ last カラムをæŒã¡ã¾ã™ã€‚ - ‘S‚Ä‚Ì’lŒ^‚̂悤‚ÉAƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍŽQÆ‚Ì‹¤—L‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB - Œ¾‚¢Š·‚¦‚é‚ÆA“ñl‚ÌPerson‚Í“¯‚¶–¼‘O‚ðŽ‚‚±‚Æ‚ª‚Å‚«‚Ü‚·‚ªA“ñ‚‚ÌPersonƒIƒuƒWƒFƒNƒg‚Í - "’l‚ª“¯‚¶‚¾‚¯"‚Ì•ÊX‚ÌnameƒIƒuƒWƒFƒNƒg‚ðŠÜ‚ñ‚Å‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìnull’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Í ƒAƒhƒzƒbƒN ‚Å‚·B - ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃IƒuƒWƒFƒNƒg‚ðÄ“Ç‚Ýž‚Ý‚·‚éÛAHibernate‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴJƒ‰ƒ€‚ª - null‚Å‚ ‚é‚È‚çƒRƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚ªnull‚Å‚ ‚é‚Æl‚¦‚Ü‚·B - ‚±‚ê‚Í‘å’ï‚Ìꇖâ‘è‚ ‚è‚Ü‚¹‚ñB + å…¨ã¦ã®å€¤åž‹ã®ã‚ˆã†ã«ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¯å‚ç…§ã®å…±æœ‰ã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + 言ã„æ›ãˆã‚‹ã¨ã€äºŒäººã®Personã¯åŒã˜åå‰ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ãŒã€äºŒã¤ã®Personオブジェクト㯠+ "値ãŒåŒã˜ã ã‘"ã®åˆ¥ã€…ã®nameオブジェクトをå«ã‚“ã§ã„ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + コンãƒãƒ¼ãƒãƒ³ãƒˆã®null値ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã¯ アドホック ã§ã™ã€‚ + コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚ªãƒ–ジェクトをå†èª­ã¿è¾¼ã¿ã™ã‚‹éš›ã€Hibernateã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ ãŒ + nullã§ã‚ã‚‹ãªã‚‰ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆè‡ªä½“ãŒnullã§ã‚ã‚‹ã¨è€ƒãˆã¾ã™ã€‚ + ã“ã‚Œã¯å¤§æŠµã®å ´åˆå•é¡Œã‚ã‚Šã¾ã›ã‚“。 - ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‘®«‚Í‚Ç‚ñ‚ÈHibernate‚ÌŒ^‚Å‚à\‚¢‚Ü‚¹‚ñiƒRƒŒƒNƒVƒ‡ƒ“Amany-to-oneŠÖ˜AA - ‘¼‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚È‚ÇjBƒlƒXƒg‚³‚ꂽƒRƒ“ƒ|[ƒlƒ“ƒg‚Í–Å‘½‚ÉŽg‚í‚È‚¢‚Æl‚¦‚é‚ׂ«‚Å‚Í - ‚ ‚è‚Ü‚¹‚ñ BHibernate‚Í”ñí‚É‚«‚ß‚Ìׂ©‚¢ƒIƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚ðƒTƒ|[ƒg‚·‚é‚悤‚ɈÓ}‚³‚ê‚Ä‚¢‚Ü‚·B + コンãƒãƒ¼ãƒãƒ³ãƒˆã®å±žæ€§ã¯ã©ã‚“ãªHibernateã®åž‹ã§ã‚‚構ã„ã¾ã›ã‚“(コレクションã€many-to-one関連〠+ ä»–ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãªã©ï¼‰ã€‚ãƒã‚¹ãƒˆã•ã‚ŒãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¯æ»…多ã«ä½¿ã‚ãªã„ã¨è€ƒãˆã‚‹ã¹ãã§ã¯ + ã‚ã‚Šã¾ã›ã‚“ 。Hibernateã¯éžå¸¸ã«ãã‚ã®ç´°ã‹ã„オブジェクトモデルをサãƒãƒ¼ãƒˆã™ã‚‹ã‚ˆã†ã«æ„図ã•ã‚Œã¦ã„ã¾ã™ã€‚ - <component> —v‘f‚ÍeƒGƒ“ƒeƒBƒeƒB‚Ö‚Ì‹tŽQÆ‚Æ‚µ‚ÄAƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚Ì - ‘®«‚ðƒ}ƒbƒsƒ“ƒO‚·‚é <parent> ƒTƒu—v‘f‚ðŽg—p‚Å‚«‚Ü‚·B + <component> è¦ç´ ã¯è¦ªã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®é€†å‚ç…§ã¨ã—ã¦ã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚¯ãƒ©ã‚¹ã® + 属性をマッピングã™ã‚‹ <parent> サブè¦ç´ ã‚’使用ã§ãã¾ã™ã€‚ @@ -137,12 +139,12 @@ - ]‘®‚·‚éƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“ + 従属ã™ã‚‹ã‚ªãƒ–ジェクトã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ - Hibernate‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·i—Ⴆ‚Î Name Œ^‚Ì”z—ñjB - <element> ƒ^ƒO‚ð <composite-element> ƒ^ƒO‚ÉŽæ‚è‘Ö‚¦‚邱‚Æ‚É‚æ‚è - ƒRƒ“ƒ|[ƒlƒ“ƒgƒRƒŒƒNƒVƒ‡ƒ“‚ð錾‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ï¼ˆä¾‹ãˆã° Name åž‹ã®é…列)。 + <element> ã‚¿ã‚°ã‚’ <composite-element> ã‚¿ã‚°ã«å–り替ãˆã‚‹ã“ã¨ã«ã‚ˆã‚Š + コンãƒãƒ¼ãƒãƒ³ãƒˆã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’宣言ã—ã¦ãã ã•ã„。 @@ -155,35 +157,35 @@ ]]> - ’ˆÓ: ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Ì Set ‚ð’è‹`‚µ‚½‚È‚çA - equals() ‚Æ hashCode() ‚𳂵‚­ŽÀ‘•‚·‚邱‚Æ‚ªd—v‚Å‚·B + 注æ„: コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã® Set を定義ã—ãŸãªã‚‰ã€ + equals() 㨠hashCode() ã‚’æ­£ã—ã実装ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚ - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚̓RƒŒƒNƒVƒ‡ƒ“‚ðŠÜ‚Ü‚¸AƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŠÜ‚Þ‚±‚Æ‚à‚ ‚è‚Ü‚·B - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgŽ©g‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŠÜ‚ñ‚Å‚¢‚éê‡‚Í <nested-composite-element> ‚ð - Žg—p‚µ‚Ä‚­‚¾‚³‚¢BƒRƒ“ƒ|[ƒlƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“Ž©g‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŽ‚‚Ƃ¢‚¤ƒP[ƒX‚Í‚ß‚Á‚½‚É‚ ‚è‚Ü‚¹‚ñB - ‚±‚Ì’iŠK‚Ü‚Å‚ÉAone-to-manyŠÖ˜A‚Ì•û‚ª‚æ‚è“KØ‚Å‚È‚¢‚©‚Ænl‚µ‚Ä‚­‚¾‚³‚¢B - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚ðƒGƒ“ƒeƒBƒeƒB‚Æ‚µ‚ÄÄ“xƒ‚ƒfƒŠƒ“ƒO‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B - ‚µ‚©‚µ‚±‚ê‚ÍJava‚̃‚ƒfƒ‹‚Æ‚µ‚Ä‚Í“¯‚¶‚Å‚·‚ªAƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Ɖi‘±“®ì‚Í‚Ü‚¾ŽáŠ±ˆÙ‚Ȃ邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’å«ã¾ãšã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’å«ã‚€ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚ + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆè‡ªèº«ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’å«ã‚“ã§ã„ã‚‹å ´åˆã¯ <nested-composite-element> ã‚’ + 使用ã—ã¦ãã ã•ã„。コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³è‡ªèº«ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’æŒã¤ã¨ã„ã†ã‚±ãƒ¼ã‚¹ã¯ã‚ã£ãŸã«ã‚ã‚Šã¾ã›ã‚“。 + ã“ã®æ®µéšŽã¾ã§ã«ã€one-to-many関連ã®æ–¹ãŒã‚ˆã‚Šé©åˆ‡ã§ãªã„ã‹ã¨ç†Ÿè€ƒã—ã¦ãã ã•ã„。 + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã‚’エンティティã¨ã—ã¦å†åº¦ãƒ¢ãƒ‡ãƒªãƒ³ã‚°ã—ã¦ã¿ã¦ãã ã•ã„。 + ã—ã‹ã—ã“ã‚Œã¯Javaã®ãƒ¢ãƒ‡ãƒ«ã¨ã—ã¦ã¯åŒã˜ã§ã™ãŒã€ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ¢ãƒ‡ãƒ«ã¨æ°¸ç¶šå‹•ä½œã¯ã¾ã è‹¥å¹²ç•°ãªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‚à‚µ <set> ‚ðŽg—p‚·‚é‚Ì‚Å‚ ‚ê‚ÎAƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚̃}ƒbƒsƒ“ƒO‚ªnull’l‚ª‰Â”\‚È - ‘®«‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BHibernate‚̓IƒuƒWƒFƒNƒg‚ð휂·‚é‚Æ‚«A - ƒŒƒR[ƒh‚ðŽ¯•Ê‚·‚邽‚ß‚É‚»‚ꂼ‚ê‚̃Jƒ‰ƒ€‚Ì’l‚ðŽg—p‚·‚é•K—v‚ª‚ ‚邽‚ßAnull’l‚ðŽ‚‚±‚Æ‚ªo—ˆ‚Ü‚¹‚ñ - iƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgƒe[ƒuƒ‹‚É‚Í•Ê‚ÌŽåƒL[ƒJƒ‰ƒ€‚Í‚ ‚è‚Ü‚¹‚ñjB - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Énot-null‚Ì‘®«‚Ì‚Ý‚ðŽg—p‚·‚é‚©A‚Ü‚½‚Í <list>A<map>A - <bag>A<idbag> ‚ð‘I‘ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + ã‚‚ã— <set> を使用ã™ã‚‹ã®ã§ã‚ã‚Œã°ã€ã‚³ãƒ³ãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã®ãƒžãƒƒãƒ”ングãŒnull値ãŒå¯èƒ½ãª + 属性をサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。Hibernateã¯ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã¨ã〠+ レコードを識別ã™ã‚‹ãŸã‚ã«ãã‚Œãžã‚Œã®ã‚«ãƒ©ãƒ ã®å€¤ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€null値をæŒã¤ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ + (コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆãƒ†ãƒ¼ãƒ–ルã«ã¯åˆ¥ã®ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã¯ã‚ã‚Šã¾ã›ã‚“)。 + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã«not-nullã®å±žæ€§ã®ã¿ã‚’使用ã™ã‚‹ã‹ã€ã¾ãŸã¯ <list>ã€<map>〠+ <bag>ã€<idbag> ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Ì“Á•Ê‚ȃP[ƒX‚Æ‚µ‚ÄAƒlƒXƒg‚³‚ꂽ <many-to-one> ‘®«‚ðŽ‚ - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚ª‚ ‚è‚Ü‚·B - ‚±‚̃}ƒbƒsƒ“ƒO‚ÍAƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgƒNƒ‰ƒX‚𑽑Α½ŠÖ˜Aƒe[ƒuƒ‹‚Ì - —]•ª‚ȃJƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - ŽŸ‚Ì—á‚Í Order ‚©‚çAItem ‚Ö‚Ì‘½‘Α½ŠÖ˜A‚Å‚·B - purchaseDateApriceAquantity ‚ÍŠÖ˜A‚Ì‘®«‚Æ‚È‚è‚Ü‚·B + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã®ç‰¹åˆ¥ãªã‚±ãƒ¼ã‚¹ã¨ã—ã¦ã€ãƒã‚¹ãƒˆã•ã‚ŒãŸ <many-to-one> 属性をæŒã¤ + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã®ãƒžãƒƒãƒ”ングã¯ã€ã‚³ãƒ³ãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã‚¯ãƒ©ã‚¹ã‚’多対多関連テーブル㮠+ 余分ãªã‚«ãƒ©ãƒ ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ã€‚ + 次ã®ä¾‹ã¯ Order ã‹ã‚‰ã€Item ã¸ã®å¤šå¯¾å¤šé–¢é€£ã§ã™ã€‚ + purchaseDateã€priceã€quantity ã¯é–¢é€£ã®å±žæ€§ã¨ãªã‚Šã¾ã™ã€‚ @@ -200,14 +202,14 @@ ]]> - ‚à‚¿‚ë‚ñA‘o•ûŒüŠÖ˜A‚̃iƒrƒQ[ƒVƒ‡ƒ“‚Ì‚½‚ß‚É”½‘Α¤‚©‚çpurchase‚Ö‚ÌŽQÆ‚ðì‚邱‚Æ‚Ío—ˆ‚Ü‚¹‚ñB - ƒRƒ“ƒ|[ƒlƒ“ƒg‚Í’lŒ^‚Å‚ ‚èAŽQÆ‚ð‹¤—L‚Å‚«‚È‚¢‚±‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B - ˆê‚Â‚Ì Purchase ‚͈ê‚Â‚Ì Order ‚Ìset‚É‘¶Ý‚Å‚«‚Ü‚·‚ªA - “¯Žž‚É Item ‚©‚çŽQÆ‚·‚邱‚Æ‚Ío—ˆ‚Ü‚¹‚ñB + ã‚‚ã¡ã‚ã‚“ã€åŒæ–¹å‘関連ã®ãƒŠãƒ“ゲーションã®ãŸã‚ã«å対å´ã‹ã‚‰purchaseã¸ã®å‚照を作るã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“。 + コンãƒãƒ¼ãƒãƒ³ãƒˆã¯å€¤åž‹ã§ã‚ã‚Šã€å‚照を共有ã§ããªã„ã“ã¨ã‚’覚ãˆã¦ãŠã„ã¦ãã ã•ã„。 + 一ã¤ã® Purchase ã¯ä¸€ã¤ã® Order ã®setã«å­˜åœ¨ã§ãã¾ã™ãŒã€ + åŒæ™‚ã« Item ã‹ã‚‰å‚ç…§ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“。 - 3€ŠÖ˜Ai‚ ‚é‚¢‚Í4€‚È‚Çj‚à‰Â”\‚Å‚·B + 3項関連(ã‚ã‚‹ã„ã¯4é …ãªã©ï¼‰ã‚‚å¯èƒ½ã§ã™ã€‚ @@ -222,61 +224,61 @@ ]]> - ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŠÖ˜A‚Æ‚µ‚ÄA - “¯‚¶ƒVƒ“ƒ^ƒbƒNƒX‚ðŽg‚Á‚Ä‚¢‚éƒNƒGƒŠ“à‚ÅŽg—p‚Å‚«‚Ü‚·B + コンãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã¯ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®é–¢é€£ã¨ã—ã¦ã€ + åŒã˜ã‚·ãƒ³ã‚¿ãƒƒã‚¯ã‚¹ã‚’使ã£ã¦ã„るクエリ内ã§ä½¿ç”¨ã§ãã¾ã™ã€‚ - Map‚̃Cƒ“ƒfƒbƒNƒX‚Æ‚µ‚ẴRƒ“ƒ|[ƒlƒ“ƒg + Mapã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã—ã¦ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ - <composite-map-key> —v‘f‚Í Map ‚̃L[‚Æ‚µ‚ăRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚ð - ƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·BƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒXã‚Å hashCode() ‚Æ equals() - ‚ð³Šm‚ɃI[ƒo[ƒ‰ƒCƒh‚µ‚Ä‚­‚¾‚³‚¢B + <composite-map-key> è¦ç´ ã¯ Map ã®ã‚­ãƒ¼ã¨ã—ã¦ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚¯ãƒ©ã‚¹ã‚’ + マッピングã—ã¾ã™ã€‚コンãƒãƒ¼ãƒãƒ³ãƒˆã‚¯ãƒ©ã‚¹ä¸Šã§ hashCode() 㨠equals() + を正確ã«ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ãã ã•ã„。 - •¡‡Ž¯•ÊŽq‚Æ‚µ‚ẴRƒ“ƒ|[ƒlƒ“ƒg + 複åˆè­˜åˆ¥å­ã¨ã—ã¦ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ÌŽ¯•ÊŽq‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚͈ȉº‚ÌðŒ‚ð–ž‚½‚·•K—v‚ª‚ ‚è‚Ü‚·B + コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’エンティティクラスã®è­˜åˆ¥å­ã¨ã—ã¦ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + コンãƒãƒ¼ãƒãƒ³ãƒˆã‚¯ãƒ©ã‚¹ã¯ä»¥ä¸‹ã®æ¡ä»¶ã‚’満ãŸã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - java.io.Serializable ‚ðŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + java.io.Serializable を実装ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ƒf[ƒ^ƒx[ƒXã‚Ì•¡‡ƒL[‚Ì“™‰¿«‚Æ–µ‚‚Ì‚È‚¢‚悤‚ÉAequals() - ‚Æ hashCode() ‚ðÄŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + データベース上ã®è¤‡åˆã‚­ãƒ¼ã®ç­‰ä¾¡æ€§ã¨çŸ›ç›¾ã®ãªã„よã†ã«ã€equals() + 㨠hashCode() ã‚’å†å®Ÿè£…ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ’ˆÓ: Hibernate3‚É‚¨‚¢‚ÄA2”Ô–Ú‚ÌðŒ‚Íâ‘ΓI‚ÈðŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ‚µ‚©‚µ‚Æ‚É‚©‚­ðŒ‚ð–ž‚½‚µ‚Ä‚­‚¾‚³‚¢B + 注æ„: Hibernate3ã«ãŠã„ã¦ã€2番目ã®æ¡ä»¶ã¯çµ¶å¯¾çš„ãªæ¡ä»¶ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã—ã‹ã—ã¨ã«ã‹ãæ¡ä»¶ã‚’満ãŸã—ã¦ãã ã•ã„。 - •¡‡ƒL[‚𶬂·‚邽‚ß‚É IdentifierGenerator ‚ðŽg—p‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ‘ã‚í‚è‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽ¯•ÊŽq‚ðŠ„‚è“–‚Ä‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB + 複åˆã‚­ãƒ¼ã‚’生æˆã™ã‚‹ãŸã‚ã« IdentifierGenerator を使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + 代ã‚ã‚Šã«ã‚¢ãƒ—リケーションãŒè­˜åˆ¥å­ã‚’割り当ã¦ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。 - ’Êí‚Ì <id> 錾‚Ì‘ã‚í‚è‚É <composite-id> ƒ^ƒO‚ð - iƒlƒXƒg‚³‚ꂽ <key-property> ‘®«‚Æ‹¤‚ÉjŽg‚¢‚Ü‚·B - ˆÈ‰º‚Ì—á‚Å‚ÍAOrderLine ƒNƒ‰ƒX‚Í Order ‚Ìi•¡‡jŽåƒL[‚É - ˆË‘¶‚µ‚½ŽåƒL[‚ðŽ‚Á‚Ä‚¢‚Ü‚·B + 通常㮠<id> 宣言ã®ä»£ã‚ã‚Šã« <composite-id> ã‚¿ã‚°ã‚’ + (ãƒã‚¹ãƒˆã•ã‚ŒãŸ <key-property> 属性ã¨å…±ã«ï¼‰ä½¿ã„ã¾ã™ã€‚ + 以下ã®ä¾‹ã§ã¯ã€OrderLine クラス㯠Order ã®ï¼ˆè¤‡åˆï¼‰ä¸»ã‚­ãƒ¼ã« + ä¾å­˜ã—ãŸä¸»ã‚­ãƒ¼ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ @@ -299,9 +301,9 @@ ]]> - ‚±‚Ì‚Æ‚«AOrderLine ƒe[ƒuƒ‹‚ÖŠÖ˜A‚·‚éŠO•”ƒL[‚à‚Ü‚½•¡‡‚Å‚·B - ‘¼‚̃Nƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚Å‚±‚ê‚ð錾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - OrderLine ‚Ö‚ÌŠÖ˜A‚ÍŽŸ‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + ã“ã®ã¨ãã€OrderLine テーブルã¸é–¢é€£ã™ã‚‹å¤–部キーもã¾ãŸè¤‡åˆã§ã™ã€‚ + ä»–ã®ã‚¯ãƒ©ã‚¹ã®ãƒžãƒƒãƒ”ングã§ã“れを宣言ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + OrderLine ã¸ã®é–¢é€£ã¯æ¬¡ã®ã‚ˆã†ã«ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -312,13 +314,13 @@ ]]> - i<column> ƒ^ƒO‚Í‚Ç‚±‚Å‚ ‚Á‚Ä‚à column ‘®«‚Ì - ‘ã‚í‚è‚É‚È‚è‚Ü‚·Bj + (<column> ã‚¿ã‚°ã¯ã©ã“ã§ã‚ã£ã¦ã‚‚ column 属性㮠+ 代ã‚ã‚Šã«ãªã‚Šã¾ã™ã€‚) - OrderLine ‚Ö‚Ì many-to-many ŠÖ˜A‚à - •¡‡ŠO•”ƒL[‚ðŽg‚¢‚Ü‚·B + OrderLine ã¸ã® many-to-many 関連も + 複åˆå¤–部キーを使ã„ã¾ã™ã€‚ @@ -331,8 +333,8 @@ ]]> - Order ‚É‚ ‚é OrderLine ‚̃RƒŒƒNƒVƒ‡ƒ“‚Í - ŽŸ‚Ì‚à‚Ì‚ðŽg—p‚µ‚Ü‚·B + Order ã«ã‚ã‚‹ OrderLine ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ + 次ã®ã‚‚ã®ã‚’使用ã—ã¾ã™ã€‚ @@ -344,12 +346,12 @@ ]]> - i<one-to-many> ‘®«‚ÍA—á‚É‚æ‚Á‚ăJƒ‰ƒ€‚ð錾‚µ‚Ü‚¹‚ñj + (<one-to-many> 属性ã¯ã€ä¾‹ã«ã‚ˆã£ã¦ã‚«ãƒ©ãƒ ã‚’宣言ã—ã¾ã›ã‚“) - OrderLine Ž©g‚ªƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Á‚Ä‚¢‚éê‡A - “¯Žž‚É•¡‡ŠO•”ƒL[‚àŽ‚Á‚Ä‚¢‚Ü‚·B + OrderLine 自身ãŒã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’æŒã£ã¦ã„ã‚‹å ´åˆã€ + åŒæ™‚ã«è¤‡åˆå¤–部キーもæŒã£ã¦ã„ã¾ã™ã€‚ @@ -371,10 +373,10 @@ - “®“IƒRƒ“ƒ|[ƒlƒ“ƒg + 動的コンãƒãƒ¼ãƒãƒ³ãƒˆ - Map Œ^‚̃vƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚à‰Â”\‚Å‚·B + Map åž‹ã®ãƒ—ロパティã®ãƒžãƒƒãƒ”ングもå¯èƒ½ã§ã™ã€‚ @@ -384,11 +386,11 @@ ]]> - <dynamic-component> ƒ}ƒbƒsƒ“ƒO‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Í <component> - ‚Æ“¯ˆê‚Ì‚à‚Ì‚Å‚·B‚±‚ÌŽí‚̃}ƒbƒsƒ“ƒO‚Ì—˜“_‚ÍAƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ì•ÒW‚É‚æ‚èA”z’uŽž‚Ébean‚Ì‘®«‚ð - Œˆ’è‚Å‚«‚é“_‚Å‚·B‚Ü‚½ADOMƒp[ƒT‚ð—˜—p‚µ‚ÄAƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̃‰ƒ“ƒ^ƒCƒ€‘€ì‚ª‰Â”\‚Å‚·B - ‚³‚ç‚ÉAConfiguration ƒIƒuƒWƒFƒNƒgŒo—R‚ÅHibernate‚̃Rƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“Žž‚̃ƒ^ƒ‚ƒfƒ‹‚É - ƒAƒNƒZƒXi‚Ü‚½‚Í•ÏXj‚ª‰Â”\‚Å‚·B + <dynamic-component> マッピングã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã¯ <component> + ã¨åŒä¸€ã®ã‚‚ã®ã§ã™ã€‚ã“ã®ç¨®ã®ãƒžãƒƒãƒ”ングã®åˆ©ç‚¹ã¯ã€ãƒžãƒƒãƒ”ングドキュメントã®ç·¨é›†ã«ã‚ˆã‚Šã€é…置時ã«beanã®å±žæ€§ã‚’ + 決定ã§ãる点ã§ã™ã€‚ã¾ãŸã€DOMパーサを利用ã—ã¦ã€ãƒžãƒƒãƒ”ングドキュメントã®ãƒ©ãƒ³ã‚¿ã‚¤ãƒ æ“作ãŒå¯èƒ½ã§ã™ã€‚ + ã•ã‚‰ã«ã€Configuration オブジェクト経由ã§Hibernateã®ã‚³ãƒ³ãƒ•ã‚£ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³æ™‚ã®ãƒ¡ã‚¿ãƒ¢ãƒ‡ãƒ«ã« + アクセス(ã¾ãŸã¯å¤‰æ›´ï¼‰ãŒå¯èƒ½ã§ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml b/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml index d603c31de4..c6568167e1 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml @@ -1,30 +1,32 @@ - + + + - Ý’è + 設定 - Hibernate‚Í‚³‚Ü‚´‚܂Ȋ‹«‚Å“®ì‚·‚é‚悤‚ɃfƒUƒCƒ“‚³‚ê‚Ä‚¢‚邽‚ßA”ñí‚É‘½‚­‚ÌÝ’è—v‘f‚ª‚ ‚è‚Ü‚·B - K‚¢‚È‚±‚Æ‚ÉAHibernate‚ÍAŒöŠJ‚³‚ê‚Ä‚¢‚éƒpƒbƒP[ƒW‚Ì etc/ ƒtƒHƒ‹ƒ_‚Ì hibernate.properties - ‚ÉA‚Ù‚Æ‚ñ‚Ç‚ÌÝ’è—v‘f‚Ì“K؂ȃfƒtƒHƒ‹ƒg’l‚ª‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B - ‚±‚Ì hibernate.properties ‚ðƒNƒ‰ƒXƒpƒX‚Éݒ肵AÝ’è—v‘f‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚邾‚¯‚Å‚·B + Hibernateã¯ã•ã¾ã–ã¾ãªç’°å¢ƒã§å‹•ä½œã™ã‚‹ã‚ˆã†ã«ãƒ‡ã‚¶ã‚¤ãƒ³ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€éžå¸¸ã«å¤šãã®è¨­å®šè¦ç´ ãŒã‚ã‚Šã¾ã™ã€‚ + 幸ã„ãªã“ã¨ã«ã€Hibernateã¯ã€å…¬é–‹ã•ã‚Œã¦ã„るパッケージ㮠etc/ フォルダ㮠hibernate.properties + ã«ã€ã»ã¨ã‚“ã©ã®è¨­å®šè¦ç´ ã®é©åˆ‡ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒè¨˜è¿°ã•ã‚Œã¦ã„ã¾ã™ã€‚ + ã“ã® hibernate.properties をクラスパスã«è¨­å®šã—ã€è¨­å®šè¦ç´ ã‚’カスタマイズã™ã‚‹ã ã‘ã§ã™ã€‚ - ƒvƒƒOƒ‰ƒ€ã‚ÌÝ’è + プログラム上ã®è¨­å®š - org.hibernate.cfg.Configuration ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - Java‚ÌŒ^‚ÆSQLƒf[ƒ^ƒx[ƒX‚̃}ƒbƒsƒ“ƒOî•ñ‚ð‚·‚×‚ÄŽ‚Á‚Ä‚¢‚Ü‚·B - The Configuration ‚ÍAi•s•Ï‚Ìj SessionFactory - ‚𶬂·‚é‚Æ‚«‚ÉŽg—p‚µ‚Ü‚·B - •¡”‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µAƒ}ƒbƒsƒ“ƒOî•ñ‚É‚µ‚Ü‚·B + org.hibernate.cfg.Configuration ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + Javaã®åž‹ã¨SQLデータベースã®ãƒžãƒƒãƒ”ング情報をã™ã¹ã¦æŒã£ã¦ã„ã¾ã™ã€‚ + The Configuration ã¯ã€ï¼ˆä¸å¤‰ã®ï¼‰ SessionFactory + を生æˆã™ã‚‹ã¨ãã«ä½¿ç”¨ã—ã¾ã™ã€‚ + 複数ã®XMLマッピングファイルを変æ›ã—ã€ãƒžãƒƒãƒ”ング情報ã«ã—ã¾ã™ã€‚ - ’ÊíAConfiguration ƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA“Á’è‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹ - ‚É‚æ‚Á‚Ä’¼Ú‰Šú‰»‚³‚ê‚Ü‚·B‚à‚µAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ªƒNƒ‰ƒXƒpƒX‚Éݒ肳‚ê‚Ä‚¢‚éê‡A - ŽŸ‚̃ƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B addResource() : + 通常ã€Configuration インスタンスã¯ã€ç‰¹å®šã®XMLマッピングファイル + ã«ã‚ˆã£ã¦ç›´æŽ¥åˆæœŸåŒ–ã•ã‚Œã¾ã™ã€‚ã‚‚ã—ã€ãƒžãƒƒãƒ”ングファイルãŒã‚¯ãƒ©ã‚¹ãƒ‘スã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€ + 次ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã£ã¦ãã ã•ã„。 addResource() : - ‘ã‘ÖˆÄ(‚±‚¿‚ç‚Ì‚Ù‚¤‚ª—Ç‚¢‚Æ‚«‚à‚ ‚è‚Ü‚·)‚Æ‚µ‚ă}ƒbƒsƒ“ƒOƒNƒ‰ƒX‚ðŽw’è‚·‚é•û–@‚à‚ ‚è‚Ü‚·BHibernate‚ÉAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð - Œ©‚‚¯‚³‚¹‚Ä‚­‚¾‚³‚¢F + 代替案(ã“ã¡ã‚‰ã®ã»ã†ãŒè‰¯ã„ã¨ãã‚‚ã‚ã‚Šã¾ã™)ã¨ã—ã¦ãƒžãƒƒãƒ”ングクラスを指定ã™ã‚‹æ–¹æ³•ã‚‚ã‚ã‚Šã¾ã™ã€‚Hibernateã«ã€ãƒžãƒƒãƒ”ングファイルを + 見ã¤ã‘ã•ã›ã¦ãã ã•ã„: - Hibernate‚ÍAƒNƒ‰ƒXƒpƒX‚É‚ ‚éˆÈ‰º‚̂悤‚È–¼‘O‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðŒ©‚Â‚¯‚Ü‚·B - /org/hibernate/auction/Item.hbm.xml A - /org/hibernate/auction/Bid.hbm.xml B - ‚±‚Ì•û–@‚¾‚ÆAƒn[ƒhƒR[ƒfƒBƒ“ƒO‚³‚ꂽƒtƒ@ƒCƒ‹–¼‚ð”rœ‚Å‚«‚Ü‚·B + Hibernateã¯ã€ã‚¯ãƒ©ã‚¹ãƒ‘スã«ã‚る以下ã®ã‚ˆã†ãªåå‰ã®ãƒžãƒƒãƒ”ングファイルを見ã¤ã‘ã¾ã™ã€‚ + /org/hibernate/auction/Item.hbm.xml 〠+ /org/hibernate/auction/Bid.hbm.xml 。 + ã“ã®æ–¹æ³•ã ã¨ã€ãƒãƒ¼ãƒ‰ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«åを排除ã§ãã¾ã™ã€‚ - Configuration ‚ÍAÝ’èƒvƒƒpƒeƒB‚ðŽw’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·F + Configuration ã¯ã€è¨­å®šãƒ—ロパティを指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼š - Hibernate‚ÉÝ’èƒvƒƒpƒeƒB‚ð’Ê‚·•û–@‚Í1‚‚ł͂ ‚è‚Ü‚¹‚ñB - ‚³‚Ü‚´‚܂ȃIƒvƒVƒ‡ƒ“‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·F + Hibernateã«è¨­å®šãƒ—ロパティを通ã™æ–¹æ³•ã¯1ã¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã•ã¾ã–ã¾ãªã‚ªãƒ—ションを用æ„ã—ã¦ã„ã¾ã™ï¼š - java.util.Properties ƒCƒ“ƒXƒ^ƒ“ƒX‚ð - Configuration.setProperties() ‚É“n‚µ‚Ü‚·B + java.util.Properties インスタンスを + Configuration.setProperties() ã«æ¸¡ã—ã¾ã™ã€‚ - hibernate.properties ‚ð - ƒNƒ‰ƒXƒpƒX‚̃‹[ƒgƒfƒBƒŒƒNƒgƒŠ‚É’u‚«‚Ü‚·B + hibernate.properties ã‚’ + クラスパスã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç½®ãã¾ã™ã€‚ - System ƒvƒƒpƒeƒB‚ª - java -Dproperty=value ‚ðŽg‚¤‚悤‚Éݒ肵‚Ü‚·B + System プロパティ㌠+ java -Dproperty=value を使ã†ã‚ˆã†ã«è¨­å®šã—ã¾ã™ã€‚ - <property> —v‘f‚ð - hibernate.cfg.xml iŒãqj‚Éݒ肵‚Ü‚·B + <property> è¦ç´ ã‚’ + hibernate.cfg.xml (後述)ã«è¨­å®šã—ã¾ã™ã€‚ - ¡‚·‚®Žn‚ß‚½‚¢‚Ì‚È‚çAhibernate.properties - ‚ðŽg‚¤‚Ì‚ªˆê”Ô‚Ì‹ß“¹‚Å‚·B + 今ã™ã始ã‚ãŸã„ã®ãªã‚‰ã€hibernate.properties + を使ã†ã®ãŒä¸€ç•ªã®è¿‘é“ã§ã™ã€‚ - Configuration ‚ÍA‹N“®Žž‚É‚¾‚¯‚ ‚éƒIƒuƒWƒFƒNƒg‚Å‚ ‚èA - ˆê“x SessionFactory ‚𶬂µ‚½Œã‚ÍA”jŠü‚³‚ê‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚·B + Configuration ã¯ã€èµ·å‹•æ™‚ã«ã ã‘ã‚るオブジェクトã§ã‚り〠+ 一度 SessionFactory を生æˆã—ãŸå¾Œã¯ã€ç ´æ£„ã•ã‚Œã‚‹ã“ã¨ã‚’æ„図ã—ã¦ã„ã¾ã™ã€‚ - SessionFactory‚ðŽæ“¾‚·‚é + SessionFactoryã‚’å–å¾—ã™ã‚‹ - Configuration ‚ª‚·‚ׂẴ}ƒbƒsƒ“ƒOî•ñ‚ð‰ðÍ‚µ‚½‚çA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA Session ƒtƒ@ƒNƒgƒŠƒCƒ“ƒXƒ^ƒ“ƒX‚ðŽæ“¾‚µ‚Ü‚·B - ‚±‚ÌSessionFactory‚ÍAHibernate‚ðŽg—p‚·‚é‚·‚ׂẴXƒŒƒbƒh‚Å‹¤—L‚³‚ê‚é‚ׂ«‚Å‚·B + Configuration ãŒã™ã¹ã¦ã®ãƒžãƒƒãƒ”ング情報を解æžã—ãŸã‚‰ã€ + アプリケーションã¯ã€ Session ファクトリインスタンスをå–å¾—ã—ã¾ã™ã€‚ + ã“ã®SessionFactoryã¯ã€Hibernateを使用ã™ã‚‹ã™ã¹ã¦ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§å…±æœ‰ã•ã‚Œã‚‹ã¹ãã§ã™ã€‚ - Hibernate‚ÍA SessionFactory ‚ð•¡”¶¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚ê‚ÍA•¡”‚̃f[ƒ^ƒx[ƒX‚ðŽg—p‚·‚éꇂɕ֗˜‚Å‚·B + Hibernateã¯ã€ SessionFactory を複数生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã‚Œã¯ã€è¤‡æ•°ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’使用ã™ã‚‹å ´åˆã«ä¾¿åˆ©ã§ã™ã€‚ - JDBCƒRƒlƒNƒVƒ‡ƒ“ + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ - ’ÊíAŠJ”­ŽÒ‚Í SessionFactory ‚𶬂µASessionFactory‚ÅJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒv[ƒŠƒ“ƒO‚µ‚½‚¢‚Æl‚¦‚Ü‚·B - ‚»‚̃Aƒvƒ[ƒ`‚ðÌ—p‚·‚éê‡A’Pƒ‚É Session ‚ðƒI[ƒvƒ“‚µ‚Ä‚­‚¾‚³‚¢F + 通常ã€é–‹ç™ºè€…㯠SessionFactory を生æˆã—ã€SessionFactoryã§JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’プーリングã—ãŸã„ã¨è€ƒãˆã¾ã™ã€‚ + ãã®ã‚¢ãƒ—ローãƒã‚’採用ã™ã‚‹å ´åˆã€å˜ç´”ã« Session をオープンã—ã¦ãã ã•ã„: - ‚±‚ꂾ‚¯‚ÅAƒv[ƒŠƒ“ƒO‚µ‚½JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä–Ú“I‚̃f[ƒ^ƒx[ƒX - ‚ɃAƒNƒZƒX‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ã“ã‚Œã ã‘ã§ã€ãƒ—ーリングã—ãŸJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã£ã¦ç›®çš„ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ + ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ‚»‚Ì‚½‚ß‚É‚ÍAJDBCƒRƒlƒNƒVƒ‡ƒ“‚̃vƒƒpƒeƒB‚ðHibernate‚ÉÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - ‚·‚ׂĂÌHibernateƒvƒƒpƒeƒB–¼‚ƃZƒ}ƒ“ƒeƒBƒNƒX‚Í - org.hibernate.cfg.Environment ƒNƒ‰ƒX‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B - ‚±‚ÌÝ’è‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“Ý’è‚Ì’†‚ňê”Ôd—v‚È‚à‚Ì‚Å‚·B + ãã®ãŸã‚ã«ã¯ã€JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ—ロパティをHibernateã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ã™ã¹ã¦ã®Hibernateプロパティåã¨ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã¯ + org.hibernate.cfg.Environment クラスã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚ + ã“ã®è¨­å®šã¯JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³è¨­å®šã®ä¸­ã§ä¸€ç•ªé‡è¦ãªã‚‚ã®ã§ã™ã€‚ - ‚à‚µAˆÈ‰º‚̃vƒƒpƒeƒB‚ðÝ’è‚·‚é‚ÆAHibernate‚̓RƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚éiƒv[ƒ‹‚àj‚½‚ß‚É - java.sql.DriverManager ‚ðŽg‚¢‚Ü‚·B + ã‚‚ã—ã€ä»¥ä¸‹ã®ãƒ—ロパティを設定ã™ã‚‹ã¨ã€Hibernateã¯ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å–å¾—ã™ã‚‹ï¼ˆãƒ—ールも)ãŸã‚ã« + java.sql.DriverManager を使ã„ã¾ã™ã€‚ - Hibernate JDBCƒvƒƒpƒeƒB + Hibernate JDBCプロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -164,7 +166,7 @@ hibernate.connection.driver_class - JDBCƒhƒ‰ƒCƒoƒNƒ‰ƒX + JDBCドライãƒã‚¯ãƒ©ã‚¹ @@ -196,7 +198,7 @@ hibernate.connection.pool_size - ƒv[ƒ‹‚·‚éƒRƒlƒNƒVƒ‡ƒ“‚ÌÅ‘å” + プールã™ã‚‹ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã®æœ€å¤§æ•° @@ -204,26 +206,26 @@
- Hibernate‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒAƒ‹ƒSƒŠƒYƒ€‚Í”ñí‚ɉ•à“I‚È‚à‚Ì‚Å‚·B - ‚±‚ê‚Í‚·‚®‚ÉŽn‚ß‚ç‚ê‚é‚悤‚É‚Æ—pˆÓ‚³‚ꂽ‚à‚Ì‚ÅA»•i‚Æ‚µ‚ÄŽg—p‚·‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñ B - ‚Ü‚½AƒpƒtƒH[ƒ}ƒ“ƒX‚̃eƒXƒg‚Ì‚½‚ß‚Ì‚à‚Ì‚Å‚à‚ ‚è‚Ü‚¹‚ñB - Å‚‚̃pƒtƒH[ƒ}ƒ“ƒX‚ƈÀ’è«‚ðŽ‚Á‚½ƒv[ƒ‹‚ðŽÀŒ»‚µ‚½‚¯‚ê‚ÎAƒT[ƒhƒp[ƒeƒB‚̃c[ƒ‹‚ð‚¨Š©‚ß‚µ‚Ü‚·B - hibernate.connection.pool_size ƒvƒƒpƒeƒB‚É - “K؂ȃRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒTƒCƒY‚ð‹Lq‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚Ì‚Ü‚Ü‚¾‚ÆHibernate‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðŽg‚¢‚Ü‚·B - —Ⴆ‚ÎŽŸ‚̂悤‚ÉC3P0‚ðŽg‚¢‚Ü‚·B + Hibernateã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールアルゴリズムã¯éžå¸¸ã«åˆæ­©çš„ãªã‚‚ã®ã§ã™ã€‚ + ã“ã‚Œã¯ã™ãã«å§‹ã‚られるよã†ã«ã¨ç”¨æ„ã•ã‚ŒãŸã‚‚ã®ã§ã€è£½å“ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã‚’æ„図ã—ã¦ã„ã¾ã›ã‚“ 。 + ã¾ãŸã€ãƒ‘フォーマンスã®ãƒ†ã‚¹ãƒˆã®ãŸã‚ã®ã‚‚ã®ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。 + 最高ã®ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’æŒã£ãŸãƒ—ールを実ç¾ã—ãŸã‘ã‚Œã°ã€ã‚µãƒ¼ãƒ‰ãƒ‘ーティã®ãƒ„ールをãŠå‹§ã‚ã—ã¾ã™ã€‚ + hibernate.connection.pool_size プロパティ㫠+ é©åˆ‡ãªã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールサイズを記述ã—ã¦ãã ã•ã„。 + ã“ã®ã¾ã¾ã ã¨Hibernateã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールを使ã„ã¾ã™ã€‚ + 例ãˆã°æ¬¡ã®ã‚ˆã†ã«C3P0を使ã„ã¾ã™ã€‚ - C3P0‚̓I[ƒvƒ“ƒ\[ƒXJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ÅAHibernate‚Ì lib - ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B‚à‚µAhibernate.c3p0.* ƒvƒƒpƒeƒB‚ð - ƒZƒbƒg‚·‚ê‚ÎAHibernate‚ÍA C3P0ConnectionProvider ‚ðŽg‚¢‚Ü‚·B - ‚à‚µProxool‚ðŽg‚¢‚½‚¢ê‡‚ÍA hibernate.properties ƒpƒbƒP[ƒW‚ð - ŽQÆ‚µ‚½‚èAHibernate‚ÌWebƒTƒCƒg‚Å‚æ‚葽‚­‚Ìî•ñ‚ðŽæ“¾‚µ‚Ä‚­‚¾‚³‚¢B + C3P0ã¯ã‚ªãƒ¼ãƒ—ンソースJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールã§ã€Hibernateã® lib + ディレクトリã«ã‚ã‚Šã¾ã™ã€‚ã‚‚ã—ã€hibernate.c3p0.* プロパティを + セットã™ã‚Œã°ã€Hibernateã¯ã€ C3P0ConnectionProvider を使ã„ã¾ã™ã€‚ + ã‚‚ã—Proxoolを使ã„ãŸã„å ´åˆã¯ã€ hibernate.properties パッケージを + å‚ç…§ã—ãŸã‚Šã€Hibernateã®Webサイトã§ã‚ˆã‚Šå¤šãã®æƒ…報をå–å¾—ã—ã¦ãã ã•ã„。 - C3P0—p‚Ì hibernate.properties ƒtƒ@ƒCƒ‹‚ð—á‚Æ‚µ‚ÄŽ¦‚µ‚Ü‚·F + C3P0用㮠hibernate.properties ファイルを例ã¨ã—ã¦ç¤ºã—ã¾ã™ï¼š - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoã‚ÅŽg‚¤ê‡‚ÍAHibernate‚ðݒ肵A - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚çƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B - Datasource ‚ðJNDI‚É“o˜^‚µ‚Ü‚·B‚»‚µ‚Ä - ƒvƒƒpƒeƒB‚ðˆÈ‰º‚̂悤‚Éݒ肵‚Ä‚­‚¾‚³‚¢B + アプリケーションサーãƒä¸Šã§ä½¿ã†å ´åˆã¯ã€Hibernateを設定ã—〠+ アプリケーションサーãƒã‹ã‚‰ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å–å¾—ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 + Datasource ã‚’JNDIã«ç™»éŒ²ã—ã¾ã™ã€‚ãã—㦠+ プロパティを以下ã®ã‚ˆã†ã«è¨­å®šã—ã¦ãã ã•ã„。 - Hibernate ƒf[ƒ^ƒ\[ƒXƒvƒƒpƒeƒB + Hibernate データソースプロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -260,7 +262,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.datasource - ƒf[ƒ^ƒ\[ƒX‚ÌJNDI–¼ + データソースã®JNDIå @@ -268,7 +270,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.jndi.url - JNDIƒvƒƒoƒCƒ_‚ÌURL (ƒIƒvƒVƒ‡ƒ“) + JNDIプロãƒã‚¤ãƒ€ã®URL (オプション) @@ -276,7 +278,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.jndi.class - JNDIƒNƒ‰ƒX InitialContextFactory (ƒIƒvƒVƒ‡ƒ“) + JNDIクラス InitialContextFactory (オプション) @@ -284,7 +286,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.connection.username - database user (ƒIƒvƒVƒ‡ƒ“) + database user (オプション) @@ -292,7 +294,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.connection.password - database user password (ƒIƒvƒVƒ‡ƒ“) + database user password (オプション) @@ -300,61 +302,61 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚ç’ñ‹Ÿ‚³‚ꂽJNDIƒf[ƒ^ƒ\[ƒX‚ðŽg‚¤ - hibernate.properties ƒtƒ@ƒCƒ‹‚Ì—á‚ðŽ¦‚µ‚Ü‚·F + アプリケーションサーãƒã‹ã‚‰æä¾›ã•ã‚ŒãŸJNDIデータソースを使ㆠ+ hibernate.properties ファイルã®ä¾‹ã‚’示ã—ã¾ã™ï¼š - JNDIƒf[ƒ^ƒ\[ƒX‚©‚çŽæ“¾‚µ‚½JDBCƒRƒlƒNƒVƒ‡ƒ“‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Ì - ƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÉŽ©“®“I‚ÉŽQ‰Á‚µ‚Ü‚·B + JNDIデータソースã‹ã‚‰å–å¾—ã—ãŸJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã¯ã€ã‚¢ãƒ—リケーションサーãƒã® + コンテナ管ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«è‡ªå‹•çš„ã«å‚加ã—ã¾ã™ã€‚ - ”CˆÓ‚̃RƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB‚ÍA—^‚¦‚ç‚ꂽh hibernate.connnection h - ƒvƒƒpƒeƒB–¼‚É‚æ‚Á‚Ä—^‚¦‚ç‚ê‚Ü‚·B—Ⴆ‚ÎA charSet ‚ðݒ肵‚½‚¢ê‡‚ÍA - hibernate.connection.charSet ‚ðŽg‚¢‚Ü‚·B + ä»»æ„ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ロパティã¯ã€ä¸Žãˆã‚‰ã‚ŒãŸâ€ hibernate.connnection †+ プロパティåã«ã‚ˆã£ã¦ä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚例ãˆã°ã€ charSet を設定ã—ãŸã„å ´åˆã¯ã€ + hibernate.connection.charSet を使ã„ã¾ã™ã€‚ - JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚éí—ª‚ðŽ‚“Ǝ©‚̃vƒ‰ƒOƒCƒ“‚ð’è‹`‚·‚éꇂÍA - org.hibernate.connection.ConnectionProvider ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ð - ŽÀ‘•‚µ‚Ä‚­‚¾‚³‚¢B‚»‚µ‚ÄAŽÀ‘•ƒNƒ‰ƒX‚ð hibernate.connection.provider_class - ‚Éݒ肵‚Ä‚­‚¾‚³‚¢B + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å–å¾—ã™ã‚‹æˆ¦ç•¥ã‚’æŒã¤ç‹¬è‡ªã®ãƒ—ラグインを定義ã™ã‚‹å ´åˆã¯ã€ + org.hibernate.connection.ConnectionProvider インターフェイスを + 実装ã—ã¦ãã ã•ã„。ãã—ã¦ã€å®Ÿè£…クラスを hibernate.connection.provider_class + ã«è¨­å®šã—ã¦ãã ã•ã„。
- ƒIƒvƒVƒ‡ƒ“Ý’èƒvƒƒpƒeƒB + オプション設定プロパティ - ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚ÍHibernate‚Ì‹““®‚ð§Œä‚·‚é‚à‚Ì‚Å‚·B - ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í‚·‚ׂđÓ–‚ȃfƒtƒHƒ‹ƒg’l‚ª‚ ‚èA”CˆÓ‚Åݒ肵‚Ü‚·B + ã“れらã®ãƒ—ロパティã¯Hibernateã®æŒ™å‹•ã‚’制御ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ + ã“れらã®ãƒ—ロパティã¯ã™ã¹ã¦å¦¥å½“ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒã‚ã‚Šã€ä»»æ„ã§è¨­å®šã—ã¾ã™ã€‚ - ’ˆÓF‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í"ƒVƒXƒeƒ€ƒŒƒxƒ‹"‚Ì‚Ý‚Å‚·B - ƒVƒXƒeƒ€ƒŒƒxƒ‹ƒvƒƒpƒeƒB‚Í java -Dproperty=value A‚à‚µ‚­‚Í - hibernate.properties ‚Å‚Ì‚ÝÝ’è‰Â”\‚Å‚·B - ‚»‚êˆÈŠO‚ÌÝ’è•û–@‚Í ‚ ‚è‚Ü‚¹‚ñ B + 注æ„:ã“れらã®ãƒ—ロパティã¯"システムレベル"ã®ã¿ã§ã™ã€‚ + システムレベルプロパティ㯠java -Dproperty=value ã€ã‚‚ã—ã㯠+ hibernate.properties ã§ã®ã¿è¨­å®šå¯èƒ½ã§ã™ã€‚ + ãれ以外ã®è¨­å®šæ–¹æ³•ã¯ ã‚ã‚Šã¾ã›ã‚“ 。 - HibernateÝ’èƒvƒƒpƒeƒB + Hibernate設定プロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -363,10 +365,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.dialect - Hibernate Dialect ƒNƒ‰ƒX–¼‚ª“ü‚è‚Ü‚·B - ‚±‚ê‚̓ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚²‚Æ‚ÉÅ“K‰»‚³‚ꂽSQL‚𶬂µ‚Ü‚·B + Hibernate Dialect クラスåãŒå…¥ã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã”ã¨ã«æœ€é©åŒ–ã•ã‚ŒãŸSQLを生æˆã—ã¾ã™ã€‚ - —áF + 例: full.classname.of.Dialect @@ -376,11 +378,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.show_sql - ”­s‚³‚ꂽ‚·‚ׂĂÌSQL‚ðƒRƒ“ƒ\[ƒ‹‚Éo—Í‚µ‚Ü‚·B - ‚±‚ê‚̓ƒOƒJƒeƒSƒŠ‚Ì org.hibernate.SQL - ‚É debug ‚ðÝ’è‚·‚é•û–@‚Ì‘ã‘ÖŽè’i‚Å‚·B + 発行ã•ã‚ŒãŸã™ã¹ã¦ã®SQLをコンソールã«å‡ºåŠ›ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ãƒ­ã‚°ã‚«ãƒ†ã‚´ãƒªã® org.hibernate.SQL + ã« debug を設定ã™ã‚‹æ–¹æ³•ã®ä»£æ›¿æ‰‹æ®µã§ã™ã€‚ - —áF + 例: true | false @@ -390,9 +392,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.format_sql - ƒƒO‚ƃRƒ“ƒ\[ƒ‹‚ÌSQL‚ð”ü‚µ‚­•\Ž¦‚µ‚Ü‚·B + ログã¨ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã®SQLを美ã—ã表示ã—ã¾ã™ã€‚ - —áF + 例: true | false @@ -402,9 +404,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.default_schema - ¶¬‚³‚ê‚éSQL•¶‚̃e[ƒuƒ‹‚ÉÝ’è‚·‚éƒXƒL[ƒ}/ƒe[ƒuƒ‹ƒXƒy[ƒX‚Å‚·B + 生æˆã•ã‚Œã‚‹SQLæ–‡ã®ãƒ†ãƒ¼ãƒ–ルã«è¨­å®šã™ã‚‹ã‚¹ã‚­ãƒ¼ãƒž/テーブルスペースã§ã™ã€‚ - —áF + 例: SCHEMA_NAME @@ -414,9 +416,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.default_catalog - ¶¬‚³‚ê‚éSQL•¶‚̃e[ƒuƒ‹‚ÉÝ’è‚·‚éƒJƒ^ƒƒO‚Å‚·B + 生æˆã•ã‚Œã‚‹SQLæ–‡ã®ãƒ†ãƒ¼ãƒ–ルã«è¨­å®šã™ã‚‹ã‚«ã‚¿ãƒ­ã‚°ã§ã™ã€‚ - —áF + 例: CATALOG_NAME @@ -426,9 +428,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.session_factory_name - SessionFactory ‚Ͷ¬ŒãA‚±‚Ì–¼‘O‚ÅJNDI‚É“o˜^‚³‚ê‚Ü‚·B + SessionFactory ã¯ç”Ÿæˆå¾Œã€ã“ã®åå‰ã§JNDIã«ç™»éŒ²ã•ã‚Œã¾ã™ã€‚ - —áF + 例: jndi/composite/name @@ -438,12 +440,12 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.max_fetch_depth - ŠO•”Œ‹‡ƒtƒFƒbƒ`‚ÌÅ‘å[“x‚ðݒ肵‚Ü‚·BŒ‹‡‚·‚éŠÖ˜A‚Í - ‘ΈêŠÖ˜A‚Ì‚Ýiˆê‘ΈêA‘½‘Έêj‚Å‚·B - 0 ‚ðŽw’è‚·‚é‚ÆŠO•”Œ‹‡ƒtƒFƒbƒ`‚Í–³Œø‚É‚È‚è‚Ü‚·B + 外部çµåˆãƒ•ã‚§ãƒƒãƒã®æœ€å¤§æ·±åº¦ã‚’設定ã—ã¾ã™ã€‚çµåˆã™ã‚‹é–¢é€£ã¯ + 対一関連ã®ã¿ï¼ˆä¸€å¯¾ä¸€ã€å¤šå¯¾ä¸€ï¼‰ã§ã™ã€‚ + 0 を指定ã™ã‚‹ã¨å¤–部çµåˆãƒ•ã‚§ãƒƒãƒã¯ç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚ - —áF - „§‚·‚é’l‚Í 0 ‚©‚ç 3 ‚Å‚·B + 例: + 推奨ã™ã‚‹å€¤ã¯ 0 ã‹ã‚‰ 3 ã§ã™ã€‚ @@ -452,10 +454,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.default_batch_fetch_size - ŠÖ˜AƒtƒFƒbƒ`‚̃fƒtƒHƒ‹ƒgƒoƒbƒ`ƒTƒCƒY‚ðŽw’肵‚Ü‚·B + 関連フェッãƒã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒãƒƒãƒã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã€‚ - —áF - „§‚·‚é’l‚Í 4 , 8 , 16 ‚Å‚·B + 例: + 推奨ã™ã‚‹å€¤ã¯ 4 , 8 , 16 ã§ã™ã€‚ @@ -464,8 +466,8 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.default_entity_mode - SessionFactory ‚©‚çƒZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚µ‚½‚Æ‚«‚É - Žg—p‚·‚éƒGƒ“ƒeƒBƒeƒB‚̃fƒtƒHƒ‹ƒgƒ‚[ƒh‚ðݒ肵‚Ü‚·B + SessionFactory ã‹ã‚‰ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’オープンã—ãŸã¨ãã« + 使用ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ¢ãƒ¼ãƒ‰ã‚’設定ã—ã¾ã™ã€‚ dynamic-map, dom4j, pojo @@ -477,10 +479,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.order_updates - €–Ú‚ªXV‚³‚ꂽ‚Æ‚«‚ÉA•Ê‚ÌSQL‚ÅŽåƒL[‚ðXV‚·‚邱‚Æ‚ð‹­§‚µ‚Ü‚·B - ‚±‚Ìê‡A“¯ŽžŽÀs‰Â”\‚ȃVƒXƒeƒ€‚Å‚ÍA‚Ü‚ê‚ɃfƒbƒhƒƒbƒN‚ª”­¶‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B + é …ç›®ãŒæ›´æ–°ã•ã‚ŒãŸã¨ãã«ã€åˆ¥ã®SQLã§ä¸»ã‚­ãƒ¼ã‚’æ›´æ–°ã™ã‚‹ã“ã¨ã‚’強制ã—ã¾ã™ã€‚ + ã“ã®å ´åˆã€åŒæ™‚実行å¯èƒ½ãªã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã€ã¾ã‚Œã«ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ - —áF + 例: true | false @@ -490,10 +492,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.generate_statistics - —LŒø‚Ìê‡AHibernate‚̓pƒtƒH[ƒ}ƒ“ƒXƒ`ƒ…[ƒjƒ“ƒO‚É - —LŒø‚È“Œvî•ñ‚ðŽûW‚µ‚Ü‚·B + 有効ã®å ´åˆã€Hibernateã¯ãƒ‘フォーマンスãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã« + 有効ãªçµ±è¨ˆæƒ…報をåŽé›†ã—ã¾ã™ã€‚ - —áF + 例: true | false @@ -503,10 +505,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.use_identifer_rollback - —LŒø‚Ìê‡AƒIƒuƒWƒFƒNƒg‚ªíœ‚³‚ꂽ‚Æ‚«‚É - Ž¯•ÊŽqƒvƒƒpƒeƒB‚ðƒŠƒZƒbƒg‚µAƒfƒtƒHƒ‹ƒg’l‚É‚µ‚½‚à‚̂𶬂µ‚Ü‚·B + 有効ã®å ´åˆã€ã‚ªãƒ–ジェクトãŒå‰Šé™¤ã•ã‚ŒãŸã¨ãã« + 識別å­ãƒ—ロパティをリセットã—ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«ã—ãŸã‚‚ã®ã‚’生æˆã—ã¾ã™ã€‚ - —áF + 例: true | false @@ -516,10 +518,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.use_sql_comments - —LŒø‚Ìê‡ASQL“à‚ɃRƒƒ“ƒg‚𶬂µ‚Ü‚·B‚±‚ê‚̓fƒoƒbƒN‚ð—eˆÕ‚É‚µ‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Ì’l‚Í false ‚Å‚·B + 有効ã®å ´åˆã€SQL内ã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’生æˆã—ã¾ã™ã€‚ã“ã‚Œã¯ãƒ‡ãƒãƒƒã‚¯ã‚’容易ã«ã—ã¾ã™ã€‚ + デフォルトã®å€¤ã¯ false ã§ã™ã€‚ - —áF + 例: true | false @@ -529,14 +531,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- Hibernate JDBC ‚ƃRƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB + Hibernate JDBC ã¨ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -545,8 +547,8 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.fetch_size - ’l‚ª0‚Å‚È‚¢ê‡AJDBCƒtƒFƒbƒ`ƒTƒCƒY‚ðŒˆ’è‚µ‚Ü‚· - ( Statement.setFetchSize() ‚ðŒÄ‚Ñ‚Ü‚·)B + 値ãŒ0ã§ãªã„å ´åˆã€JDBCフェッãƒã‚µã‚¤ã‚ºã‚’決定ã—ã¾ã™ + ( Statement.setFetchSize() を呼ã³ã¾ã™)。 @@ -554,10 +556,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.jdbc.batch_size - ’l‚ª0‚Å‚È‚¢ê‡AHibernate‚ªJDBC2ƒoƒbƒ`XV‚ðŽg—p‚µ‚Ü‚·B + 値ãŒ0ã§ãªã„å ´åˆã€HibernateãŒJDBC2ãƒãƒƒãƒæ›´æ–°ã‚’使用ã—ã¾ã™ã€‚ - —áF - „§‚·‚é’l‚Í 5 ‚©‚ç 30 ‚Å‚·B + 例: + 推奨ã™ã‚‹å€¤ã¯ 5 ã‹ã‚‰ 30 ã§ã™ã€‚ @@ -566,13 +568,13 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.batch_versioned_data - ‚à‚µJDBCƒhƒ‰ƒCƒo‚ª executeBatch() ‚É‚æ‚Á‚ijŠm‚Ès”‚ð - •Ô‚·ê‡A‚±‚̃vƒƒpƒeƒB‚ð true ‚É‚µ‚Ä‚­‚¾‚³‚¢ - i’Êí‚Í‚±‚̃IƒvƒVƒ‡ƒ“‚ðON‚É‚µ‚Ü‚·jB - Hibernate‚ÍAŽ©“®ƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚Ì‚½‚߃oƒbƒ`DML‚ðŽg‚¢‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Ì’l‚Í false ‚Å‚·B + ã‚‚ã—JDBCドライãƒãŒ executeBatch() ã«ã‚ˆã£ã¦æ­£ç¢ºãªè¡Œæ•°ã‚’ + è¿”ã™å ´åˆã€ã“ã®ãƒ—ロパティを true ã«ã—ã¦ãã ã•ã„ + (通常ã¯ã“ã®ã‚ªãƒ—ションをONã«ã—ã¾ã™ï¼‰ã€‚ + Hibernateã¯ã€è‡ªå‹•ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ã®ãŸã‚ãƒãƒƒãƒDMLを使ã„ã¾ã™ã€‚ + デフォルトã®å€¤ã¯ false ã§ã™ã€‚ - —áF + 例: true | false @@ -582,10 +584,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.factory_class - ƒJƒXƒ^ƒ€ Batcher ‚ð‘I‚Ñ‚Ü‚·B - ‚Ù‚Æ‚ñ‚ǂ̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉA‚±‚ÌÝ’è‚Í•K—v‚ ‚è‚Ü‚¹‚ñB + カスタム Batcher ã‚’é¸ã³ã¾ã™ã€‚ + ã»ã¨ã‚“ã©ã®ã‚¢ãƒ—リケーションã«ã€ã“ã®è¨­å®šã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 - —áF + 例: classname.of.BatcherFactory @@ -595,11 +597,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.use_scrollable_resultset - ƒXƒNƒ[ƒ‹‰Â”\‚ȃŠƒUƒ‹ƒgƒZƒbƒg‚ðAHibernate‚ªŽg—p‚µ‚Ü‚·B - ‚±‚̃vƒƒpƒeƒB‚ÍAJDBCƒRƒlƒNƒVƒ‡ƒ“‚ªƒRƒlƒNƒVƒ‡ƒ“ƒƒ^ƒf[ƒ^‚ð - ƒTƒ|[ƒg‚µ‚Ä‚¢‚邱‚Æ‚ª•K{ðŒ‚É‚È‚è‚Ü‚·B + スクロールå¯èƒ½ãªãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’ã€HibernateãŒä½¿ç”¨ã—ã¾ã™ã€‚ + ã“ã®ãƒ—ロパティã¯ã€JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãŒã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ + サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã“ã¨ãŒå¿…é ˆæ¡ä»¶ã«ãªã‚Šã¾ã™ã€‚ - —áF + 例: true | false @@ -609,10 +611,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.use_streams_for_binary - JDBC‚Ö/‚©‚ç binary ‚â serializable - ‚Ì‘‚«ž‚Ý/“Ç‚Ýž‚݃XƒgƒŠ[ƒ€‚ðŽg‚¢‚Ü‚·(ƒVƒXƒeƒ€ƒŒƒxƒ‹‚̃vƒƒpƒeƒB)B + JDBCã¸/ã‹ã‚‰ binary ã‚„ serializable + ã®æ›¸ãè¾¼ã¿/読ã¿è¾¼ã¿ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’使ã„ã¾ã™(システムレベルã®ãƒ—ロパティ)。 - —áF + 例: true | false @@ -622,13 +624,13 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.jdbc.use_get_generated_keys - ‘}“ü‚ÌŒã‚ÉŽ©“®¶¬‚³‚ꂽŽåƒL[‚ðŽæ“¾‚·‚邽‚ß‚Ì - JDBC3 PreparedStatement.getGeneratedKeys() ‚ÌŽg—p‚ð—LŒø‚É‚µ‚Ü‚·B - ‚±‚ê‚ÍJDBC3+ƒhƒ‰ƒCƒo‚ÆJRE1.4+‚ð•K—v‚Æ‚µA - ‚à‚µHibernate‚ÌŽ¯•ÊŽqƒWƒFƒlƒŒ[ƒ^‚É–â‘肪”­¶‚·‚é‚悤‚È‚çfalse‚Éݒ肵‚Ä‚­‚¾‚³‚¢B - ƒfƒtƒHƒ‹ƒg‚ł̓RƒlƒNƒVƒ‡ƒ“ƒƒ^ƒf[ƒ^‚ðŽg‚¢ƒhƒ‰ƒCƒo‚Ì”\—Í‚ðŒˆ’è‚µ‚Ü‚·B + 挿入ã®å¾Œã«è‡ªå‹•ç”Ÿæˆã•ã‚ŒãŸä¸»ã‚­ãƒ¼ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® + JDBC3 PreparedStatement.getGeneratedKeys() ã®ä½¿ç”¨ã‚’有効ã«ã—ã¾ã™ã€‚ + ã“ã‚Œã¯JDBC3+ドライãƒã¨JRE1.4+ã‚’å¿…è¦ã¨ã—〠+ ã‚‚ã—Hibernateã®è­˜åˆ¥å­ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã«å•é¡ŒãŒç™ºç”Ÿã™ã‚‹ã‚ˆã†ãªã‚‰falseã«è¨­å®šã—ã¦ãã ã•ã„。 + デフォルトã§ã¯ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’使ã„ドライãƒã®èƒ½åŠ›ã‚’決定ã—ã¾ã™ã€‚ - —áF + 例: true|false @@ -638,10 +640,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.provider_class - JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðHibernate‚É’ñ‹Ÿ‚·‚é“ÆŽ©‚Ì ConnectionProvider ‚Ì - –¼‘O‚ðŽw’肵‚Ü‚·B + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’Hibernateã«æä¾›ã™ã‚‹ç‹¬è‡ªã® ConnectionProvider ã® + åå‰ã‚’指定ã—ã¾ã™ã€‚ - —áF + 例: classname.of.ConnectionProvider @@ -651,11 +653,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.isolation - JDBCƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£ƒŒƒxƒ‹‚ðݒ肵‚Ü‚·B - ‘Ó–‚È’l‚𒲂ׂ邽‚ß‚É‚Í java.sql.Connection ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B - ‚µ‚©‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªA‚·‚ׂĂ̕ª—£ƒŒƒxƒ‹‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚Æ‚ÍŒÀ‚è‚Ü‚¹‚ñB + JDBCトランザクション分離レベルを設定ã—ã¾ã™ã€‚ + 妥当ãªå€¤ã‚’調ã¹ã‚‹ãŸã‚ã«ã¯ java.sql.Connection ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。 + ã—ã‹ã—使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã€ã™ã¹ã¦ã®åˆ†é›¢ãƒ¬ãƒ™ãƒ«ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã¨ã¯é™ã‚Šã¾ã›ã‚“。 - —áF + 例: 1, 2, 4, 8 @@ -665,9 +667,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.autocommit - ƒv[ƒ‹‚³‚ê‚Ä‚¢‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÌŽ©“®ƒRƒ~ƒbƒg‚ð—LŒø‚É‚·‚éi”ñ„§jB + プールã•ã‚Œã¦ã„ã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã®è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆã‚’有効ã«ã™ã‚‹ï¼ˆéžæŽ¨å¥¨ï¼‰ã€‚ - —áF + 例: true | false @@ -677,28 +679,28 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.release_mode - Hibernate‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚·‚é‚©‚ðŽw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í - ƒZƒbƒVƒ‡ƒ“‚ª–¾Ž¦“I‚ɃNƒ[ƒY‚Ü‚½‚ÍØ’f‚³‚ê‚Ä‚àƒRƒlƒNƒVƒ‡ƒ“‚Í•ÛŽ‚µ‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ÌJTAƒf[ƒ^ƒ\[ƒX‚Ìê‡A - ‚·‚ׂĂÌJDBCƒR[ƒ‹‚ÌŒãA‹­§“I‚ɃRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚·‚邽‚ß‚É after_statement ‚ð - Žg‚Á‚Ä‚­‚¾‚³‚¢B - ”ñJTAƒRƒlƒNƒVƒ‡ƒ“‚Ìê‡AŠeƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªI—¹‚µ‚½‚Æ‚«‚É after_transaction - ‚ðŽg‚¢AƒRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚µ‚Ä‚­‚¾‚³‚¢B - auto ‚É‚·‚é‚ÆA - JTA‚âCMTƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ìê‡A after_statement ‚ŃNƒ[ƒY‚µA - JDBCƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ìê‡A after_transaction ‚ŃNƒ[ƒY‚µ‚Ü‚·B + HibernateãŒJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’リリースã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚デフォルトã§ã¯ + セッションãŒæ˜Žç¤ºçš„ã«ã‚¯ãƒ­ãƒ¼ã‚ºã¾ãŸã¯åˆ‡æ–­ã•ã‚Œã¦ã‚‚コãƒã‚¯ã‚·ãƒ§ãƒ³ã¯ä¿æŒã—ã¾ã™ã€‚ + アプリケーションサーãƒã®JTAデータソースã®å ´åˆã€ + ã™ã¹ã¦ã®JDBCコールã®å¾Œã€å¼·åˆ¶çš„ã«ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’リリースã™ã‚‹ãŸã‚ã« after_statement ã‚’ + 使ã£ã¦ãã ã•ã„。 + éžJTAコãƒã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã€å„トランザクションãŒçµ‚了ã—ãŸã¨ãã« after_transaction + を使ã„ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’リリースã—ã¦ãã ã•ã„。 + auto ã«ã™ã‚‹ã¨ã€ + JTAã‚„CMTトランザクションã®å ´åˆã€ after_statement ã§ã‚¯ãƒ­ãƒ¼ã‚ºã—〠+ JDBCトランザクションã®å ´åˆã€ after_transaction ã§ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã™ã€‚ - —áF + 例: auto (default) | on_close | after_transaction | after_statement - ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚±‚ÌÝ’è‚Í SessionFactory.openSession ‚©‚ç - Žæ“¾‚µ‚½ Session ‚¾‚¯‚ÉŒø‰Ê‚ª‚ ‚è‚Ü‚·B - SessionFactory.getCurrentSession ‚ð’Ê‚¶‚Ď擾‚µ‚½ - Session ‚Å‚ÍACurrentSessionContext - ‚ÌŽÀ‘•‚É‚æ‚Á‚ÄAƒRƒlƒNƒVƒ‡ƒ“‚̃ŠƒŠ[ƒXƒ‚[ƒh‚ðݒ肵‚Ü‚·B - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 注æ„ã—ã¦ãã ã•ã„。ã“ã®è¨­å®šã¯ SessionFactory.openSession ã‹ã‚‰ + å–å¾—ã—㟠Session ã ã‘ã«åŠ¹æžœãŒã‚ã‚Šã¾ã™ã€‚ + SessionFactory.getCurrentSession を通ã˜ã¦å–å¾—ã—㟠+ Session ã§ã¯ã€CurrentSessionContext + ã®å®Ÿè£…ã«ã‚ˆã£ã¦ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã®ãƒªãƒªãƒ¼ã‚¹ãƒ¢ãƒ¼ãƒ‰ã‚’設定ã—ã¾ã™ã€‚ + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 @@ -707,8 +709,8 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.connection.<propertyName> - JDBC‚Ì propertyName ƒvƒƒpƒeƒB‚ðA - DriverManager.getConnection() ‚É“n‚µ‚Ü‚·B + JDBCã® propertyName プロパティを〠+ DriverManager.getConnection() ã«æ¸¡ã—ã¾ã™ã€‚ @@ -716,8 +718,8 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.jndi.<propertyName> - propertyName ƒvƒƒpƒeƒB‚ðA - JNDI InitialContextFactory ‚É“n‚µ‚Ü‚·B + propertyName プロパティを〠+ JNDI InitialContextFactory ã«æ¸¡ã—ã¾ã™ã€‚ @@ -725,14 +727,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- Hibernate ƒLƒƒƒbƒVƒ…ƒvƒƒpƒeƒB + Hibernate キャッシュプロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -741,9 +743,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.provider_class - ƒJƒXƒ^ƒ€ CacheProvider ‚̃Nƒ‰ƒX–¼‚Å‚·B + カスタム CacheProvider ã®ã‚¯ãƒ©ã‚¹åã§ã™ã€‚ - —áF + 例: classname.of.CacheProvider @@ -753,12 +755,12 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.use_minimal_puts - ‘‚«ž‚Ý‚ðŬŒÀ‚É‚·‚邽‚ß‚ÉA“ñŽŸƒLƒƒƒbƒVƒ…‚Ì‘€ì‚ðÅ“K‰»‚µ‚Ü‚·B - ‚»‚Ì‘ã‚í‚è‚ÉA“Ç‚Ýž‚Ý‚ª‚æ‚è•p”É‚É”­¶‚·‚é‚悤‚É‚È‚è‚Ü‚·B - ‚±‚̃ZƒbƒeƒBƒ“ƒO‚̓Nƒ‰ƒXƒ^ƒLƒƒƒbƒVƒ…‚Å–ð‚É—§‚¿‚Ü‚·B - Hibernate3‚ł̓Nƒ‰ƒXƒ^ƒLƒƒƒbƒVƒ…ŽÀ‘•—p‚ɃfƒtƒHƒ‹ƒg‚Å‚Í—LŒø‚É‚È‚Á‚Ä‚¢‚Ü‚·B + 書ãè¾¼ã¿ã‚’最å°é™ã«ã™ã‚‹ãŸã‚ã«ã€äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®æ“作を最é©åŒ–ã—ã¾ã™ã€‚ + ãã®ä»£ã‚ã‚Šã«ã€èª­ã¿è¾¼ã¿ãŒã‚ˆã‚Šé »ç¹ã«ç™ºç”Ÿã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ + ã“ã®ã‚»ãƒƒãƒ†ã‚£ãƒ³ã‚°ã¯ã‚¯ãƒ©ã‚¹ã‚¿ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§å½¹ã«ç«‹ã¡ã¾ã™ã€‚ + Hibernate3ã§ã¯ã‚¯ãƒ©ã‚¹ã‚¿ã‚­ãƒ£ãƒƒã‚·ãƒ¥å®Ÿè£…用ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯æœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ - —áF + 例: true|false @@ -768,9 +770,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.use_query_cache - “Á’è‚̃NƒGƒŠ‚ªƒLƒƒƒbƒVƒ…‰Â”\‚ÈꇂÉAƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B + 特定ã®ã‚¯ã‚¨ãƒªãŒã‚­ãƒ£ãƒƒã‚·ãƒ¥å¯èƒ½ãªå ´åˆã«ã€ã‚¯ã‚¨ãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’有効ã«ã—ã¾ã™ã€‚ - —áF + 例: true|false @@ -780,11 +782,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.use_second_level_cache - “ñŽŸƒLƒƒƒbƒVƒ…‚ðŠ®‘S‚É–³Œø‚É‚·‚éꇂɎg‚¢‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚Í—LŒø‚ÅAƒNƒ‰ƒX‚Ì <cache> ƒ}ƒbƒsƒ“ƒO - ‚ŧŒä‚µ‚Ü‚·B + 二次キャッシュを完全ã«ç„¡åŠ¹ã«ã™ã‚‹å ´åˆã«ä½¿ã„ã¾ã™ã€‚ + デフォルトã§ã¯æœ‰åŠ¹ã§ã€ã‚¯ãƒ©ã‚¹ã® <cache> マッピング + ã§åˆ¶å¾¡ã—ã¾ã™ã€‚ - —áF + 例: true|false @@ -794,10 +796,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.query_cache_factory - ƒJƒXƒ^ƒ€ QueryCache ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Nƒ‰ƒX–¼‚ð - Žw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í StandardQueryCache ‚É‚È‚è‚Ü‚·B + カスタム QueryCache インターフェイスã®ã‚¯ãƒ©ã‚¹åã‚’ + 指定ã—ã¾ã™ã€‚デフォルトã§ã¯ StandardQueryCache ã«ãªã‚Šã¾ã™ã€‚ - —áF + 例: classname.of.QueryCache @@ -807,9 +809,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.region_prefix - “ñŽŸƒLƒƒƒbƒVƒ…‚̗̈於‚ÌÚ“ªŽ«‚Å‚·B + 二次キャッシュã®é ˜åŸŸåã®æŽ¥é ­è¾žã§ã™ã€‚ - —áF + 例: prefix @@ -819,9 +821,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.cache.use_structured_entries - “ñŽŸƒLƒƒƒbƒVƒ…‚ÉŠi”[‚·‚éƒf[ƒ^‚ðAl‚ª—‰ð‚µ‚â‚·‚¢ƒtƒH[ƒ}ƒbƒg‚É‚µ‚Ü‚·B + 二次キャッシュã«æ ¼ç´ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’ã€äººãŒç†è§£ã—ã‚„ã™ã„フォーマットã«ã—ã¾ã™ã€‚ - —áF + 例: true|false @@ -831,14 +833,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- Hibernate ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB + Hibernate トランザクションプロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -847,11 +849,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.transaction.factory_class - Hibernate Transaction API‚ƈê‚ÉŽg‚í‚ê‚é - TransactionFactory ‚̃Nƒ‰ƒX–¼‚Å‚·B - iƒfƒtƒHƒ‹ƒg‚Å‚Í JDBCTransactionFactory ‚Å‚·jB + Hibernate Transaction APIã¨ä¸€ç·’ã«ä½¿ã‚れる + TransactionFactory ã®ã‚¯ãƒ©ã‚¹åã§ã™ã€‚ + (デフォルトã§ã¯ JDBCTransactionFactory ã§ã™ï¼‰ã€‚ - —áF + 例: classname.of.TransactionFactory @@ -861,10 +863,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>jta.UserTransaction - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚çJTA UserTransaction ‚ðŽæ“¾‚·‚邽‚ß‚É - JTATransactionFactory ‚ÉŽg‚í‚ê‚éJNDI–¼‚Å‚·B + アプリケーションサーãƒã‹ã‚‰JTA UserTransaction ã‚’å–å¾—ã™ã‚‹ãŸã‚ã« + JTATransactionFactory ã«ä½¿ã‚れるJNDIåã§ã™ã€‚ - —áF + 例: jndi/composite/name @@ -874,10 +876,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.transaction.manager_lookup_class - TransactionManagerLookup ‚̃Nƒ‰ƒX–¼‚Å‚·B - JTAŠÂ‹«‚É‚¨‚¢‚ÄAJVMƒŒƒxƒ‹‚̃LƒƒƒbƒVƒ…‚ð—LŒø‚É‚·‚邽‚ß‚É•K—v‚Å‚·B + TransactionManagerLookup ã®ã‚¯ãƒ©ã‚¹åã§ã™ã€‚ + JTA環境ã«ãŠã„ã¦ã€JVMレベルã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’有効ã«ã™ã‚‹ãŸã‚ã«å¿…è¦ã§ã™ã€‚ - —áF + 例: classname.of.TransactionManagerLookup @@ -887,11 +889,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.transaction.flush_before_completion - —LŒø‚Ìê‡Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌcompletionƒtƒF[ƒY‚Ì‘O‚ÉŽ©“®“I‚É - ƒZƒbƒVƒ‡ƒ“‚ðƒtƒ‰ƒbƒVƒ…‚µ‚Ü‚·B“à‘Ÿ‚ÌŽ©“®ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚É“K‚µ‚Ä‚¢‚Ü‚·B - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 有効ã®å ´åˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®completionフェーズã®å‰ã«è‡ªå‹•çš„ã« + セッションをフラッシュã—ã¾ã™ã€‚内臓ã®è‡ªå‹•ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç®¡ç†ã«é©ã—ã¦ã„ã¾ã™ã€‚ + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - —áF + 例: true | false @@ -901,11 +903,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.transaction.auto_close_session - —LŒø‚Ìê‡Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌcompletionƒtƒF[ƒY‚ÌŒã‚É - ƒZƒbƒVƒ‡ƒ“‚ðŽ©“®“I‚ɃNƒ[ƒY‚µ‚Ü‚·B“à‘Ÿ‚ÌŽ©“®ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚É“K‚µ‚Ä‚¢‚Ü‚·B - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 有効ã®å ´åˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®completionフェーズã®å¾Œã« + セッションを自動的ã«ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã™ã€‚内臓ã®è‡ªå‹•ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç®¡ç†ã«é©ã—ã¦ã„ã¾ã™ã€‚ + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - —áF + 例: true | false @@ -915,14 +917,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- ‚»‚Ì‘¼‚̃vƒƒpƒeƒB + ãã®ä»–ã®ãƒ—ロパティ - ƒvƒƒpƒeƒB–¼ - ˆÓ–¡ + プロパティå + æ„味 @@ -931,11 +933,11 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.current_session_context_class - uŒ»Ý‚ÌvSession ‚Ì‚½‚ß‚ÌiƒJƒXƒ^ƒ€jí—ª‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ƒrƒ‹ƒgƒCƒ“ƒXƒgƒ‰ƒeƒW[‚ÉŠÖ‚·‚é‚»‚Ì‘¼‚Ìî•ñ‚ɂ‚¢‚Ä‚Í - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 「ç¾åœ¨ã®ã€Session ã®ãŸã‚ã®ï¼ˆã‚«ã‚¹ã‚¿ãƒ ï¼‰æˆ¦ç•¥ã‚’æä¾›ã—ã¾ã™ã€‚ + ビルトインストラテジーã«é–¢ã™ã‚‹ãã®ä»–ã®æƒ…å ±ã«ã¤ã„ã¦ã¯ + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - —áF + 例: jta | thread | managed | custom.Class @@ -946,9 +948,9 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.query.factory_class - HQLƒp[ƒT[‚ÌŽÀ‘•‚ð‘I‘ð‚µ‚Ü‚·B + HQLパーサーã®å®Ÿè£…ã‚’é¸æŠžã—ã¾ã™ã€‚ - —áF + 例: org.hibernate.hql.ast.ASTQueryTranslatorFactory or org.hibernate.hql.classic.ClassicQueryTranslatorFactory @@ -959,10 +961,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.query.substitutions - HQL‚ÆSQL‚̃g[ƒNƒ“‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - i—Ⴆ‚ÎAƒg[ƒNƒ“‚ÍŠÖ”‚⃊ƒeƒ‰ƒ‹–¼‚Å‚·jB + HQLã¨SQLã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’マッピングã—ã¾ã™ã€‚ + (例ãˆã°ã€ãƒˆãƒ¼ã‚¯ãƒ³ã¯é–¢æ•°ã‚„リテラルåã§ã™ï¼‰ã€‚ - —áF + 例: hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC @@ -972,12 +974,12 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>hibernate.hbm2ddl.auto - SessionFactory ‚𶬂µ‚½‚Æ‚«‚ÉA - Ž©“®“I‚ɃXƒL[ƒ}DDL‚ðDB‚Éo—Í‚µ‚Ü‚·B - create-drop ‚Ìê‡A SessionFactory ‚ð - ƒNƒ[ƒY‚µ‚½‚Æ‚«‚ÉAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ðƒhƒƒbƒv‚µ‚Ü‚·B + SessionFactory を生æˆã—ãŸã¨ãã«ã€ + 自動的ã«ã‚¹ã‚­ãƒ¼ãƒžDDLã‚’DBã«å‡ºåŠ›ã—ã¾ã™ã€‚ + create-drop ã®å ´åˆã€ SessionFactory ã‚’ + クローズã—ãŸã¨ãã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã‚’ドロップã—ã¾ã™ã€‚ - —áF + 例: validate | update | create | create-drop @@ -988,14 +990,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.cglib.use_reflection_optimizer - ŽÀsŽžƒŠƒtƒŒƒNƒVƒ‡ƒ“‚Ì‘ã‚í‚è‚ÌCGLIB‚ÌŽg—p‚ð—LŒø‚É‚µ‚Ü‚· - iƒVƒXƒeƒ€ƒŒƒxƒ‹‚̃vƒƒpƒeƒBj - ƒŠƒtƒŒƒNƒVƒ‡ƒ“‚̓gƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒO‚Ì‚Æ‚«‚ɖ𗧂‚±‚Æ‚ª‚ ‚è‚Ü‚·B - ƒIƒvƒeƒBƒ}ƒCƒU‚ðƒIƒt‚É‚µ‚Ä‚¢‚é‚Æ‚«‚Å‚³‚¦A - Hibernate‚É‚Í•K‚¸CGLIB‚ª•K—v‚È‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚̃vƒƒpƒeƒB‚Í hibernate.cfg.xml ‚ÅÝ’è‚Å‚«‚Ü‚¹‚ñB + 実行時リフレクションã®ä»£ã‚ã‚Šã®CGLIBã®ä½¿ç”¨ã‚’有効ã«ã—ã¾ã™ + (システムレベルã®ãƒ—ロパティ) + リフレクションã¯ãƒˆãƒ©ãƒ–ルシューティングã®ã¨ãã«å½¹ç«‹ã¤ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + オプティマイザをオフã«ã—ã¦ã„ã‚‹ã¨ãã§ã•ãˆã€ + Hibernateã«ã¯å¿…ãšCGLIBãŒå¿…è¦ãªã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“ã®ãƒ—ロパティ㯠hibernate.cfg.xml ã§è¨­å®šã§ãã¾ã›ã‚“。 - —áF + 例: true | false @@ -1005,15 +1007,15 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- SQL •ûŒ¾iDialectj + SQL 方言(Dialect) - hibernate.dialect ƒvƒƒpƒeƒB‚É‚ÍA - Žg—p‚·‚éƒf[ƒ^ƒx[ƒX‚̳‚µ‚¢ org.hibernate.dialect.Dialect ‚̃TƒuƒNƒ‰ƒX‚ðA - •K‚¸Žw’è‚·‚ׂ«‚Å‚·B - ‚µ‚©‚µ•ûŒ¾‚ðŽw’è‚·‚ê‚ÎAHibernate‚Íãq‚µ‚½ƒvƒƒpƒeƒB‚Ì‚¢‚­‚‚©‚ɂ‚¢‚ÄA - ‚æ‚è“K؂ȃfƒtƒHƒ‹ƒg’l‚ðŽg‚¢‚Ü‚·B - ‚»‚¤‚·‚ê‚ÎA‚»‚ê‚ç‚ðŽèì‹Æ‚ÅÝ’è‚·‚éŽèŠÔ‚ªÈ‚¯‚Ü‚·B + hibernate.dialect プロパティã«ã¯ã€ + 使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ­£ã—ã„ org.hibernate.dialect.Dialect ã®ã‚µãƒ–クラスを〠+ å¿…ãšæŒ‡å®šã™ã¹ãã§ã™ã€‚ + ã—ã‹ã—方言を指定ã™ã‚Œã°ã€Hibernateã¯ä¸Šè¿°ã—ãŸãƒ—ロパティã®ã„ãã¤ã‹ã«ã¤ã„ã¦ã€ + よりé©åˆ‡ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’使ã„ã¾ã™ã€‚ + ãã†ã™ã‚Œã°ã€ãれらを手作業ã§è¨­å®šã™ã‚‹æ‰‹é–“ãŒçœã‘ã¾ã™ã€‚ @@ -1101,21 +1103,21 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - ŠO•”Œ‹‡ƒtƒFƒbƒ` + 外部çµåˆãƒ•ã‚§ãƒƒãƒ - ‚à‚µDB‚ªANSI‚©AOracle‚©SybaseƒXƒ^ƒCƒ‹‚ÌŠO•”Œ‹‡‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éê‡A - outer join fetching ‚ÍADB‚ÌSQL”­s‰ñ”‚ðß–ñ‚µ - ƒpƒtƒH[ƒ}ƒ“ƒX‚ð—Ç‚­‚µ‚Ü‚·BiDB“à‚Å‚æ‚葽‚­‚̈—ƒRƒXƒg‚ª”­¶‚µ‚Ü‚·j - ŠO•”Œ‹‡ƒtƒFƒbƒ`‚ÍA‘½‘ΈêAˆê‘Α½A‘½‘Α½Aˆê‘Έê‚̃IƒuƒWƒFƒNƒgŠÖ˜A‚Å - ƒOƒ‹[ƒvƒIƒuƒWƒFƒNƒg‚ð1‚‚ÌSQL‚Å SELECT ‚µ‚Ü‚·B + ã‚‚ã—DBãŒANSIã‹ã€Oracleã‹Sybaseスタイルã®å¤–部çµåˆã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å ´åˆã€ + outer join fetching ã¯ã€DBã®SQL発行回数を節約㗠+ パフォーマンスを良ãã—ã¾ã™ã€‚(DB内ã§ã‚ˆã‚Šå¤šãã®å‡¦ç†ã‚³ã‚¹ãƒˆãŒç™ºç”Ÿã—ã¾ã™ï¼‰ + 外部çµåˆãƒ•ã‚§ãƒƒãƒã¯ã€å¤šå¯¾ä¸€ã€ä¸€å¯¾å¤šã€å¤šå¯¾å¤šã€ä¸€å¯¾ä¸€ã®ã‚ªãƒ–ジェクト関連㧠+ グループオブジェクトを1ã¤ã®SQL㧠SELECT ã—ã¾ã™ã€‚ - hibernate.max_fetch_depth ƒvƒƒpƒeƒB‚Ì’l‚ð 0 ‚É‚·‚é‚Æ - Outer join fetching‚ð ‚·‚×‚Ä –³Œø‚É‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B - 1 ‚â‚»‚êˆÈã‚Ì’l‚ðÝ’è‚·‚é‚ÆAŠO•”Œ‹‡ƒtƒFƒbƒ`‚ª—LŒø‚É‚È‚èA - ˆê‘Έê‚Æ‘½‘ΈêŠÖ˜A‚ª fetch="join" ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B + hibernate.max_fetch_depth プロパティã®å€¤ã‚’ 0 ã«ã™ã‚‹ã¨ + Outer join fetchingã‚’ ã™ã¹ã¦ 無効ã«ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + 1 ã‚„ãれ以上ã®å€¤ã‚’設定ã™ã‚‹ã¨ã€å¤–部çµåˆãƒ•ã‚§ãƒƒãƒãŒæœ‰åŠ¹ã«ãªã‚Šã€ + 一対一ã¨å¤šå¯¾ä¸€é–¢é€£ãŒ fetch="join" ã¨ã—ã¦ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ @@ -1125,146 +1127,146 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - ƒoƒCƒiƒŠƒXƒgƒŠ[ƒ€ + ãƒã‚¤ãƒŠãƒªã‚¹ãƒˆãƒªãƒ¼ãƒ  - Oracle‚ÍJDBCƒhƒ‰ƒCƒo‚Æ‚ÌŠÔ‚Å‚â‚è‚Ƃ肳‚ê‚é byte ”z—ñ‚̃TƒCƒY‚ð§ŒÀ‚µ‚Ü‚·B - binary ‚â serializable Œ^‚Ì‘å‚«‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ðŽg‚¢‚½‚¯‚ê‚ÎA - hibernate.jdbc.use_streams_for_binary ‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B - ‚½‚¾‚µ ‚±‚ê‚̓VƒXƒeƒ€ƒŒƒxƒ‹‚Ìݒ肾‚¯‚Å‚· B + Oracleã¯JDBCドライãƒã¨ã®é–“ã§ã‚„ã‚Šã¨ã‚Šã•ã‚Œã‚‹ byte é…列ã®ã‚µã‚¤ã‚ºã‚’制é™ã—ã¾ã™ã€‚ + binary ã‚„ serializable åž‹ã®å¤§ããªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’使ã„ãŸã‘ã‚Œã°ã€ + hibernate.jdbc.use_streams_for_binary を有効ã«ã—ã¦ãã ã•ã„。 + ãŸã ã— ã“ã‚Œã¯ã‚·ã‚¹ãƒ†ãƒ ãƒ¬ãƒ™ãƒ«ã®è¨­å®šã ã‘ã§ã™ 。 - 2ŽŸƒLƒƒƒbƒVƒ…‚ƃNƒGƒŠ[ƒLƒƒƒbƒVƒ… + 2次キャッシュã¨ã‚¯ã‚¨ãƒªãƒ¼ã‚­ãƒ£ãƒƒã‚·ãƒ¥ - hibernate.cache ƒvƒƒpƒeƒBÚ“ªŽ«‚Í - Hibernate‚ŃvƒƒZƒX‚âƒNƒ‰ƒXƒ^“ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚Æ‚±‚Æ‚ð‹–‰Â‚µ‚Ü‚·B - ‚É‚æ‚葽‚­‚ÌÚׂª‚ ‚è‚Ü‚·B + hibernate.cache プロパティ接頭辞㯠+ Hibernateã§ãƒ—ロセスやクラスタ二次キャッシュを使ã†ã¨ã“ã¨ã‚’許å¯ã—ã¾ã™ã€‚ + ã«ã‚ˆã‚Šå¤šãã®è©³ç´°ãŒã‚ã‚Šã¾ã™ã€‚ - ƒNƒGƒŠ[Œ¾Œê‚Ì’u‚«Š·‚¦ + クエリー言語ã®ç½®ãæ›ãˆ - hibernate.query.substitutions ‚ðŽg‚¤‚±‚Æ‚ÅA - V‚µ‚¢HibernateƒNƒGƒŠƒg[ƒNƒ“‚ð’è‹`‚Å‚«‚Ü‚·B - —áF + hibernate.query.substitutions を使ã†ã“ã¨ã§ã€ + æ–°ã—ã„Hibernateクエリトークンを定義ã§ãã¾ã™ã€‚ + 例: hibernate.query.substitutions true=1, false=0 - ‚±‚ê‚̓g[ƒNƒ“ true ‚Æ false ‚ðA - ¶¬‚³‚ê‚éSQL‚É‚¨‚¢‚Ä®”ƒŠƒeƒ‰ƒ‹‚É–|–󂵂܂·B + ã“ã‚Œã¯ãƒˆãƒ¼ã‚¯ãƒ³ true 㨠false を〠+ 生æˆã•ã‚Œã‚‹SQLã«ãŠã„ã¦æ•´æ•°ãƒªãƒ†ãƒ©ãƒ«ã«ç¿»è¨³ã—ã¾ã™ã€‚ hibernate.query.substitutions toLowercase=LOWER - ‚±‚ê‚ÍSQL‚Ì LOWER ŠÖ”‚Ì–¼‘O‚Ì•t‚¯‘Ö‚¦‚ð‰Â”\‚É‚µ‚Ü‚·B + ã“ã‚Œã¯SQLã® LOWER 関数ã®åå‰ã®ä»˜ã‘替ãˆã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ - Hibernate “Œv + Hibernate 統計 - hibernate.generate_statistics ‚ð—LŒø‚É‚µ‚½ê‡A - “®ì‚µ‚Ä‚¢‚éƒVƒXƒeƒ€‚ðƒ`ƒ…[ƒjƒ“ƒO‚·‚é‚Æ‚«‚ÉASessionFactory.getStatistics() - ‚ðŒo—R‚µ‚ÄAHibernate‚Í•Ö—˜‚È“Œvî•ñ‚ðo—Í‚µ‚Ü‚·B - JMX‚ðŒo—R‚µ‚Ä“Œvî•ñ‚ðo—Í‚·‚邱‚Æ‚à‰Â”\‚Å‚·B - Javadoc‚Ì org.hibernate.stats ƒpƒbƒP[ƒW“à‚Ì - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚É‚Í‚æ‚葽‚­‚Ìî•ñ‚ª‚ ‚è‚Ü‚·B + hibernate.generate_statistics を有効ã«ã—ãŸå ´åˆã€ + 動作ã—ã¦ã„るシステムをãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã™ã‚‹ã¨ãã«ã€SessionFactory.getStatistics() + を経由ã—ã¦ã€Hibernateã¯ä¾¿åˆ©ãªçµ±è¨ˆæƒ…報を出力ã—ã¾ã™ã€‚ + JMXを経由ã—ã¦çµ±è¨ˆæƒ…報を出力ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + Javadocã® org.hibernate.stats パッケージ内㮠+ インターフェイスã«ã¯ã‚ˆã‚Šå¤šãã®æƒ…å ±ãŒã‚ã‚Šã¾ã™ã€‚ - ƒƒMƒ“ƒO + ロギング - Hibernate‚ÍApache commons-loggin‚ðŽg‚Á‚ÄA‚³‚Ü‚´‚܂ȃCƒxƒ“ƒg‚ðƒƒO‚Æ‚µ‚Ä - o—Í‚µ‚Ü‚·B + Hibernateã¯Apache commons-logginを使ã£ã¦ã€ã•ã¾ã–ã¾ãªã‚¤ãƒ™ãƒ³ãƒˆã‚’ログã¨ã—㦠+ 出力ã—ã¾ã™ã€‚ - commons-loggingƒT[ƒrƒX‚ÍiƒNƒ‰ƒXƒpƒX‚É log4j.jar ‚ðŠÜ‚ß‚ê‚ÎjApache Log4j‚ÉA - ‚Ü‚½iJDK1.4‚©‚»‚êˆÈã‚ÅŽÀs‚³‚¹‚ê‚ÎjJDK1.4 logging‚É’¼Úo—Í‚µ‚Ü‚·B - Log4j‚Í http://jakarta.apache.org ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B - Log4j‚ðŽg‚¤‚½‚ß‚É‚ÍAƒNƒ‰ƒXƒpƒX‚É log4j.properties ƒtƒ@ƒCƒ‹‚ð”z’u‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - —á‚̃vƒƒpƒeƒBƒtƒ@ƒCƒ‹‚ÍHibernate‚ƈê‚É”z•z‚³‚êA‚»‚ê‚Í src/ ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B + commons-loggingサービスã¯ï¼ˆã‚¯ãƒ©ã‚¹ãƒ‘ス㫠log4j.jar ã‚’å«ã‚ã‚Œã°ï¼‰Apache Log4jã«ã€ + ã¾ãŸï¼ˆJDK1.4ã‹ãれ以上ã§å®Ÿè¡Œã•ã›ã‚Œã°ï¼‰JDK1.4 loggingã«ç›´æŽ¥å‡ºåŠ›ã—ã¾ã™ã€‚ + Log4j㯠http://jakarta.apache.org ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚ + Log4jを使ã†ãŸã‚ã«ã¯ã€ã‚¯ãƒ©ã‚¹ãƒ‘ス㫠log4j.properties ファイルをé…ç½®ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + 例ã®ãƒ—ロパティファイルã¯Hibernateã¨ä¸€ç·’ã«é…布ã•ã‚Œã€ãれ㯠src/ ディレクトリã«ã‚ã‚Šã¾ã™ã€‚ - Hibernate‚̃ƒOƒƒbƒZ[ƒW‚ÉŠµ‚ê‚邱‚Æ‚ð‹­‚­‚¨‚·‚·‚ß‚µ‚Ü‚·B - Hibernate‚̃ƒO‚Í“Ç‚Ý‚â‚·‚­A‚Å‚«‚éŒÀ‚èÚׂɂȂé‚悤‚É“w—Í‚³‚ê‚Ä‚¢‚Ü‚·B - ‚±‚ê‚Í•K{‚̃gƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒOƒfƒoƒCƒX‚Å‚·B - ˆÈ‰º‚Éd—v‚ȃƒO‚̃JƒeƒSƒŠ‚ðŽ¦‚µ‚Ü‚·B + Hibernateã®ãƒ­ã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«æ…£ã‚Œã‚‹ã“ã¨ã‚’å¼·ããŠã™ã™ã‚ã—ã¾ã™ã€‚ + Hibernateã®ãƒ­ã‚°ã¯èª­ã¿ã‚„ã™ãã€ã§ãã‚‹é™ã‚Šè©³ç´°ã«ãªã‚‹ã‚ˆã†ã«åŠªåŠ›ã•ã‚Œã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã¯å¿…é ˆã®ãƒˆãƒ©ãƒ–ルシューティングデãƒã‚¤ã‚¹ã§ã™ã€‚ + 以下ã«é‡è¦ãªãƒ­ã‚°ã®ã‚«ãƒ†ã‚´ãƒªã‚’示ã—ã¾ã™ã€‚
- Hibernate ƒƒOƒJƒeƒSƒŠ + Hibernate ログカテゴリ - ƒJƒeƒSƒŠ - ‹@”\ + カテゴリ + 機能 org.hibernate.SQL - ŽÀs‚µ‚½‚·‚ׂĂÌSQLiDDLjƒXƒe[ƒgƒƒ“ƒg‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + 実行ã—ãŸã™ã¹ã¦ã®SQL(DDL)ステートメントをロギングã—ã¾ã™ã€‚ org.hibernate.type - ‚·‚ׂĂÌJDBCƒpƒ‰ƒ[ƒ^‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + ã™ã¹ã¦ã®JDBCパラメータをロギングã—ã¾ã™ã€‚ org.hibernate.tool.hbm2ddl - ŽÀs‚µ‚½‚·‚ׂĂÌSQLiDDLjƒXƒe[ƒgƒƒ“ƒg‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + 実行ã—ãŸã™ã¹ã¦ã®SQL(DDL)ステートメントをロギングã—ã¾ã™ã€‚ org.hibernate.pretty - session‚ÉŠÖ˜A‚·‚é‚·‚ׂẴGƒ“ƒeƒBƒeƒBiÅ‘å‚Q‚Oj‚̃tƒ‰ƒbƒVƒ…ŽžŠÔ‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + sessionã«é–¢é€£ã™ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ï¼ˆæœ€å¤§ï¼’ï¼ï¼‰ã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥æ™‚間をロギングã—ã¾ã™ã€‚ org.hibernate.cache - ‚·‚ׂĂ̂QŽŸƒLƒƒƒbƒVƒ…‚Ì“®ì‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + ã™ã¹ã¦ã®ï¼’次キャッシュã®å‹•ä½œã‚’ロギングã—ã¾ã™ã€‚ org.hibernate.transaction - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÉŠÖ˜A‚·‚é“®ì‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + トランザクションã«é–¢é€£ã™ã‚‹å‹•ä½œã‚’ロギングã—ã¾ã™ã€‚ org.hibernate.jdbc - JDBCƒŠƒ\[ƒXŽæ“¾‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + JDBCリソースå–得をロギングã—ã¾ã™ã€‚ org.hibernate.hql.ast.AST - HQL‚ÆSQL‚ÌAST‚̃NƒGƒŠ[ƒp[ƒX‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + HQLã¨SQLã®ASTã®ã‚¯ã‚¨ãƒªãƒ¼ãƒ‘ースをロギングã—ã¾ã™ã€‚ org.hibernate.secure - ‚·‚ׂĂÌJAAS•ªÍ‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B + ã™ã¹ã¦ã®JAAS分æžã‚’ロギングã—ã¾ã™ã€‚ org.hibernate - ‚·‚ׂĂðƒƒMƒ“ƒO‚µ‚Ü‚·Biî•ñ‚ª‘å—Ê‚É‚È‚è‚Ü‚·‚ªAƒgƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒO‚É‚Í•Ö—˜‚Å‚·j + ã™ã¹ã¦ã‚’ロギングã—ã¾ã™ã€‚(情報ãŒå¤§é‡ã«ãªã‚Šã¾ã™ãŒã€ãƒˆãƒ©ãƒ–ルシューティングã«ã¯ä¾¿åˆ©ã§ã™ï¼‰ @@ -1272,34 +1274,34 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
- Hibernate‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð쬂·‚é‚Æ‚«‚ÍAorg.hibernate.SQL - ƒJƒeƒSƒŠ‚Ì debug ‚ðí‚É—LŒø‚É‚µ‚Ä‚¨‚¢‚½‚Ù‚¤‚ª—Ç‚¢‚Å‚µ‚傤B - ‘ã‘Ö•û–@‚Æ‚µ‚ÄAhibernate.show_sql ‚ð—LŒø‚É‚·‚é•û–@‚ª‚ ‚è‚Ü‚·B + Hibernateã§ã‚¢ãƒ—リケーションを作æˆã™ã‚‹ã¨ãã¯ã€org.hibernate.SQL + カテゴリ㮠debug を常ã«æœ‰åŠ¹ã«ã—ã¦ãŠã„ãŸã»ã†ãŒè‰¯ã„ã§ã—ょã†ã€‚ + 代替方法ã¨ã—ã¦ã€hibernate.show_sql を有効ã«ã™ã‚‹æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚
- <literal>NamingStrategy</literal> ‚ÌŽÀ‘• + <literal>NamingStrategy</literal> ã®å®Ÿè£… - ƒCƒ“ƒ^[ƒtƒFƒCƒX net.sf.hibernate.cfg.NamingStrategy ‚ðŽg‚¤‚Æ - ƒf[ƒ^ƒx[ƒXƒIƒuƒWƒFƒNƒg‚ƃXƒL[ƒ}—v‘f‚Ì‚½‚ß‚Ìu–½–¼•W€v‚ðŽw’è‚Å‚«‚Ü‚·B + インターフェイス net.sf.hibernate.cfg.NamingStrategy を使ã†ã¨ + データベースオブジェクトã¨ã‚¹ã‚­ãƒ¼ãƒžè¦ç´ ã®ãŸã‚ã®ã€Œå‘½å標準ã€ã‚’指定ã§ãã¾ã™ã€‚ - Java‚ÌŽ¯•ÊŽq‚©‚çƒf[ƒ^ƒx[ƒX‚ÌŽ¯•ÊŽq‚ðŽ©“®¶¬‚·‚邽‚߂̃‹[ƒ‹‚âA - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å—^‚¦‚½u˜_—“I‚ÈvƒJƒ‰ƒ€‚ƃe[ƒuƒ‹–¼‚©‚ç - u•¨—“I‚Èvƒe[ƒuƒ‹‚ƃJƒ‰ƒ€–¼‚𶬂·‚邽‚߂̃‹[ƒ‹‚ð—pˆÓ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚Ì‹@”\‚ÍŒJ‚è•Ô‚µ‚ÌŽG‰¹i—Ⴆ‚Î TBL_ ƒvƒŠƒtƒBƒbƒNƒXj‚ðŽæ‚蜂«A - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ìç’·‚³‚ðŒ¸‚ç‚·‚±‚Ƃɖ𗧂¿‚Ü‚·B - Hibernate‚ªŽg‚¤ƒfƒtƒHƒ‹ƒg‚Ìí—ª‚Í‚©‚È‚èŬŒÀ‚É‹ß‚¢‚à‚Ì‚Å‚·B + Javaã®è­˜åˆ¥å­ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®è­˜åˆ¥å­ã‚’自動生æˆã™ã‚‹ãŸã‚ã®ãƒ«ãƒ¼ãƒ«ã‚„〠+ マッピングファイルã§ä¸ŽãˆãŸã€Œè«–ç†çš„ãªã€ã‚«ãƒ©ãƒ ã¨ãƒ†ãƒ¼ãƒ–ルåã‹ã‚‰ + 「物ç†çš„ãªã€ãƒ†ãƒ¼ãƒ–ルã¨ã‚«ãƒ©ãƒ åを生æˆã™ã‚‹ãŸã‚ã®ãƒ«ãƒ¼ãƒ«ã‚’用æ„ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã®æ©Ÿèƒ½ã¯ç¹°ã‚Šè¿”ã—ã®é›‘音(例ãˆã° TBL_ プリフィックス)をå–り除ã〠+ マッピングドキュメントã®å†—é•·ã•ã‚’減らã™ã“ã¨ã«å½¹ç«‹ã¡ã¾ã™ã€‚ + HibernateãŒä½¿ã†ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æˆ¦ç•¥ã¯ã‹ãªã‚Šæœ€å°é™ã«è¿‘ã„ã‚‚ã®ã§ã™ã€‚ - ƒ}ƒbƒsƒ“ƒO‚ð’ljÁ‚·‚é‘O‚É Configuration.setNamingStrategy() ‚ðŒÄ‚Ô‚±‚Æ‚Å - ˆÈ‰º‚̂悤‚ɈقȂéí—ª‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·F + マッピングを追加ã™ã‚‹å‰ã« Configuration.setNamingStrategy() を呼ã¶ã“ã¨ã§ + 以下ã®ã‚ˆã†ã«ç•°ãªã‚‹æˆ¦ç•¥ã‚’指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼š .buildSessionFactory();]]>
- org.hibernate.cfg.ImprovedNamingStrategy ‚Í‘g‚Ýž‚Ý‚Ìí—ª‚Å‚·B - ‚±‚ê‚Í‚¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚Ä—L—p‚ÈŠJŽn“_‚Æ‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + org.hibernate.cfg.ImprovedNamingStrategy ã¯çµ„ã¿è¾¼ã¿ã®æˆ¦ç•¥ã§ã™ã€‚ + ã“ã‚Œã¯ã„ãã¤ã‹ã®ã‚¢ãƒ—リケーションã«ã¨ã£ã¦æœ‰ç”¨ãªé–‹å§‹ç‚¹ã¨ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
- XMLÝ’èƒtƒ@ƒCƒ‹ + XML設定ファイル - ‚à‚¤1‚‚̕û–@‚Í hibernate.cfg.xml ‚Æ‚¢‚¤–¼‘O‚̃tƒ@ƒCƒ‹‚Å - \•ª‚ÈÝ’è‚ðŽw’è‚·‚é•û–@‚Å‚·B - ‚±‚̃tƒ@ƒCƒ‹‚Í hibernate.properties ƒtƒ@ƒCƒ‹‚Ì‘ã‚í‚è‚Æ‚È‚è‚Ü‚·B - ‚à‚µ—¼•û‚̃tƒ@ƒCƒ‹‚ª‚ ‚ê‚ÎAƒvƒƒpƒeƒB‚ª’u‚«Š·‚¦‚ç‚ê‚Ü‚·B + ã‚‚ã†1ã¤ã®æ–¹æ³•ã¯ hibernate.cfg.xml ã¨ã„ã†åå‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ + å分ãªè¨­å®šã‚’指定ã™ã‚‹æ–¹æ³•ã§ã™ã€‚ + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ hibernate.properties ファイルã®ä»£ã‚ã‚Šã¨ãªã‚Šã¾ã™ã€‚ + ã‚‚ã—両方ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Œã°ã€ãƒ—ロパティãŒç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚ - XMLÝ’èƒtƒ@ƒCƒ‹‚͉ŠúÝ’è‚Å CLASSPATH ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ꂪ—á‚Å‚·F + XML設定ファイルã¯åˆæœŸè¨­å®šã§ CLASSPATH ã«é…ç½®ã—ã¦ãã ã•ã„。 + ã“ã‚ŒãŒä¾‹ã§ã™ï¼š @@ -1338,7 +1340,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - + @@ -1365,22 +1367,22 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>
]]>
- Œ©‚Ä‚Ì‚Æ‚¨‚èA‚±‚Ì•û–@‚Ì—DˆÊ«‚ÍÝ’è‚Ì‚½‚߂̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹–¼‚ðŠOo‚µ‚É‚Å‚«‚邱‚Æ‚Å‚·B - HibernateƒLƒƒƒbƒVƒ…‚ðƒ`ƒ…[ƒjƒ“ƒO‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Ì‚Å‚ ‚ê‚ÎA - hibernate.cfg.xml ‚Í‚æ‚è•Ö—˜‚Å‚·B - hibernate.properties ‚Æ hibernate.cfg.xml ‚Ì - ‚Ç‚¿‚ç‚©‚ðŽg‚¦‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B - “ñ‚‚͓¯‚¶‚à‚Ì‚ÅAˆá‚¤‚Æ‚±‚ë‚Æ‚¢‚¦‚ÎXML\•¶‚ðŽg‚¤‚±‚Æ‚Ì—˜“_‚¾‚¯‚Å‚·B + 見ã¦ã®ã¨ãŠã‚Šã€ã“ã®æ–¹æ³•ã®å„ªä½æ€§ã¯è¨­å®šã®ãŸã‚ã®ãƒžãƒƒãƒ”ングファイルåを外出ã—ã«ã§ãã‚‹ã“ã¨ã§ã™ã€‚ + Hibernateキャッシュをãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ã®ã§ã‚ã‚Œã°ã€ + hibernate.cfg.xml ã¯ã‚ˆã‚Šä¾¿åˆ©ã§ã™ã€‚ + hibernate.properties 㨠hibernate.cfg.xml ã® + ã©ã¡ã‚‰ã‹ã‚’使ãˆã‚‹ã“ã¨ã‚’覚ãˆã¦ãŠã„ã¦ãã ã•ã„。 + 二ã¤ã¯åŒã˜ã‚‚ã®ã§ã€é•ã†ã¨ã“ã‚ã¨ã„ãˆã°XML構文を使ã†ã“ã¨ã®åˆ©ç‚¹ã ã‘ã§ã™ã€‚ - XMLÝ’è‚ðŽg‚¤‚±‚Æ‚ÅAHibernate‚͈ȉº‚̂悤‚ɃVƒ“ƒvƒ‹‚É‚È‚è‚Ü‚·B + XML設定を使ã†ã“ã¨ã§ã€Hibernateã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚·ãƒ³ãƒ—ルã«ãªã‚Šã¾ã™ã€‚ - ˆá‚¤XMLÝ’èƒtƒ@ƒCƒ‹‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B + é•ã†XML設定ファイルを使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
- J2EEƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Æ‚Ì“‡ + J2EEアプリケーションサーãƒã¨ã®çµ±åˆ - Hibernate‚ÍJ2EE\‘¢‚Æ“‡‚·‚éƒ|ƒCƒ“ƒg‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B + Hibernateã¯J2EE構造ã¨çµ±åˆã™ã‚‹ãƒã‚¤ãƒ³ãƒˆã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ - ƒRƒ“ƒeƒiŠÇ—ƒf[ƒ^ƒ\[ƒXFHibernate‚Í - JNDI‚ª’ñ‹Ÿ‚µAƒRƒ“ƒeƒi‚ªŠÇ—‚·‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg—p‚Å‚«‚Ü‚·B - ’ÊíAJTA€‹’‚Ì TransactionManager ‚Æ - ResourceManager ‚ªƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—(CMT)A - “Á‚É—lX‚ȃf[ƒ^ƒ\[ƒX‚É‚Ü‚½‚ª‚镪ŽUƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðˆµ‚¢‚Ü‚·B - “–‘RƒvƒƒOƒ‰ƒ€‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽw’è‚Å‚«‚Ü‚·(BMT)B - ‚ ‚é‚¢‚ÍA‹Lq‚µ‚½ƒR[ƒh‚̃|[ƒ^ƒrƒŠƒeƒB‚ð•Û‚‚½‚ß‚ÉA - ƒIƒvƒVƒ‡ƒ“‚ÌHibernate‚Ì Transaction API‚ðŽg‚¢‚½‚­‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + コンテナ管ç†ãƒ‡ãƒ¼ã‚¿ã‚½ãƒ¼ã‚¹ï¼šHibernate㯠+ JNDIãŒæä¾›ã—ã€ã‚³ãƒ³ãƒ†ãƒŠãŒç®¡ç†ã™ã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’使用ã§ãã¾ã™ã€‚ + 通常ã€JTA準拠㮠TransactionManager 㨠+ ResourceManager ãŒãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ç®¡ç†(CMT)〠+ 特ã«æ§˜ã€…ãªãƒ‡ãƒ¼ã‚¿ã‚½ãƒ¼ã‚¹ã«ã¾ãŸãŒã‚‹åˆ†æ•£ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’扱ã„ã¾ã™ã€‚ + 当然プログラムã§ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’指定ã§ãã¾ã™(BMT)。 + ã‚ã‚‹ã„ã¯ã€è¨˜è¿°ã—ãŸã‚³ãƒ¼ãƒ‰ã®ãƒãƒ¼ã‚¿ãƒ“リティをä¿ã¤ãŸã‚ã«ã€ + オプションã®Hibernateã® Transaction APIを使ã„ãŸããªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 @@ -1414,8 +1416,8 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - Ž©“®JNDIƒoƒCƒ“ƒfƒBƒ“ƒOFHibernate‚ÍJNDI‚ª—§‚¿ã‚ª‚Á‚½Œã‚É - SessionFactory ‚𶬂µ‚Ü‚·B + 自動JNDIãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ï¼šHibernateã¯JNDIãŒç«‹ã¡ä¸ŠãŒã£ãŸå¾Œã« + SessionFactory を生æˆã—ã¾ã™ã€‚ @@ -1423,12 +1425,12 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - JTAƒZƒbƒVƒ‡ƒ“ƒoƒCƒ“ƒfƒBƒ“ƒO F - Hibernate Session ‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ÍJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B - ’Pƒ‚É SessionFactory ‚ðJNDI‚©‚çlookup‚µ‚ÄA - Œ»Ý‚Ì Session ‚ðŽæ“¾‚µ‚Ü‚·B - JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚µ‚½‚Æ‚«‚ÉAHibernate‚ª Session ‚ðƒtƒ‰ƒbƒVƒ…‚µAƒNƒ[ƒY‚µ‚Ü‚·B - EJBƒfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Ì’†‚ÉAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ð錾‚µ‚Ü‚·B + JTAセッションãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚° : + Hibernate Session ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã¯JTAトランザクションã¨åŒã˜ã«ãªã‚Šã¾ã™ã€‚ + å˜ç´”ã« SessionFactory ã‚’JNDIã‹ã‚‰lookupã—ã¦ã€ + ç¾åœ¨ã® Session ã‚’å–å¾—ã—ã¾ã™ã€‚ + JTAトランザクションãŒå®Œäº†ã—ãŸã¨ãã«ã€Hibernate㌠Session をフラッシュã—ã€ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã™ã€‚ + EJBデプロイメントディスクリプタã®ä¸­ã«ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’宣言ã—ã¾ã™ã€‚ @@ -1436,85 +1438,85 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - JMXƒfƒvƒƒC: ‚à‚µJMX‚ªŽg—p‰Â”\‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoi—Ⴆ‚ÎJBOSSj - ‚ª‚ ‚éê‡AHibernate‚ðMBean‚Æ‚µ‚ăfƒvƒƒC‚·‚邱‚Æ‚ð‘I‚ׂ܂·B - ‚±‚ê‚Í Configuration ‚©‚ç SessionFactory ‚ð - ¶¬‚·‚éƒR[ƒh‚𖳂­‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ƒRƒ“ƒeƒi‚Í HibernateService ‚ð‹N“®‚µA - ƒT[ƒrƒX‚̈ˑ¶‚ð—‘z“I‚ÉŠÇ—‚µ‚Ü‚·iƒf[ƒ^ƒ\[ƒX‚ÍHibernate‚â‚»‚Ì‘¼‚ª‹N“®‚·‚é‘O‚É - Žg—p‚Å‚«‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñjB + JMXデプロイ: ã‚‚ã—JMXãŒä½¿ç”¨å¯èƒ½ãªã‚¢ãƒ—リケーションサーãƒï¼ˆä¾‹ãˆã°JBOSS) + ãŒã‚ã‚‹å ´åˆã€Hibernateã‚’MBeanã¨ã—ã¦ãƒ‡ãƒ—ロイã™ã‚‹ã“ã¨ã‚’é¸ã¹ã¾ã™ã€‚ + ã“れ㯠Configuration ã‹ã‚‰ SessionFactory ã‚’ + 生æˆã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’ç„¡ãã™ã“ã¨ãŒã§ãã¾ã™ã€‚ + コンテナ㯠HibernateService ã‚’èµ·å‹•ã—〠+ サービスã®ä¾å­˜ã‚’ç†æƒ³çš„ã«ç®¡ç†ã—ã¾ã™ï¼ˆãƒ‡ãƒ¼ã‚¿ã‚½ãƒ¼ã‚¹ã¯Hibernateã‚„ãã®ä»–ãŒèµ·å‹•ã™ã‚‹å‰ã« + 使用ã§ãるよã†ã«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“)。 - ŠÂ‹«‚Ɉˑ¶‚µ‚Ü‚·‚ªA‚à‚µAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ª"connection containment"‚Ì—áŠO‚ðƒXƒ[‚·‚é‚È‚ç - Ý’è‚̃IƒvƒVƒ‡ƒ“ hibernate.connection.aggressive_release - ‚ðtrue‚É‚µ‚Ä‚­‚¾‚³‚¢B + 環境ã«ä¾å­˜ã—ã¾ã™ãŒã€ã‚‚ã—ã€ã‚¢ãƒ—リケーションサーãƒãŒ"connection containment"ã®ä¾‹å¤–をスローã™ã‚‹ãªã‚‰ + 設定ã®ã‚ªãƒ—ション hibernate.connection.aggressive_release + ã‚’trueã«ã—ã¦ãã ã•ã„。 - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“헪ݒè + トランザクション戦略設定 - Hibernate Session API‚ÍAƒA[ƒLƒeƒNƒ`ƒƒ“à‚̃VƒXƒeƒ€‚ÌŠÇŠ‚Å‚ ‚é - ‚ ‚ç‚ä‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ɉˑ¶‚µ‚Ü‚¹‚ñB - ‚à‚µƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ÌJDBC‚ð’¼ÚŽg‚¢‚½‚¢ê‡AJDBC API‚©‚ç - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŒÄ‚Ô‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ‚à‚µAJ2EEƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Å“®ì‚³‚¹‚é‚È‚çABeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg‚¢A - •K—v‚ɉž‚¶‚Ä UserTransaction ‚ðJTA API‚©‚çŒÄ‚Ô‚±‚Æ‚É‚È‚é‚Å‚µ‚傤B + Hibernate Session APIã¯ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£å†…ã®ã‚·ã‚¹ãƒ†ãƒ ã®ç®¡è½„ã§ã‚ã‚‹ + ã‚らゆるトランザクションã«ä¾å­˜ã—ã¾ã›ã‚“。 + ã‚‚ã—コãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールã®JDBCを直接使ã„ãŸã„å ´åˆã€JDBC APIã‹ã‚‰ + トランザクションを呼ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã‚‚ã—ã€J2EEアプリケーションサーãƒã§å‹•ä½œã•ã›ã‚‹ãªã‚‰ã€Bean管ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„〠+ å¿…è¦ã«å¿œã˜ã¦ UserTransaction ã‚’JTA APIã‹ã‚‰å‘¼ã¶ã“ã¨ã«ãªã‚‹ã§ã—ょã†ã€‚ - 2‚Âi‚»‚êˆÈãj‚̊‹«‚Ō݊·«‚Ì‚ ‚éƒR[ƒh‚ðˆÛŽ‚·‚邽‚ß‚ÉAƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚Ī–{“I‚ȃVƒXƒeƒ€‚ð - ƒ‰ƒbƒsƒ“ƒO‚·‚éHibernate Transaction API‚ð„§‚µ‚Ü‚·B - HibernateÝ’èƒvƒƒpƒeƒB‚Ì hibernate.transaction.factory_class ‚ðÝ’è‚·‚邱‚Æ‚Å - ‚ ‚é“Á’è‚Ì Transaction ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽ‚‚±‚Æ‚ª‚Å‚«‚Ü‚·B + 2ã¤ï¼ˆãれ以上)ã®ç’°å¢ƒã§äº’æ›æ€§ã®ã‚るコードを維æŒã™ã‚‹ãŸã‚ã«ã€ã‚ªãƒ—ションã¨ã—ã¦æ ¹æœ¬çš„ãªã‚·ã‚¹ãƒ†ãƒ ã‚’ + ラッピングã™ã‚‹Hibernate Transaction APIを推奨ã—ã¾ã™ã€‚ + Hibernate設定プロパティ㮠hibernate.transaction.factory_class を設定ã™ã‚‹ã“ã¨ã§ + ã‚る特定㮠Transaction クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚ - 3‚‚̊î–{“I‚ÈiŠù‚É‚ ‚éj‘I‘ð‚ð‹“‚°‚Ü‚·F + 3ã¤ã®åŸºæœ¬çš„ãªï¼ˆæ—¢ã«ã‚る)é¸æŠžã‚’挙ã’ã¾ã™ï¼š org.hibernate.transaction.JDBCTransactionFactory - ƒf[ƒ^ƒx[ƒX(JDBC)ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈÏ÷‚µ‚Ü‚·iƒfƒtƒHƒ‹ƒgj + データベース(JDBC)トランザクションã«å§”è­²ã—ã¾ã™ï¼ˆãƒ‡ãƒ•ã‚©ãƒ«ãƒˆï¼‰ org.hibernate.transaction.JTATransactionFactory - ‚à‚µA‚±‚̃Rƒ“ƒeƒLƒXƒgi—Ⴆ‚ÎAEJBƒZƒbƒVƒ‡ƒ“Beanƒƒ\ƒbƒhj‚Åis’†‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª‘¶Ý‚·‚éA‚à‚µ‚­‚Í - V‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚Ä‚¨‚èABeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŽg‚í‚ê‚Ä‚¢‚éê‡A - ƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈÏ÷‚µ‚Ü‚·B + ã‚‚ã—ã€ã“ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼ˆä¾‹ãˆã°ã€EJBセッションBeanメソッド)ã§é€²è¡Œä¸­ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå­˜åœ¨ã™ã‚‹ã€ã‚‚ã—ã㯠+ æ–°ã—ã„トランザクションãŒé–‹å§‹ã•ã‚Œã¦ãŠã‚Šã€Bean管ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒä½¿ã‚ã‚Œã¦ã„ã‚‹å ´åˆã€ + コンテナ管ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«å§”è­²ã—ã¾ã™ã€‚ org.hibernate.transaction.CMTTransactionFactory - ƒRƒ“ƒeƒiŠÇ—JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈÏ÷‚µ‚Ü‚· + コンテナ管ç†JTAトランザクションã«å§”è­²ã—ã¾ã™ - Ž©•ªŽ©g‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“í—ªi—Ⴆ‚ÎACORBAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒT[ƒrƒXj‚ð’è‹`‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + 自分自身ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³æˆ¦ç•¥ï¼ˆä¾‹ãˆã°ã€CORBAトランザクションサービス)を定義ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - Hibernate‚Ì‚¢‚­‚‚©‚Ì‹@”\i—Ⴆ‚ÎA“ñŽŸƒLƒƒƒbƒVƒ…AJTA‚É‚æ‚éƒRƒ“ƒeƒLƒXƒgƒZƒbƒVƒ‡ƒ“ “™j‚Í - ŠÇ—‚³‚ꂽŠÂ‹«‚Ì’†‚ÌJTA TransactionManager ‚ւ̃AƒNƒZƒX‚ð—v‹‚µ‚Ü‚·B - J2EE‚ª‚ЂƂ‚̃ƒJƒjƒYƒ€‚É‹KŠi‰»‚³‚ê‚Ä‚¢‚È‚¢‚Ì‚ÅA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚É‚¨‚¢‚ÄAHibernate‚ª TransactionManager ‚̃Šƒtƒ@ƒŒƒ“ƒX - ‚ðŽæ“¾‚·‚é•û–@‚𖾊m‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + Hibernateã®ã„ãã¤ã‹ã®æ©Ÿèƒ½ï¼ˆä¾‹ãˆã°ã€äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã€JTAã«ã‚ˆã‚‹ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ 等)㯠+ 管ç†ã•ã‚ŒãŸç’°å¢ƒã®ä¸­ã®JTA TransactionManager ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¦æ±‚ã—ã¾ã™ã€‚ + J2EEãŒã²ã¨ã¤ã®ãƒ¡ã‚«ãƒ‹ã‚ºãƒ ã«è¦æ ¼åŒ–ã•ã‚Œã¦ã„ãªã„ã®ã§ã€ + アプリケーションサーãƒã«ãŠã„ã¦ã€Hibernate㌠TransactionManager ã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ + ã‚’å–å¾—ã™ã‚‹æ–¹æ³•ã‚’明確ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ}ƒl[ƒWƒƒ + JTA トランザクションマãƒãƒ¼ã‚¸ãƒ£ @@ -1572,95 +1574,95 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - <literal>SessionFactory</literal> ‚ÌJNDI‚Ö‚Ì“o˜^ + <literal>SessionFactory</literal> ã®JNDIã¸ã®ç™»éŒ² - JNDI‚É“o˜^‚µ‚½Hibernate SessionFactory ‚Í’Pƒ‚É - ƒtƒ@ƒNƒgƒŠ‚ðƒ‹ƒbƒNƒAƒbƒv‚µAV‚µ‚¢ Session ‚ðì‚è‚Ü‚·B - ‚±‚ê‚ÍJNDI‚É“o˜^‚³‚ꂽ Datasource ‚É‚ÍŠÖ˜A‚¹‚¸A - ‚¨ŒÝ‚¢‚ɃVƒ“ƒvƒ‹‚É‚±‚ê‚ç‚Ì“o˜^‚ðŽg‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + JNDIã«ç™»éŒ²ã—ãŸHibernate SessionFactory ã¯å˜ç´”ã« + ファクトリをルックアップã—ã€æ–°ã—ã„ Session を作りã¾ã™ã€‚ + ã“ã‚Œã¯JNDIã«ç™»éŒ²ã•ã‚ŒãŸ Datasource ã«ã¯é–¢é€£ã›ãšã€ + ãŠäº’ã„ã«ã‚·ãƒ³ãƒ—ルã«ã“れらã®ç™»éŒ²ã‚’使ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‚à‚µ SessionFactory ‚ðJNDIƒl[ƒ€ƒXƒy[ƒX‚É“o˜^‚µ‚½‚¢ê‡A - “Á•Ê‚È–¼‘Oi—Ⴆ‚ÎA java:hibernate/SessionFactory j‚ð - hibernate.session_factory_name ƒvƒƒpƒeƒB‚ÉŽg‚Á‚Ä‚­‚¾‚³‚¢ - ‚à‚µ‚±‚̃vƒƒpƒeƒB‚ðÈ—ª‚µ‚½ê‡A SessionFactory ‚Í - JNDI‚É“o˜^‚³‚ê‚Ü‚¹‚ñBi‚±‚ê‚ÍTomcat‚̂悤‚ȃfƒtƒHƒ‹ƒgŽÀ‘•‚ÅJNDI‚ª“Ç‚Ý‚æ‚èê—p‚̊‹«‚ÌꇓÁ‚É•Ö—˜‚Å‚·Bj + ã‚‚ã— SessionFactory ã‚’JNDIãƒãƒ¼ãƒ ã‚¹ãƒšãƒ¼ã‚¹ã«ç™»éŒ²ã—ãŸã„å ´åˆã€ + 特別ãªåå‰ï¼ˆä¾‹ãˆã°ã€ java:hibernate/SessionFactory )を + hibernate.session_factory_name プロパティã«ä½¿ã£ã¦ãã ã•ã„ + ã‚‚ã—ã“ã®ãƒ—ロパティをçœç•¥ã—ãŸå ´åˆã€ SessionFactory 㯠+ JNDIã«ç™»éŒ²ã•ã‚Œã¾ã›ã‚“。(ã“ã‚Œã¯Tomcatã®ã‚ˆã†ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå®Ÿè£…ã§JNDIãŒèª­ã¿ã‚ˆã‚Šå°‚用ã®ç’°å¢ƒã®å ´åˆç‰¹ã«ä¾¿åˆ©ã§ã™ã€‚) - SessionFactory ‚ðJNDI‚É“o˜^‚·‚é‚Æ‚«AHibernate‚Í - hibernate.jndi.url ‚Ì’l‚ðŽg—p‚µAhibernate.jndi.class - ‚ðƒCƒjƒVƒƒƒ‹ƒRƒ“ƒeƒLƒXƒg‚Æ‚µ‚Ä‹ï‘̉»‚µ‚Ü‚·B - ‚à‚µ‰½‚àݒ肵‚È‚¢ê‡‚ÍAƒfƒtƒHƒ‹ƒg‚Ì InitialContext ‚ðŽg—p‚µ‚Ü‚·B + SessionFactory ã‚’JNDIã«ç™»éŒ²ã™ã‚‹ã¨ãã€Hibernate㯠+ hibernate.jndi.url ã®å€¤ã‚’使用ã—ã€hibernate.jndi.class + をイニシャルコンテキストã¨ã—ã¦å…·ä½“化ã—ã¾ã™ã€‚ + ã‚‚ã—何も設定ã—ãªã„å ´åˆã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã® InitialContext を使用ã—ã¾ã™ã€‚ - cfg.buildSessionFactory() ‚ðƒR[ƒ‹Œã - Hibernate‚ÍŽ©“®“I‚É SessionFactory ‚ðJNDI‚É”z’u‚µ‚Ü‚·B - HibernateService ‚ƈê‚ÉJMXƒfƒvƒƒCƒƒ“ƒg‚ðŽg‚í‚È‚¢ŒÀ‚èA - ‚±‚ê‚Í‚±‚̌ĂÑo‚µ‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚̉½‚ç‚©‚̃Xƒ^[ƒgƒAƒbƒvƒR[ƒhi‚à‚µ‚­‚̓†[ƒeƒBƒŠƒeƒBƒNƒ‰ƒXj - ‚É”z’u‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·BiŒã‚Å‹c˜_‚µ‚Ü‚·j + cfg.buildSessionFactory() をコール後 + Hibernateã¯è‡ªå‹•çš„ã« SessionFactory ã‚’JNDIã«é…ç½®ã—ã¾ã™ã€‚ + HibernateService ã¨ä¸€ç·’ã«JMXデプロイメントを使ã‚ãªã„é™ã‚Šã€ + ã“ã‚Œã¯ã“ã®å‘¼ã³å‡ºã—をアプリケーション内ã®ä½•ã‚‰ã‹ã®ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—コード(もã—ãã¯ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹ï¼‰ + ã«é…ç½®ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚(後ã§è­°è«–ã—ã¾ã™ï¼‰ - ‚à‚µJNDI SessionFactory ‚ðŽg‚¤ê‡AEJB‚⑼‚̃Nƒ‰ƒX‚Í - JNDIƒ‹ƒbƒNƒAƒbƒv‚ðŽg‚Á‚Ä SessionFactory ‚ðŽæ“¾‚µ‚Ü‚·B + ã‚‚ã—JNDI SessionFactory を使ã†å ´åˆã€EJBã‚„ä»–ã®ã‚¯ãƒ©ã‚¹ã¯ + JNDIルックアップを使ã£ã¦ SessionFactory ã‚’å–å¾—ã—ã¾ã™ã€‚ - ŠÇ—‚³‚ꂽŠÂ‹«‚Å‚Í SessionFactory ‚ðJNDI‚ɃoƒCƒ“ƒh‚µA - ‚»‚¤‚Å‚È‚¯‚ê‚Î static ƒVƒ“ƒOƒ‹ƒgƒ“‚ðŽg‚¤‚±‚Æ‚ð„§‚µ‚Ü‚·B - ‚±‚¤‚¢‚Á‚½Úׂ©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒR[ƒh‚ð•ÛŒì‚·‚邽‚ß‚ÉA - HibernateUtil.getSessionFactory() ‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚Ì’†‚ÉA - SessionFactory ‚ðƒ‹ƒbƒNƒAƒbƒv‚·‚éƒR[ƒh‚ð‰B‚·‚±‚Æ‚ð„§‚µ‚Ü‚·B - ‚±‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚ÍHibernate‚ðŠJŽn‚·‚é•Ö—˜‚ÈŽè’i‚Å‚à‚ ‚è‚Ü‚·B - —‚PÍ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 管ç†ã•ã‚ŒãŸç’°å¢ƒã§ã¯ SessionFactory ã‚’JNDIã«ãƒã‚¤ãƒ³ãƒ‰ã—〠+ ãã†ã§ãªã‘れ㰠static シングルトンを使ã†ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + ã“ã†ã„ã£ãŸè©³ç´°ã‹ã‚‰ã‚¢ãƒ—リケーションコードをä¿è­·ã™ã‚‹ãŸã‚ã«ã€ + HibernateUtil.getSessionFactory() ã®ã‚ˆã†ãªãƒ˜ãƒ«ãƒ‘ークラスã®ä¸­ã«ã€ + SessionFactory をルックアップã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’éš ã™ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + ã“ã®ã‚ˆã†ãªãƒ˜ãƒ«ãƒ‘ークラスã¯Hibernateを開始ã™ã‚‹ä¾¿åˆ©ãªæ‰‹æ®µã§ã‚‚ã‚ã‚Šã¾ã™ã€‚ + —1章をå‚ç…§ã—ã¦ãã ã•ã„。 - JTA‚É‚æ‚錻݂̃ZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgƒ}ƒl[ƒWƒƒ“ƒg + JTAã«ã‚ˆã‚‹ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒžãƒãƒ¼ã‚¸ãƒ¡ãƒ³ãƒˆ - ‚à‚Á‚Æ‚àŠÈ’P‚É Session ‚ƃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðˆµ‚¤•û–@‚ÍA - Hibernate‚ªŽ©“®“I‚ÉuŒ»Ý‚Ìv Session ‚ðŠÇ—‚·‚邱‚Æ‚Å‚·B - ƒJƒŒƒ“ƒgƒZƒbƒVƒ‡ƒ“ ‚Ìà–¾‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - ‚à‚µ uJTAv ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒg‚ðŽg‚Á‚½ã‚ÅA - Œ»Ý‚ÌJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÆHibernate Session ‚ªŠÖ˜A‚µ‚Ä‚¢‚È‚¢ê‡‚ÍA - ʼn‚É sessionFactory.getCurrentSession() ‚ðƒR[ƒ‹‚µA - JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ‚ÌŠÖ˜A•t‚¯‚ðs‚Á‚Ä‚­‚¾‚³‚¢B - uJTAv ƒRƒ“ƒeƒLƒXƒg‚Ì getCurrentSession() ‚ð - ’Ê‚¶‚Ď擾‚µ‚½ Session ‚ÍAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚·‚é‘O‚É - Ž©“®“I‚Ƀtƒ‰ƒbƒVƒ…‚µAŠ®—¹‚µ‚½Œã‚É‚ÍŽ©“®“I‚ɃNƒ[ƒY‚µ‚Ü‚·B - ‚Ü‚½AŠeƒXƒe[ƒgƒƒ“ƒgŒã‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðÏ‹É“I‚ɃŠƒŠ[ƒX‚µ‚Ü‚·B - ‚±‚ê‚É‚æ‚èJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃‰ƒCƒtƒTƒCƒNƒ‹‚Å Session ‚ðŠÇ—‚·‚邱‚Æ‚ª‚Å‚«A - ƒ†[ƒU[‚̃R[ƒh‚©‚ç‚»‚̂悤‚ÈŠÇ—‚ð‚·‚éƒR[ƒh‚ð”rœ‚Å‚«‚Ü‚·B - UserTransaction ‚ð’Ê‚¶‚ÄJTA‚ðƒvƒƒOƒ‰ƒ€‚ÅŠÇ—‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚Ü‚½‚ÍAiƒ|[ƒ^ƒuƒ‹‚ȃR[ƒh‚Å‚ ‚ê‚ÎjHibernate Transaction API‚ð - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B - EJBƒRƒ“ƒeƒi‚ðŽg‚¤‚Æ‚«‚ÍACMT‚É‚æ‚é錾“Iƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ªD‚Ü‚µ‚¢‚Å‚·B + ã‚‚ã£ã¨ã‚‚ç°¡å˜ã« Session ã¨ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’扱ã†æ–¹æ³•ã¯ã€ + HibernateãŒè‡ªå‹•çš„ã«ã€Œç¾åœ¨ã®ã€ Session を管ç†ã™ã‚‹ã“ã¨ã§ã™ã€‚ + カレントセッション ã®èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + も㗠「JTA〠セッションコンテキストを使ã£ãŸä¸Šã§ã€ + ç¾åœ¨ã®JTAトランザクションã¨Hibernate Session ãŒé–¢é€£ã—ã¦ã„ãªã„å ´åˆã¯ã€ + 最åˆã« sessionFactory.getCurrentSession() をコールã—〠+ JTAトランザクションã¨ã®é–¢é€£ä»˜ã‘ã‚’è¡Œã£ã¦ãã ã•ã„。 + 「JTA〠コンテキスト㮠getCurrentSession() ã‚’ + 通ã˜ã¦å–å¾—ã—㟠Session ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå®Œäº†ã™ã‚‹å‰ã« + 自動的ã«ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã—ã€å®Œäº†ã—ãŸå¾Œã«ã¯è‡ªå‹•çš„ã«ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã™ã€‚ + ã¾ãŸã€å„ステートメント後ã«JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ç©æ¥µçš„ã«ãƒªãƒªãƒ¼ã‚¹ã—ã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚ŠJTAトランザクションã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã§ Session を管ç†ã™ã‚‹ã“ã¨ãŒã§ã〠+ ユーザーã®ã‚³ãƒ¼ãƒ‰ã‹ã‚‰ãã®ã‚ˆã†ãªç®¡ç†ã‚’ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’排除ã§ãã¾ã™ã€‚ + UserTransaction を通ã˜ã¦JTAをプログラムã§ç®¡ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã¾ãŸã¯ã€ï¼ˆãƒãƒ¼ã‚¿ãƒ–ルãªã‚³ãƒ¼ãƒ‰ã§ã‚ã‚Œã°ï¼‰Hibernate Transaction APIã‚’ + トランザクション境界ã¨ã—ã¦ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + EJBコンテナを使ã†ã¨ãã¯ã€CMTã«ã‚ˆã‚‹å®£è¨€çš„トランザクション境界ãŒå¥½ã¾ã—ã„ã§ã™ã€‚ - JMXƒfƒvƒƒCƒƒ“ƒg + JMXデプロイメント - SessionFactory ‚ðJNDI‚©‚çŽæ“¾‚·‚邽‚ß‚É‚Í - cfg.buildSessionFactory() s‚ð‚Ç‚±‚©‚ÅŽÀs‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚ ‚È‚½‚Í‚±‚ê‚ðAstatic ‰Šú‰»ƒuƒƒbƒN“ài HibernateUtil ‚̂悤‚Èj‚© - managed service ‚Æ‚µ‚ÄHibernate‚ðƒfƒvƒƒC‚·‚é‚©A‚Ç‚¿‚ç‚©‚ÅŽÀs‚Å‚«‚Ü‚·B + SessionFactory ã‚’JNDIã‹ã‚‰å–å¾—ã™ã‚‹ãŸã‚ã«ã¯ + cfg.buildSessionFactory() 行をã©ã“ã‹ã§å®Ÿè¡Œã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã‚ãªãŸã¯ã“れをã€static åˆæœŸåŒ–ブロック内( HibernateUtil ã®ã‚ˆã†ãªï¼‰ã‹ + managed service ã¨ã—ã¦Hibernateをデプロイã™ã‚‹ã‹ã€ã©ã¡ã‚‰ã‹ã§å®Ÿè¡Œã§ãã¾ã™ã€‚ - JBOSS‚̂悤‚ÈJMX‚Ì‹@”\‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ɃfƒvƒƒC‚·‚邽‚ß‚É - org.hibernate.jmx.HibernateService ‚ðŽg‚Á‚ÄA”z’u‚µ‚Ü‚·B - ŽÀۂ̃fƒvƒƒCƒƒ“ƒg‚ÆÝ’è‚̓xƒ“ƒ_[“Á—L‚Å‚·B - ‚±‚±‚Å—á‚Æ‚µ‚ÄJBOSS 4.0.x—p‚Ì jboss-service.xml ‚ðŽ¦‚µ‚Ü‚·B + JBOSSã®ã‚ˆã†ãªJMXã®æ©Ÿèƒ½ã§ã‚¢ãƒ—リケーションサーãƒã«ãƒ‡ãƒ—ロイã™ã‚‹ãŸã‚ã« + org.hibernate.jmx.HibernateService を使ã£ã¦ã€é…ç½®ã—ã¾ã™ã€‚ + 実際ã®ãƒ‡ãƒ—ロイメントã¨è¨­å®šã¯ãƒ™ãƒ³ãƒ€ãƒ¼ç‰¹æœ‰ã§ã™ã€‚ + ã“ã“ã§ä¾‹ã¨ã—ã¦JBOSS 4.0.x用㮠jboss-service.xml を示ã—ã¾ã™ã€‚ @@ -1707,14 +1709,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> ]]> - ‚±‚̃tƒ@ƒCƒ‹‚Í META-INF ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚³‚êA - JARƒtƒ@ƒCƒ‹‚ðŠg’£‚µ‚½ .sar (service archive)‚ŃpƒbƒP[ƒW‰»‚³‚ê‚Ü‚·B - “¯—l‚ÉHibernateƒpƒbƒP[ƒW‚à•K—v‚Å‚·B‚Ü‚½AHibernate‚̓T[ƒhƒp[ƒeƒB‚̃‰ƒCƒuƒ‰ƒŠ‚à—v‹‚µ‚Ü‚·B - ƒRƒ“ƒpƒCƒ‹‚µ‚½‰i‘±‰»ƒNƒ‰ƒX‚Æ‚»‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚à“¯—l‚ɃA[ƒJƒCƒui.sarƒtƒ@ƒCƒ‹j‚É“ü‚ê‚Ü‚·B - ƒGƒ“ƒ^[ƒvƒ‰ƒCƒYbeani’Êí‚̓ZƒbƒVƒ‡ƒ“beanj‚ÍŽ©g‚ÌJARƒtƒ@ƒCƒ‹‚ð•ÛŽ‚µ‚Ü‚·‚ªA - 1‰ñ‚ÅiƒzƒbƒgjƒfƒvƒƒC‰Â”\‚ȃ†ƒjƒbƒg‚Ì‚½‚߂ɃƒCƒ“ƒT[ƒrƒXƒA[ƒJƒCƒu‚Æ‚µ‚Ä‚±‚ÌEJB JARƒtƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é - ‚±‚Æ‚ª‚Å‚«‚Ü‚·BJBossƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚̃hƒLƒ…ƒƒ“ƒg‚ÉJXMƒT[ƒrƒX‚Æ - EJBƒfƒvƒƒCƒƒ“ƒg‚Ì‚æ‚葽‚­‚Ìî•ñ‚ª‚ ‚è‚Ü‚·B + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ META-INF ディレクトリã«é…ç½®ã•ã‚Œã€ + JARファイルを拡張ã—㟠.sar (service archive)ã§ãƒ‘ッケージ化ã•ã‚Œã¾ã™ã€‚ + åŒæ§˜ã«Hibernateパッケージも必è¦ã§ã™ã€‚ã¾ãŸã€Hibernateã¯ã‚µãƒ¼ãƒ‰ãƒ‘ーティã®ãƒ©ã‚¤ãƒ–ラリもè¦æ±‚ã—ã¾ã™ã€‚ + コンパイルã—ãŸæ°¸ç¶šåŒ–クラスã¨ãã®ãƒžãƒƒãƒ”ングファイルもåŒæ§˜ã«ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–(.sarファイル)ã«å…¥ã‚Œã¾ã™ã€‚ + エンタープライズbean(通常ã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³bean)ã¯è‡ªèº«ã®JARファイルをä¿æŒã—ã¾ã™ãŒã€ + 1回ã§ï¼ˆãƒ›ãƒƒãƒˆï¼‰ãƒ‡ãƒ—ロイå¯èƒ½ãªãƒ¦ãƒ‹ãƒƒãƒˆã®ãŸã‚ã«ãƒ¡ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スアーカイブã¨ã—ã¦ã“ã®EJB JARファイルをインクルードã™ã‚‹ + ã“ã¨ãŒã§ãã¾ã™ã€‚JBossアプリケーションサーãƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«JXMサービス㨠+ EJBデプロイメントã®ã‚ˆã‚Šå¤šãã®æƒ…å ±ãŒã‚ã‚Šã¾ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/events.xml b/documentation/manual/ja-JP/src/main/docbook/content/events.xml index d24f7833fd..b6f06a8558 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/events.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/events.xml @@ -1,31 +1,33 @@ - + + + - ƒCƒ“ƒ^[ƒZƒvƒ^‚ƃCƒxƒ“ƒg + インターセプタã¨ã‚¤ãƒ™ãƒ³ãƒˆ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªHibernate‚Ì“à•”‚Å”­¶‚·‚éƒCƒxƒ“ƒg‚ɑΉž‚Å‚«‚é‚Æ–ð‚É—§‚‚±‚Æ‚ª‚ ‚è‚Ü‚·B - ‚ ‚éŽí‚̈ê”Ê“I‚È‹@”\‚ðŽÀ‘•‚Å‚«‚é‚悤‚É‚È‚èA - ‚Ü‚½Hibernate‚Ì‹@”\‚ðŠg’£‚·‚邱‚Æ‚à‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B + アプリケーションãŒHibernateã®å†…部ã§ç™ºç”Ÿã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾å¿œã§ãã‚‹ã¨å½¹ã«ç«‹ã¤ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + ã‚る種ã®ä¸€èˆ¬çš„ãªæ©Ÿèƒ½ã‚’実装ã§ãるよã†ã«ãªã‚Šã€ + ã¾ãŸHibernateã®æ©Ÿèƒ½ã‚’æ‹¡å¼µã™ã‚‹ã“ã¨ã‚‚ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ - ƒCƒ“ƒ^[ƒZƒvƒ^ + インターセプタ - Interceptor ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚ÄA - ƒZƒbƒVƒ‡ƒ“‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÖƒR[ƒ‹ƒoƒbƒN‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚ê‚É‚æ‚è‰i‘±ƒIƒuƒWƒFƒNƒg‚Ì•Û‘¶AXVAíœA“Ç‚Ýž‚Ý‚Ì‘O‚ÉA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒvƒƒpƒeƒB‚ðŒŸ¸‚µ‚½‚葀삵‚½‚è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B - ‚±‚ê‚͊ĸî•ñ‚Ì’ÇÕ‚É—˜—p‚Å‚«‚Ü‚·B - ‰º‚Ì—á‚Å Interceptor ‚Í Auditable - ‚ªì¬‚³‚ê‚é‚ÆŽ©“®“I‚É createTimestamp ‚ðݒ肵A - Auditable ‚ªXV‚³‚ê‚é‚ÆŽ©“®“I‚É - lastUpdateTimestamp ƒvƒƒpƒeƒB‚ðXV‚µ‚Ü‚·B + Interceptor インターフェイスを使ã£ã¦ã€ + セッションã‹ã‚‰ã‚¢ãƒ—リケーションã¸ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šæ°¸ç¶šã‚ªãƒ–ジェクトã®ä¿å­˜ã€æ›´æ–°ã€å‰Šé™¤ã€èª­ã¿è¾¼ã¿ã®å‰ã«ã€ + アプリケーションãŒãƒ—ロパティを検査ã—ãŸã‚Šæ“作ã—ãŸã‚Šã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯ç›£æŸ»æƒ…å ±ã®è¿½è·¡ã«åˆ©ç”¨ã§ãã¾ã™ã€‚ + 下ã®ä¾‹ã§ Interceptor 㯠Auditable + ãŒä½œæˆã•ã‚Œã‚‹ã¨è‡ªå‹•çš„ã« createTimestamp を設定ã—〠+ Auditable ãŒæ›´æ–°ã•ã‚Œã‚‹ã¨è‡ªå‹•çš„ã« + lastUpdateTimestamp プロパティを更新ã—ã¾ã™ã€‚ - Interceptor ‚ð’¼ÚŽÀ‘•‚µ‚½‚èA - i‚³‚ç‚É‚æ‚¢‚Ì‚ÍjEmptyInterceptor ‚ðŠg’£‚µ‚½‚è‚Å‚«‚Ü‚·B + Interceptor を直接実装ã—ãŸã‚Šã€ + (ã•ã‚‰ã«ã‚ˆã„ã®ã¯ï¼‰EmptyInterceptor ã‚’æ‹¡å¼µã—ãŸã‚Šã§ãã¾ã™ã€‚ - ƒCƒ“ƒ^[ƒZƒvƒ^‚É‚Í“ñŽí—Þ‚ ‚è‚Ü‚·F - Session ƒXƒR[ƒv‚Ì‚à‚Ì‚Æ - SessionFactory ƒXƒR[ƒv‚Ì‚à‚Ì‚Å‚·B + インターセプタã«ã¯äºŒç¨®é¡žã‚ã‚Šã¾ã™ï¼š + Session スコープã®ã‚‚ã®ã¨ + SessionFactory スコープã®ã‚‚ã®ã§ã™ã€‚ - Session ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚ÍA - ƒZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚·‚é‚Æ‚«‚ÉŽw’肵‚Ü‚·B - Interceptor ‚ðˆø”‚ÉŽæ‚éSessionFactory.openSession() - ‚̃I[ƒo[ƒ[ƒhƒƒ\ƒbƒh‚̈ê‚‚ðŽg‚¢‚Ü‚·B + Session スコープã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—ã‚¿ã¯ã€ + セッションをオープンã™ã‚‹ã¨ãã«æŒ‡å®šã—ã¾ã™ã€‚ + Interceptor を引数ã«å–ã‚‹SessionFactory.openSession() + ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ãƒ¡ã‚½ãƒƒãƒ‰ã®ä¸€ã¤ã‚’使ã„ã¾ã™ã€‚ - SessionFactory ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚Í Configuration - ƒIƒuƒWƒFƒNƒg‚ðŽg‚Á‚Ä“o˜^‚µ‚Ü‚·B - ‚±‚ê‚Í SessionFactory ‚Ì\’z‚æ‚è‚à—D悳‚ê‚Ü‚·B - ‚±‚Ìê‡A’ñ‹Ÿ‚³‚ê‚éƒCƒ“ƒ^[ƒZƒvƒ^‚Í SessionFactory - ‚©‚çƒI[ƒvƒ“‚³‚ꂽ‚·‚ׂẴZƒbƒVƒ‡ƒ“‚É“K—p‚³‚ê‚Ü‚·B - ‚±‚ê‚ÍŽg—p‚·‚éƒCƒ“ƒ^[ƒZƒvƒ^‚𖾎¦“I‚ÉŽw’肵‚ăZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚µ‚È‚¢ŒÀ‚èA‚»‚¤‚È‚è‚Ü‚·B - SessionFactory ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚̓XƒŒƒbƒhƒZ[ƒt‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - •¡”‚̃ZƒbƒVƒ‡ƒ“‚ªiöÝ“I‚Éj‚±‚̃Cƒ“ƒ^[ƒZƒvƒ^‚𓯎ž•Às‚ÅŽg—p‚·‚邱‚ƂɂȂ邽‚ßA - ƒZƒbƒVƒ‡ƒ“ŒÅ—L‚Ìó‘Ô‚ðŠi”[‚µ‚È‚¢‚悤‚É‹C‚ð‚‚¯‚Ä‚­‚¾‚³‚¢B + SessionFactory スコープã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—タ㯠Configuration + オブジェクトを使ã£ã¦ç™»éŒ²ã—ã¾ã™ã€‚ + ã“れ㯠SessionFactory ã®æ§‹ç¯‰ã‚ˆã‚Šã‚‚優先ã•ã‚Œã¾ã™ã€‚ + ã“ã®å ´åˆã€æä¾›ã•ã‚Œã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—タ㯠SessionFactory + ã‹ã‚‰ã‚ªãƒ¼ãƒ—ンã•ã‚ŒãŸã™ã¹ã¦ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«é©ç”¨ã•ã‚Œã¾ã™ã€‚ + ã“ã‚Œã¯ä½¿ç”¨ã™ã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—タを明示的ã«æŒ‡å®šã—ã¦ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’オープンã—ãªã„é™ã‚Šã€ãã†ãªã‚Šã¾ã™ã€‚ + SessionFactory スコープã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—ã‚¿ã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 複数ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒï¼ˆæ½œåœ¨çš„ã«ï¼‰ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—ã‚¿ã‚’åŒæ™‚並行ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã«ãªã‚‹ãŸã‚〠+ セッション固有ã®çŠ¶æ…‹ã‚’æ ¼ç´ã—ãªã„よã†ã«æ°—ã‚’ã¤ã‘ã¦ãã ã•ã„。 @@ -143,46 +145,46 @@ public class AuditInterceptor extends EmptyInterceptor { - ƒCƒxƒ“ƒgƒVƒXƒeƒ€ + イベントシステム - ‰i‘±‰»‘w‚Å“Á’è‚̃Cƒxƒ“ƒg‚ɑΉž‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢ê‡A - Hibernate3‚Ì ƒCƒxƒ“ƒg ƒA[ƒLƒeƒNƒ`ƒƒ‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B - ƒCƒxƒ“ƒgƒVƒXƒeƒ€‚̓Cƒ“ƒ^[ƒZƒvƒ^‚ƈê‚ÉŽg‚¤‚©A‚Ü‚½‚̓Cƒ“ƒ^[ƒZƒvƒ^‚Ì‘ã‚í‚è‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B + 永続化層ã§ç‰¹å®šã®ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾å¿œã—ãªã‘ã‚Œã°ãªã‚‰ãªã„å ´åˆã€ + Hibernate3㮠イベント アーキテクãƒãƒ£ã‚’使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + イベントシステムã¯ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—ã‚¿ã¨ä¸€ç·’ã«ä½¿ã†ã‹ã€ã¾ãŸã¯ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—ã‚¿ã®ä»£ã‚ã‚Šã¨ã—ã¦ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ - –{Ž¿“I‚É Session ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Ì‚·‚ׂẴƒ\ƒbƒh‚ÍA - 1ŒÂ‚̃Cƒxƒ“ƒg‚Æ‘ŠŒÝ‚ÉŠÖ˜A‚µ‚Ü‚·B - —Ⴆ‚Î LoadEventAFlushEvent ‚È‚Ç‚ª‚ ‚è‚Ü‚· - i’è‹`ς݂̃Cƒxƒ“ƒgŒ^‚̈ꗗ‚ɂ‚¢‚Ä‚ÍAXMLÝ’èƒtƒ@ƒCƒ‹‚ÌDTD‚â - org.hibernate.event ƒpƒbƒP[ƒW‚𒲂ׂĂ­‚¾‚³‚¢jB - ƒŠƒNƒGƒXƒg‚ª‚±‚ê‚ç‚̃ƒ\ƒbƒh‚Ì1‚‚©‚çì‚ç‚ê‚é‚Æ‚«A - Hibernate‚Ì Session ‚Í“K؂ȃCƒxƒ“ƒg‚𶬂µA - ‚»‚̃Cƒxƒ“ƒgŒ^‚Éݒ肳‚ꂽƒCƒxƒ“ƒgƒŠƒXƒi‚É“n‚µ‚Ü‚·B - ‚·‚΂炵‚¢‚±‚Æ‚ÉA‚±‚ê‚ç‚̃ŠƒXƒi‚Í‚»‚̃ƒ\ƒbƒh‚Æ“¯‚¶ˆ—‚ðŽÀ‘•‚µ‚Ü‚·B - ‚Æ‚Í‚¢‚¦AƒŠƒXƒiƒCƒ“ƒ^[ƒtƒFƒCƒX‚̈ê‚Â‚ðŽ©—R‚ɃJƒXƒ^ƒ€ŽÀ‘•‚Å‚«‚Ü‚· - i‚‚܂èALoadEvent ‚Í“o˜^‚³‚ꂽ LoadEventListener - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŽÀ‘•‚É‚æ‚舗‚³‚ê‚Ü‚·jB - ‚»‚Ìê‡A‚»‚ÌŽÀ‘•‚É‚Í Session ‚©‚çì‚ç‚ꂽ‚ǂ̂悤‚È load() - ƒŠƒNƒGƒXƒg‚ð‚àˆ—‚·‚éÓ”C‚ª‚ ‚è‚Ü‚·B + 本質的㫠Session インターフェイスã®ã™ã¹ã¦ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ + 1個ã®ã‚¤ãƒ™ãƒ³ãƒˆã¨ç›¸äº’ã«é–¢é€£ã—ã¾ã™ã€‚ + 例ãˆã° LoadEventã€FlushEvent ãªã©ãŒã‚ã‚Šã¾ã™ + (定義済ã¿ã®ã‚¤ãƒ™ãƒ³ãƒˆåž‹ã®ä¸€è¦§ã«ã¤ã„ã¦ã¯ã€XML設定ファイルã®DTDã‚„ + org.hibernate.event パッケージを調ã¹ã¦ãã ã•ã„)。 + リクエストãŒã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã®1ã¤ã‹ã‚‰ä½œã‚‰ã‚Œã‚‹ã¨ã〠+ Hibernateã® Session ã¯é©åˆ‡ãªã‚¤ãƒ™ãƒ³ãƒˆã‚’生æˆã—〠+ ãã®ã‚¤ãƒ™ãƒ³ãƒˆåž‹ã«è¨­å®šã•ã‚ŒãŸã‚¤ãƒ™ãƒ³ãƒˆãƒªã‚¹ãƒŠã«æ¸¡ã—ã¾ã™ã€‚ + ã™ã°ã‚‰ã—ã„ã“ã¨ã«ã€ã“れらã®ãƒªã‚¹ãƒŠã¯ãã®ãƒ¡ã‚½ãƒƒãƒ‰ã¨åŒã˜å‡¦ç†ã‚’実装ã—ã¾ã™ã€‚ + ã¨ã¯ã„ãˆã€ãƒªã‚¹ãƒŠã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®ä¸€ã¤ã‚’自由ã«ã‚«ã‚¹ã‚¿ãƒ å®Ÿè£…ã§ãã¾ã™ + (ã¤ã¾ã‚Šã€LoadEvent ã¯ç™»éŒ²ã•ã‚ŒãŸ LoadEventListener + インターフェイスã®å®Ÿè£…ã«ã‚ˆã‚Šå‡¦ç†ã•ã‚Œã¾ã™ï¼‰ã€‚ + ãã®å ´åˆã€ãã®å®Ÿè£…ã«ã¯ Session ã‹ã‚‰ä½œã‚‰ã‚ŒãŸã©ã®ã‚ˆã†ãª load() + リクエストをも処ç†ã™ã‚‹è²¬ä»»ãŒã‚ã‚Šã¾ã™ã€‚ - ƒŠƒXƒi‚ÍŽ–ŽÀãƒVƒ“ƒOƒ‹ƒgƒ“‚Å‚ ‚é‚ÆŒ©‚È‚¹‚Ü‚·B - ‚‚܂胊ƒXƒi‚̓ŠƒNƒGƒXƒgŠÔ‚Å‹¤—L‚³‚ê‚邽‚ßA - ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Æ‚µ‚Äó‘Ô‚ð•ÛŽ‚·‚é‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + リスナã¯äº‹å®Ÿä¸Šã‚·ãƒ³ã‚°ãƒ«ãƒˆãƒ³ã§ã‚ã‚‹ã¨è¦‹ãªã›ã¾ã™ã€‚ + ã¤ã¾ã‚Šãƒªã‚¹ãƒŠã¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆé–“ã§å…±æœ‰ã•ã‚Œã‚‹ãŸã‚〠+ インスタンス変数ã¨ã—ã¦çŠ¶æ…‹ã‚’ä¿æŒã™ã‚‹ã¹ãã§ã¯ãªã„ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - ƒJƒXƒ^ƒ€ƒŠƒXƒi‚͈—‚µ‚½‚¢ƒCƒxƒ“ƒg‚ɂ‚¢‚Ä“K؂ȃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚·‚é‚ׂ«‚Å‚·B - •Ö—˜‚ÈŠî’êƒNƒ‰ƒX‚Ì‚¤‚¿‚̈ê‚‚ðŒp³‚µ‚Ä‚à‚æ‚¢‚Å‚· - i‚Ü‚½‚ÍHibernate‚ªƒfƒtƒHƒ‹ƒg‚ÅŽg—p‚·‚éƒCƒxƒ“ƒgƒŠƒXƒi‚ðŒp³‚µ‚Ä‚à‚æ‚¢‚Å‚·B - ‚·‚΂炵‚¢‚±‚Æ‚ÉA‚±‚Ì–Ú“I‚Ì‚½‚ß‚É”ñfinal‚Æ‚µ‚Ä錾‚³‚ê‚Ä‚¢‚Ü‚·jB - ƒJƒXƒ^ƒ€ƒŠƒXƒi‚Í Configuration ƒIƒuƒWƒFƒNƒg‚ðŽg‚Á‚ăvƒƒOƒ‰ƒ€‚©‚ç“o˜^‚·‚é‚©A - Hibernate‚ÌXMLÝ’èƒtƒ@ƒCƒ‹‚ÅŽw’è‚Å‚«‚Ü‚· - iƒvƒƒpƒeƒBƒtƒ@ƒCƒ‹‚Å錾“I‚ÉÝ’è‚·‚é•û–@‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñjB - ƒJƒXƒ^ƒ€ƒ[ƒhƒCƒxƒ“ƒgƒŠƒXƒi‚Ì—á‚ðŽ¦‚µ‚Ü‚·B + カスタムリスナã¯å‡¦ç†ã—ãŸã„イベントã«ã¤ã„ã¦é©åˆ‡ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã™ã‚‹ã¹ãã§ã™ã€‚ + 便利ãªåŸºåº•ã‚¯ãƒ©ã‚¹ã®ã†ã¡ã®ä¸€ã¤ã‚’継承ã—ã¦ã‚‚よã„ã§ã™ + (ã¾ãŸã¯HibernateãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ä½¿ç”¨ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆãƒªã‚¹ãƒŠã‚’継承ã—ã¦ã‚‚よã„ã§ã™ã€‚ + ã™ã°ã‚‰ã—ã„ã“ã¨ã«ã€ã“ã®ç›®çš„ã®ãŸã‚ã«éžfinalã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™ï¼‰ã€‚ + カスタムリスナ㯠Configuration オブジェクトを使ã£ã¦ãƒ—ログラムã‹ã‚‰ç™»éŒ²ã™ã‚‹ã‹ã€ + Hibernateã®XML設定ファイルã§æŒ‡å®šã§ãã¾ã™ + (プロパティファイルã§å®£è¨€çš„ã«è¨­å®šã™ã‚‹æ–¹æ³•ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“)。 + カスタムロードイベントリスナã®ä¾‹ã‚’示ã—ã¾ã™ã€‚ - ƒfƒtƒHƒ‹ƒgƒŠƒXƒiˆÈŠO‚̃ŠƒXƒi‚ðŽg‚¤‚É‚ÍAHibernate‚Ö‚ÌÝ’è‚à•K—v‚Å‚·F + デフォルトリスナ以外ã®ãƒªã‚¹ãƒŠã‚’使ã†ã«ã¯ã€Hibernateã¸ã®è¨­å®šã‚‚å¿…è¦ã§ã™ï¼š @@ -210,7 +212,7 @@ public class AuditInterceptor extends EmptyInterceptor { ]]> - ‚Ü‚½‚»‚Ì‘¼‚ÉAƒvƒƒOƒ‰ƒ€‚Å“o˜^‚·‚é•û–@‚à‚ ‚è‚Ü‚·F + ã¾ãŸãã®ä»–ã«ã€ãƒ—ログラムã§ç™»éŒ²ã™ã‚‹æ–¹æ³•ã‚‚ã‚ã‚Šã¾ã™ï¼š - ƒŠƒXƒi‚ð錾“I‚É“o˜^‚·‚é‚ÆA‚»‚̃ŠƒXƒi‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚Å‚«‚Ü‚¹‚ñB - •¡”‚Ì <listener/> —v‘f‚Å“¯‚¶ƒNƒ‰ƒX–¼‚ªŽg‚í‚ê‚é‚ÆA - ‚»‚ꂼ‚ê‚ÌŽQÆ‚Í‚»‚̃Nƒ‰ƒX‚Ì•ÊX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽw‚·‚±‚Æ‚É‚È‚è‚Ü‚·B - ƒŠƒXƒiŒ^‚̊ԂŃŠƒXƒiƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚é•K—v‚ª‚ ‚ê‚ÎA - ƒvƒƒOƒ‰ƒ€‚Å“o˜^‚·‚é•û–@‚ðÌ‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + リスナを宣言的ã«ç™»éŒ²ã™ã‚‹ã¨ã€ãã®ãƒªã‚¹ãƒŠã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’共有ã§ãã¾ã›ã‚“。 + 複数㮠<listener/> è¦ç´ ã§åŒã˜ã‚¯ãƒ©ã‚¹åãŒä½¿ã‚れるã¨ã€ + ãã‚Œãžã‚Œã®å‚ç…§ã¯ãã®ã‚¯ãƒ©ã‚¹ã®åˆ¥ã€…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’指ã™ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + リスナ型ã®é–“ã§ãƒªã‚¹ãƒŠã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’共有ã™ã‚‹å¿…è¦ãŒã‚ã‚Œã°ã€ + プログラムã§ç™»éŒ²ã™ã‚‹æ–¹æ³•ã‚’採らãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ‚È‚ºƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚ÄA“Á‰»‚µ‚½Œ^‚ðݒ莞‚ÉŽw’è‚·‚é‚Ì‚Å‚µ‚傤‚©H - ƒŠƒXƒi‚ÌŽÀ‘•ƒNƒ‰ƒX‚ÉA•¡”‚̃Cƒxƒ“ƒgƒŠƒXƒiƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚Å‚«‚é‚©‚ç‚Å‚·B - “o˜^Žž‚ɒljÁ‚ÅŒ^‚ðŽw’è‚·‚邱‚Æ‚ÅAƒJƒXƒ^ƒ€ƒŠƒXƒi‚Ìon/off‚ðݒ莞‚ÉŠÈ’P‚ÉØ‚è‘Ö‚¦‚ç‚ê‚Ü‚·B + ãªãœã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã—ã¦ã€ç‰¹åŒ–ã—ãŸåž‹ã‚’設定時ã«æŒ‡å®šã™ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ + リスナã®å®Ÿè£…クラスã«ã€è¤‡æ•°ã®ã‚¤ãƒ™ãƒ³ãƒˆãƒªã‚¹ãƒŠã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã§ãã‚‹ã‹ã‚‰ã§ã™ã€‚ + 登録時ã«è¿½åŠ ã§åž‹ã‚’指定ã™ã‚‹ã“ã¨ã§ã€ã‚«ã‚¹ã‚¿ãƒ ãƒªã‚¹ãƒŠã®on/offを設定時ã«ç°¡å˜ã«åˆ‡ã‚Šæ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚ - Hibernate‚Ì錾“I‚ȃZƒLƒ…ƒŠƒeƒB + Hibernateã®å®£è¨€çš„ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ - ˆê”Ê“I‚ÉHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì錾“I‚ȃZƒLƒ…ƒŠƒeƒB‚ÍAƒZƒbƒVƒ‡ƒ“ƒtƒ@ƒT[ƒh‘w‚ÅŠÇ—‚µ‚Ü‚·B - Œ»ÝAHiberenate3‚ÍJACC‚Å‹–‰Â‚µ‚©‚ÂAJAAS‚Å”FØ‚µ‚½ƒAƒNƒVƒ‡ƒ“‚ð‹–‚µ‚Ä‚¢‚Ü‚·B - ‚±‚ê‚̓Cƒxƒ“ƒgƒA[ƒLƒeƒNƒ`ƒƒ‚ÌÅãˆÊ‚É‘g‚Ýž‚Ü‚ê‚Ä‚¢‚éƒIƒvƒVƒ‡ƒ“‚Ì‹@”\‚Å‚·B + 一般的ã«Hibernateアプリケーションã®å®£è¨€çš„ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã¯ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚µãƒ¼ãƒ‰å±¤ã§ç®¡ç†ã—ã¾ã™ã€‚ + ç¾åœ¨ã€Hiberenate3ã¯JACCã§è¨±å¯ã—ã‹ã¤ã€JAASã§èªè¨¼ã—ãŸã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’許ã—ã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã¯ã‚¤ãƒ™ãƒ³ãƒˆã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã®æœ€ä¸Šä½ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„るオプションã®æ©Ÿèƒ½ã§ã™ã€‚ - ‚Ü‚¸Å‰‚ÉA“K؂ȃCƒxƒ“ƒgƒŠƒXƒi‚ðݒ肵‚ÄJAAS”FØ‚ðŽg‚¦‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + ã¾ãšæœ€åˆã«ã€é©åˆ‡ãªã‚¤ãƒ™ãƒ³ãƒˆãƒªã‚¹ãƒŠã‚’設定ã—ã¦JAASèªè¨¼ã‚’使ãˆã‚‹ã‚ˆã†ã«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -251,21 +253,21 @@ cfg.EventListeners().setLoadEventListeners(stack);]]> ]]> - “Á’è‚̃Cƒxƒ“ƒgŒ^‚ɑ΂µ‚Ä‚¿‚傤‚Ljê‚‚̃ŠƒXƒi‚ª‚ ‚é‚Æ‚«A + 特定ã®ã‚¤ãƒ™ãƒ³ãƒˆåž‹ã«å¯¾ã—ã¦ã¡ã‚‡ã†ã©ä¸€ã¤ã®ãƒªã‚¹ãƒŠãŒã‚ã‚‹ã¨ã〠<listener type="..." class="..."/> - ‚Í <event type="..."><listener class="..."/></event> - ‚ÌŠÈ—ªŒ`‚ɉ߂¬‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 㯠<event type="..."><listener class="..."/></event> + ã®ç°¡ç•¥å½¢ã«éŽãŽãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ŽŸ‚ÉA“¯‚¶‚­ hibernate.cfg.xml ‚Ń[ƒ‹‚Ƀp[ƒ~ƒbƒVƒ‡ƒ“‚ð—^‚¦‚Ä‚­‚¾‚³‚¢F + 次ã«ã€åŒã˜ã hibernate.cfg.xml ã§ãƒ­ãƒ¼ãƒ«ã«ãƒ‘ーミッションを与ãˆã¦ãã ã•ã„: ]]> - ‚±‚̃[ƒ‹–¼‚ÍŽg—p‚·‚éJACCƒvƒƒoƒCƒ_‚É—‰ð‚³‚ê‚éƒ[ƒ‹‚Å‚·B + ã“ã®ãƒ­ãƒ¼ãƒ«åã¯ä½¿ç”¨ã™ã‚‹JACCプロãƒã‚¤ãƒ€ã«ç†è§£ã•ã‚Œã‚‹ãƒ­ãƒ¼ãƒ«ã§ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml b/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml index 65fff8c111..91938d1c51 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml @@ -1,22 +1,22 @@ - + - —áF‚¢‚ë‚¢‚ë‚ȃ}ƒbƒsƒ“ƒO + 例:ã„ã‚ã„ã‚ãªãƒžãƒƒãƒ”ング - ‚±‚ÌÍ‚Å‚ÍA‚æ‚è•¡ŽG‚ÈŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚ð‚¢‚­‚‚©Ð‰î‚µ‚Ü‚·B + ã“ã®ç« ã§ã¯ã€ã‚ˆã‚Šè¤‡é›‘ãªé–¢é€£ã®ãƒžãƒƒãƒ”ングをã„ãã¤ã‹ç´¹ä»‹ã—ã¾ã™ã€‚ - ŒÙ—pŽÒ/]‹Æˆõ + 雇用者/従業員 - Employer ‚Æ Employee ‚ÌŠÖŒW‚ð•\‚·ˆÈ‰º‚̃‚ƒfƒ‹‚ÍA - ŠÖ˜A‚Ì•\Œ»‚ÉŽÀۂ̃Gƒ“ƒeƒBƒeƒBƒNƒ‰ƒXi Employment j - ‚ðŽg‚¢‚Ü‚·B - ‚È‚º‚È‚çA“¯‚¶2‚‚̃p[ƒeƒB‚É•¡”‚ÌŠúŠÔŒÙ—p‚³‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚ ‚肦‚é‚©‚ç‚Å‚·B - ‚¨‹à‚Ì’l‚Æ]‹Æˆõ‚Ì–¼‘O‚ðƒ‚ƒfƒ‹‰»‚·‚邽‚߂ɃRƒ“ƒ|[ƒlƒ“ƒg‚ðŽg‚Á‚Ä‚¢‚Ü‚·B + Employer 㨠Employee ã®é–¢ä¿‚を表ã™ä»¥ä¸‹ã®ãƒ¢ãƒ‡ãƒ«ã¯ã€ + 関連ã®è¡¨ç¾ã«å®Ÿéš›ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ï¼ˆ Employment ) + を使ã„ã¾ã™ã€‚ + ãªãœãªã‚‰ã€åŒã˜2ã¤ã®ãƒ‘ーティã«è¤‡æ•°ã®æœŸé–“雇用ã•ã‚Œã‚‹ã¨ã„ã†ã“ã¨ãŒã‚ã‚Šãˆã‚‹ã‹ã‚‰ã§ã™ã€‚ + ãŠé‡‘ã®å€¤ã¨å¾“業員ã®åå‰ã‚’モデル化ã™ã‚‹ãŸã‚ã«ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’使ã£ã¦ã„ã¾ã™ã€‚ @@ -29,7 +29,7 @@ - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̈ê—á‚Å‚·F + マッピングドキュメントã®ä¸€ä¾‹ã§ã™ï¼š @@ -82,7 +82,7 @@ ]]> - SchemaExport ‚Ŷ¬‚µ‚½ƒe[ƒuƒ‹ƒXƒL[ƒ}‚Å‚·B + SchemaExport ã§ç”Ÿæˆã—ãŸãƒ†ãƒ¼ãƒ–ルスキーマã§ã™ã€‚ - ìŽÒ/ì•i + 作者/ä½œå“ - Work , Author ‚»‚µ‚Ä Person - ‚ÌŠÖŒW‚ð•\‚·ˆÈ‰º‚̃‚ƒfƒ‹‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B - Work ‚Æ Author ‚ÌŠÖŒW‚𑽑Α½ŠÖ˜A‚Å•\‚µ‚Ä‚¢‚Ü‚·B - Author ‚Æ Person ‚ÌŠÖŒW‚͈ê‘ΈêŠÖ˜A‚Æ‚µ‚Ä•\‚µ‚Ä‚¢‚Ü‚·B - ‘¼‚É‚Í Author ‚ª Person ‚ðŠg’£‚·‚é‚Æ‚¢‚¤•û–@‚à‚ ‚è‚Ü‚·B + Work , Author ãã—㦠Person + ã®é–¢ä¿‚を表ã™ä»¥ä¸‹ã®ãƒ¢ãƒ‡ãƒ«ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„。 + Work 㨠Author ã®é–¢ä¿‚を多対多関連ã§è¡¨ã—ã¦ã„ã¾ã™ã€‚ + Author 㨠Person ã®é–¢ä¿‚ã¯ä¸€å¯¾ä¸€é–¢é€£ã¨ã—ã¦è¡¨ã—ã¦ã„ã¾ã™ã€‚ + ä»–ã«ã¯ Author ㌠Person ã‚’æ‹¡å¼µã™ã‚‹ã¨ã„ã†æ–¹æ³•ã‚‚ã‚ã‚Šã¾ã™ã€‚ @@ -142,7 +142,7 @@ create sequence employer_id_seq]]> - ˆÈ‰º‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Í‚±‚̂悤‚ÈŠÖŒW‚ð³Šm‚É•\Œ»‚µ‚Ä‚¢‚Ü‚·B + 以下ã®ãƒžãƒƒãƒ”ングドキュメントã¯ã“ã®ã‚ˆã†ãªé–¢ä¿‚を正確ã«è¡¨ç¾ã—ã¦ã„ã¾ã™ã€‚ @@ -198,11 +198,11 @@ create sequence employer_id_seq]]> ]]> - ‚±‚̃}ƒbƒsƒ“ƒO‚É‚Í4‚‚̃e[ƒuƒ‹‚ª‚ ‚è‚Ü‚·B + ã“ã®ãƒžãƒƒãƒ”ングã«ã¯4ã¤ã®ãƒ†ãƒ¼ãƒ–ルãŒã‚ã‚Šã¾ã™ã€‚ works , authors , persons - ‚Í‚»‚ꂼ‚êAŽdŽ–AìŽÒAl‚̃f[ƒ^‚ð•ÛŽ‚µ‚Ü‚·B - author_work ‚ÍìŽÒ‚Æì•i‚ðƒŠƒ“ƒN‚·‚éŠÖ˜Aƒe[ƒuƒ‹‚Å‚·B - ˆÈ‰º‚Í SchemaExport ‚Ŷ¬‚µ‚½ƒe[ƒuƒ‹ƒXƒL[ƒ}‚Å‚·B + ã¯ãã‚Œãžã‚Œã€ä»•äº‹ã€ä½œè€…ã€äººã®ãƒ‡ãƒ¼ã‚¿ã‚’ä¿æŒã—ã¾ã™ã€‚ + author_work ã¯ä½œè€…ã¨ä½œå“をリンクã™ã‚‹é–¢é€£ãƒ†ãƒ¼ãƒ–ルã§ã™ã€‚ + 以下㯠SchemaExport ã§ç”Ÿæˆã—ãŸãƒ†ãƒ¼ãƒ–ルスキーマã§ã™ã€‚ - ŒÚ‹q/’•¶/»•i + 顧客/注文/è£½å“ - ‚³‚ÄA Customer , Order , LineItem - Product ‚ÌŠÖŒW‚ð•\‚·ƒ‚ƒfƒ‹‚ðl‚¦‚Ä‚Ý‚Ü‚µ‚傤B - Customer ‚Æ Order ‚͈ê‘Α½‚ÌŠÖ˜A‚Å‚·‚ªA + ã•ã¦ã€ Customer , Order , LineItem + Product ã®é–¢ä¿‚を表ã™ãƒ¢ãƒ‡ãƒ«ã‚’考ãˆã¦ã¿ã¾ã—ょã†ã€‚ + Customer 㨠Order ã¯ä¸€å¯¾å¤šã®é–¢é€£ã§ã™ãŒã€ Order / LineItem / Product - ‚͂ǂ̂悤‚É•\Œ»‚·‚é‚ׂ«‚Å‚µ‚傤‚©H - LineItem ‚ðAOrder ‚Æ Product - ‚Ì‘½‘Α½ŠÖ˜A‚ð•\Œ»‚·‚éŠÖ˜AƒNƒ‰ƒX‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚½B - Hibernate‚Å‚Í‚±‚ê‚ðƒRƒ“ƒ|ƒWƒbƒg—v‘f‚ƌĂт܂·B + ã¯ã©ã®ã‚ˆã†ã«è¡¨ç¾ã™ã‚‹ã¹ãã§ã—ょã†ã‹ï¼Ÿ + LineItem ã‚’ã€Order 㨠Product + ã®å¤šå¯¾å¤šé–¢é€£ã‚’表ç¾ã™ã‚‹é–¢é€£ã‚¯ãƒ©ã‚¹ã¨ã—ã¦ãƒžãƒƒãƒ”ングã—ã¾ã—ãŸã€‚ + Hibernateã§ã¯ã“れをコンãƒã‚¸ãƒƒãƒˆè¦ç´ ã¨å‘¼ã³ã¾ã™ã€‚ @@ -266,7 +266,7 @@ alter table author_work - ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒgF + マッピングドキュメント: @@ -309,8 +309,8 @@ alter table author_work customers , orders , line_items , - products ‚Í‚»‚ꂼ‚êAŒÚ‹qA’•¶A’•¶–¾×A»•i‚̃f[ƒ^‚ð•ÛŽ‚µ‚Ü‚·B - line_items ‚Í’•¶‚Æ»•i‚ðƒŠƒ“ƒN‚·‚éŠÖ˜Aƒe[ƒuƒ‹‚Æ‚µ‚Ä‚à“­‚«‚Ü‚·B + products ã¯ãã‚Œãžã‚Œã€é¡§å®¢ã€æ³¨æ–‡ã€æ³¨æ–‡æ˜Žç´°ã€è£½å“ã®ãƒ‡ãƒ¼ã‚¿ã‚’ä¿æŒã—ã¾ã™ã€‚ + line_items ã¯æ³¨æ–‡ã¨è£½å“をリンクã™ã‚‹é–¢é€£ãƒ†ãƒ¼ãƒ–ルã¨ã—ã¦ã‚‚åƒãã¾ã™ã€‚ - ŽíXŽG‘½‚ȃ}ƒbƒsƒ“ƒO—á + 種々雑多ãªãƒžãƒƒãƒ”ング例 - ‚±‚±‚É‚ ‚é—á‚Í‚·‚ׂÄHibernate‚̃eƒXƒgƒXƒC[ƒg‚©‚çŽæ‚è‚Ü‚µ‚½B - ‚»‚±‚É‚ÍA‘¼‚É‚à‚½‚­‚³‚ñ‚̃}ƒbƒsƒ“ƒO‚̗Ⴊ‚ ‚è‚Ü‚·B - HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì test ƒtƒHƒ‹ƒ_‚ðŒ©‚Ä‚­‚¾‚³‚¢B + ã“ã“ã«ã‚る例ã¯ã™ã¹ã¦Hibernateã®ãƒ†ã‚¹ãƒˆã‚¹ã‚¤ãƒ¼ãƒˆã‹ã‚‰å–ã‚Šã¾ã—ãŸã€‚ + ãã“ã«ã¯ã€ä»–ã«ã‚‚ãŸãã•ã‚“ã®ãƒžãƒƒãƒ”ングã®ä¾‹ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernateディストリビューション㮠test フォルダを見ã¦ãã ã•ã„。 - TODO: ‚±‚±‚É•¶Í‚ð–„‚ß‚é + TODO: ã“ã“ã«æ–‡ç« ã‚’埋ã‚ã‚‹ - uŒ^•t‚¯‚³‚ꂽvˆê‘ΈêŠÖ˜A + 「型付ã‘ã•ã‚ŒãŸã€ä¸€å¯¾ä¸€é–¢é€£ - •¡‡ƒL[‚Ì—á + 複åˆã‚­ãƒ¼ã®ä¾‹ - •¡‡ƒL[‘®«‚ð‹¤—L‚·‚鑽‘Α½ + 複åˆã‚­ãƒ¼å±žæ€§ã‚’共有ã™ã‚‹å¤šå¯¾å¤š @@ -547,7 +547,7 @@ alter table line_items - discrimination‚ÉŠî‚­“à—e + discriminationã«åŸºã¥ã内容 @@ -601,7 +601,7 @@ alter table line_items - ‘ã‘ÖƒL[‚ÌŠÖ˜A + 代替キーã®é–¢é€£ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml b/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml index 44aa4d714b..3722d3d9a5 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml @@ -1,70 +1,72 @@ - + + + - —áFe/Žq‹Ÿ + <title>例:親/å­ä¾› - V‹Kƒ†[ƒU‚ªHibernate‚ðŽg‚Á‚Ä‚Ü‚¸Å‰‚Ɉµ‚¤ƒ‚ƒfƒ‹‚̈ê‚‚ÉAeŽqŒ^‚̃‚ƒfƒ‹‰»‚ª‚ ‚è‚Ü‚·B - ‚±‚̃‚ƒfƒ‹‰»‚É‚Í“ñ‚‚̃Aƒvƒ[ƒ`‚ª‘¶Ý‚µ‚Ü‚·B‚Æ‚è‚킯V‹Kƒ†[ƒU‚É‚Æ‚Á‚ÄA - ‚³‚Ü‚´‚Ü‚È——R‚©‚çÅ‚à•Ö—˜‚¾‚ÆŽv‚í‚ê‚éƒAƒvƒ[ƒ`‚ÍAe ‚©‚ç Žq‹Ÿ - ‚Ö‚Ì <one-to-many> ŠÖ˜A‚É‚æ‚è e ‚Æ Žq‹Ÿ - ‚Ì—¼•û‚ðƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚Æ‚µ‚ă‚ƒfƒŠƒ“ƒO‚·‚é•û–@‚Å‚· - i‚à‚¤ˆê‚‚̕û–@‚ÍAŽq‹Ÿ ‚ð <composite-element> ‚Æ‚µ‚Ä’è‹`‚·‚é‚à‚Ì‚Å‚·jB - ‚±‚ê‚ÅiHibernate‚É‚¨‚¯‚éjˆê‘Α½ŠÖ˜A‚̃fƒtƒHƒ‹ƒg‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ªA’Êí‚Ì•¡‡—v‘f‚̃}ƒbƒsƒ“ƒO‚æ‚è‚àA - eŽqŠÖŒW‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚©‚牓‚¢‚±‚Æ‚ª‚í‚©‚è‚Ü‚·B - ‚»‚ê‚Å‚ÍeŽqŠÖŒW‚ðŒø—¦“I‚©‚ƒGƒŒƒKƒ“ƒg‚Ƀ‚ƒfƒŠƒ“ƒO‚·‚邽‚ß‚ÉA - ƒJƒXƒP[ƒh‘€ì‚ðŽg‚Á‚½‘o•ûŒüˆê‘Α½ŠÖ˜A ‚̈µ‚¢•û‚ðà–¾‚µ‚Ü‚·B‚±‚ê‚Í‚Ü‚Á‚½‚­“‚¢‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + æ–°è¦ãƒ¦ãƒ¼ã‚¶ãŒHibernateを使ã£ã¦ã¾ãšæœ€åˆã«æ‰±ã†ãƒ¢ãƒ‡ãƒ«ã®ä¸€ã¤ã«ã€è¦ªå­åž‹ã®ãƒ¢ãƒ‡ãƒ«åŒ–ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã®ãƒ¢ãƒ‡ãƒ«åŒ–ã«ã¯äºŒã¤ã®ã‚¢ãƒ—ローãƒãŒå­˜åœ¨ã—ã¾ã™ã€‚ã¨ã‚Šã‚ã‘æ–°è¦ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦ã€ + ã•ã¾ã–ã¾ãªç†ç”±ã‹ã‚‰æœ€ã‚‚便利ã ã¨æ€ã‚れるアプローãƒã¯ã€è¦ª ã‹ã‚‰ å­ä¾› + ã¸ã® <one-to-many> 関連ã«ã‚ˆã‚Š 親 㨠å­ä¾› + ã®ä¸¡æ–¹ã‚’エンティティクラスã¨ã—ã¦ãƒ¢ãƒ‡ãƒªãƒ³ã‚°ã™ã‚‹æ–¹æ³•ã§ã™ + (もã†ä¸€ã¤ã®æ–¹æ³•ã¯ã€å­ä¾› ã‚’ <composite-element> ã¨ã—ã¦å®šç¾©ã™ã‚‹ã‚‚ã®ã§ã™ï¼‰ã€‚ + ã“ã‚Œã§ï¼ˆHibernateã«ãŠã‘る)一対多関連ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ãŒã€é€šå¸¸ã®è¤‡åˆè¦ç´ ã®ãƒžãƒƒãƒ”ングよりも〠+ 親å­é–¢ä¿‚ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã‹ã‚‰é ã„ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚ + ãã‚Œã§ã¯è¦ªå­é–¢ä¿‚を効率的ã‹ã¤ã‚¨ãƒ¬ã‚¬ãƒ³ãƒˆã«ãƒ¢ãƒ‡ãƒªãƒ³ã‚°ã™ã‚‹ãŸã‚ã«ã€ + カスケードæ“作を使ã£ãŸåŒæ–¹å‘一対多関連 ã®æ‰±ã„方を説明ã—ã¾ã™ã€‚ã“ã‚Œã¯ã¾ã£ãŸã難ã—ã„ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠÖ‚·‚é’ˆÓ + コレクションã«é–¢ã™ã‚‹æ³¨æ„ - Hibernate‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍŽ©g‚̃Gƒ“ƒeƒBƒeƒB‚̘_—“I‚È•”•ª‚Æl‚¦‚ç‚êA - Œˆ‚µ‚Ä•ïŠÜ‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚ê‚Í’v–½“I‚ȈႢ‚Å‚·I - ‚±‚ê‚͈ȉº‚̂悤‚ÈŒ‹‰Ê‚É‚È‚è‚Ü‚·F + Hibernateã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯è‡ªèº«ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®è«–ç†çš„ãªéƒ¨åˆ†ã¨è€ƒãˆã‚‰ã‚Œã€ + 決ã—ã¦åŒ…å«ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã“ã‚Œã¯è‡´å‘½çš„ãªé•ã„ã§ã™ï¼ + ã“ã‚Œã¯ä»¥ä¸‹ã®ã‚ˆã†ãªçµæžœã«ãªã‚Šã¾ã™ï¼š - ƒIƒuƒWƒFƒNƒg‚ðƒRƒŒƒNƒVƒ‡ƒ“‚©‚çíœA‚Ü‚½‚̓RƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚Æ‚«A - ƒRƒŒƒNƒVƒ‡ƒ“‚̃I[ƒi[‚̃o[ƒWƒ‡ƒ“”Ô†‚̓Cƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚Ü‚·B + オブジェクトをコレクションã‹ã‚‰å‰Šé™¤ã€ã¾ãŸã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«è¿½åŠ ã™ã‚‹ã¨ã〠+ コレクションã®ã‚ªãƒ¼ãƒŠãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã•ã‚Œã¾ã™ã€‚ - ‚à‚µƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç휂³‚ꂽƒIƒuƒWƒFƒNƒg‚ª’lŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX - i—Ⴆ‚΃Rƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg)‚¾‚Á‚½‚È‚ç‚ÎA‚»‚̃IƒuƒWƒFƒNƒg‚͉i‘±“I‚Å‚Í‚È‚­‚È‚èA - ‚»‚Ìó‘Ԃ̓f[ƒ^ƒx[ƒX‚©‚犮‘S‚É휂³‚ê‚Ü‚·B - “¯‚¶‚悤‚ÉA’lŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚ÆA‚»‚Ìó‘Ô‚Í‚·‚®‚ɉi‘±“I‚É‚È‚è‚Ü‚·B + ã‚‚ã—コレクションã‹ã‚‰å‰Šé™¤ã•ã‚ŒãŸã‚ªãƒ–ジェクトãŒå€¤åž‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ + (例ãˆã°ã‚³ãƒ³ãƒã‚¸ãƒƒãƒˆã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆ)ã ã£ãŸãªã‚‰ã°ã€ãã®ã‚ªãƒ–ジェクトã¯æ°¸ç¶šçš„ã§ã¯ãªããªã‚Šã€ + ãã®çŠ¶æ…‹ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰å®Œå…¨ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ + åŒã˜ã‚ˆã†ã«ã€å€¤åž‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’コレクションã«è¿½åŠ ã™ã‚‹ã¨ã€ãã®çŠ¶æ…‹ã¯ã™ãã«æ°¸ç¶šçš„ã«ãªã‚Šã¾ã™ã€‚ - ˆê•ûA‚à‚µƒGƒ“ƒeƒBƒeƒB‚ªƒRƒŒƒNƒVƒ‡ƒ“iˆê‘Α½‚Ü‚½‚Í‘½‘Α½ŠÖ˜A)‚©‚ç휂³‚ê‚Ä‚àA - ƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚ê‚Í휂³‚ê‚Ü‚¹‚ñB‚±‚Ì“®ì‚ÍŠ®‘S‚ɈêŠÑ‚µ‚Ä‚¢‚Ü‚·B - ‚·‚È‚í‚¿A‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ì“à•”ó‘Ô‚ð•ÏX‚µ‚Ä‚àAŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ªÁ–Å‚·‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - “¯—l‚ÉAƒGƒ“ƒeƒBƒeƒB‚ªƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚³‚ê‚Ä‚àAƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚̃Gƒ“ƒeƒBƒeƒB‚͉i‘±“I‚É‚Í‚È‚è‚Ü‚¹‚ñB + 一方ã€ã‚‚ã—エンティティãŒã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆä¸€å¯¾å¤šã¾ãŸã¯å¤šå¯¾å¤šé–¢é€£)ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¦ã‚‚〠+ デフォルトã§ã¯ãã‚Œã¯å‰Šé™¤ã•ã‚Œã¾ã›ã‚“。ã“ã®å‹•ä½œã¯å®Œå…¨ã«ä¸€è²«ã—ã¦ã„ã¾ã™ã€‚ + ã™ãªã‚ã¡ã€ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å†…部状態を変更ã—ã¦ã‚‚ã€é–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒæ¶ˆæ»…ã™ã¹ãã§ã¯ãªã„ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + åŒæ§˜ã«ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«è¿½åŠ ã•ã‚Œã¦ã‚‚ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯ãã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¯æ°¸ç¶šçš„ã«ã¯ãªã‚Šã¾ã›ã‚“。 - ‚»‚Ì‘ã‚í‚è‚ÉAƒfƒtƒHƒ‹ƒg‚Ì“®ì‚Å‚ÍAƒGƒ“ƒeƒBƒeƒB‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚Æ’P‚É“ñ‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚̃Šƒ“ƒN‚ð쬂µA - ˆê•ûƒGƒ“ƒeƒBƒeƒB‚ð휂·‚é‚ƃŠƒ“ƒN‚à휂µ‚Ü‚·B‚±‚ê‚Í‚·‚ׂẴP[ƒX‚É‚¨‚¢‚Ä”ñí‚É“KØ‚Å‚·B - ‚±‚ꂪ“KØ‚Å‚È‚¢‚Ì‚Íe/ŽqŠÖŒW‚Ìꇂł·B‚±‚Ìꇎq‹Ÿ‚̶‘¶‚Íe‚̃‰ƒCƒtƒTƒCƒNƒ‹‚ɧŒÀ‚³‚ê‚é‚©‚ç‚Å‚·B + ãã®ä»£ã‚ã‚Šã«ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‹•ä½œã§ã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’コレクションã«è¿½åŠ ã™ã‚‹ã¨å˜ã«äºŒã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£é–“ã®ãƒªãƒ³ã‚¯ã‚’作æˆã—〠+ 一方エンティティを削除ã™ã‚‹ã¨ãƒªãƒ³ã‚¯ã‚‚削除ã—ã¾ã™ã€‚ã“ã‚Œã¯ã™ã¹ã¦ã®ã‚±ãƒ¼ã‚¹ã«ãŠã„ã¦éžå¸¸ã«é©åˆ‡ã§ã™ã€‚ + ã“ã‚ŒãŒé©åˆ‡ã§ãªã„ã®ã¯è¦ª/å­é–¢ä¿‚ã®å ´åˆã§ã™ã€‚ã“ã®å ´åˆå­ä¾›ã®ç”Ÿå­˜ã¯è¦ªã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã«åˆ¶é™ã•ã‚Œã‚‹ã‹ã‚‰ã§ã™ã€‚ - ‘o•ûŒüˆê‘Α½ + <title>åŒæ–¹å‘一対多 - Parent ‚©‚ç Child ‚Ö‚Ì’Pƒ‚È <one-to-many> ŠÖ˜A‚©‚çŽn‚ß‚é‚Æ‚µ‚Ü‚·B + Parent ã‹ã‚‰ Child ã¸ã®å˜ç´”㪠<one-to-many> 関連ã‹ã‚‰å§‹ã‚ã‚‹ã¨ã—ã¾ã™ã€‚ @@ -73,7 +75,7 @@ ]]> - ˆÈ‰º‚̃R[ƒh‚ðŽÀs‚·‚é‚ÆA + 以下ã®ã‚³ãƒ¼ãƒ‰ã‚’実行ã™ã‚‹ã¨ã€ - Hibernate‚Í“ñ‚‚ÌSQL•¶‚ð”­s‚µ‚Ü‚·: + Hibernateã¯äºŒã¤ã®SQL文を発行ã—ã¾ã™: - c‚ɑ΂·‚郌ƒR[ƒh‚𶬂·‚éINSERT + cã«å¯¾ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹INSERT - p‚©‚çc‚ւ̃Šƒ“ƒN‚ð쬂·‚éUPDATE + pã‹ã‚‰cã¸ã®ãƒªãƒ³ã‚¯ã‚’作æˆã™ã‚‹UPDATE - ‚±‚ê‚Í”ñŒø—¦“I‚È‚¾‚¯‚Å‚Í‚È‚­Aparent_id ƒJƒ‰ƒ€‚É‚¨‚¢‚Ä NOT NULL §–ñ‚Ɉᔽ‚µ‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å not-null="true" ‚ÆŽw’è‚·‚邱‚Æ‚ÅAnull§–ñˆá”½‚ð‰ðŒˆ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·: + ã“ã‚Œã¯éžåŠ¹çŽ‡çš„ãªã ã‘ã§ã¯ãªãã€parent_id カラムã«ãŠã„㦠NOT NULL 制約ã«é•åã—ã¾ã™ã€‚ + コレクションã®ãƒžãƒƒãƒ”ング㧠not-null="true" ã¨æŒ‡å®šã™ã‚‹ã“ã¨ã§ã€null制約é•åを解決ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™: @@ -110,24 +112,24 @@ session.flush();]]> ]]> - ‚µ‚©‚µ‚±‚̉ðŒˆô‚Í„§‚Å‚«‚Ü‚¹‚ñB + ã—ã‹ã—ã“ã®è§£æ±ºç­–ã¯æŽ¨å¥¨ã§ãã¾ã›ã‚“。 - ‚±‚Ì“®ì‚̪–{“I‚ÈŒ´ˆö‚ÍAp ‚©‚ç c ‚ւ̃Šƒ“ƒN - iŠO•”ƒL[ parent_id)‚Í Child ƒIƒuƒWƒFƒNƒg‚Ìó‘Ԃ̈ꕔ‚Æ‚Íl‚¦‚ç‚ꂸA - ‚»‚Ì‚½‚ß INSERT ‚É‚æ‚Á‚ăŠƒ“ƒN‚ª¶¬‚³‚ê‚È‚¢‚±‚Æ‚Å‚·B - ‚Å‚·‚©‚çA‰ðŒˆô‚̓Šƒ“ƒN‚ðChildƒ}ƒbƒsƒ“ƒO‚̈ꕔ‚É‚·‚邱‚Æ‚Å‚·B + ã“ã®å‹•ä½œã®æ ¹æœ¬çš„ãªåŽŸå› ã¯ã€p ã‹ã‚‰ c ã¸ã®ãƒªãƒ³ã‚¯ + (外部キー parent_id)㯠Child オブジェクトã®çŠ¶æ…‹ã®ä¸€éƒ¨ã¨ã¯è€ƒãˆã‚‰ã‚Œãšã€ + ãã®ãŸã‚ INSERT ã«ã‚ˆã£ã¦ãƒªãƒ³ã‚¯ãŒç”Ÿæˆã•ã‚Œãªã„ã“ã¨ã§ã™ã€‚ + ã§ã™ã‹ã‚‰ã€è§£æ±ºç­–ã¯ãƒªãƒ³ã‚¯ã‚’Childマッピングã®ä¸€éƒ¨ã«ã™ã‚‹ã“ã¨ã§ã™ã€‚ ]]> - (‚Ü‚½ Child ƒNƒ‰ƒX‚É parent ƒvƒƒpƒeƒB‚ð’ljÁ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B) + (ã¾ãŸ Child クラス㫠parent プロパティを追加ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚) - ‚»‚ê‚Å‚Í Child ƒGƒ“ƒeƒBƒeƒB‚ªƒŠƒ“ƒN‚Ìó‘Ô‚ð§Œä‚·‚é‚悤‚É‚È‚Á‚½‚Ì‚ÅA - ƒRƒŒƒNƒVƒ‡ƒ“‚ªƒŠƒ“ƒN‚ðXV‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤B‚»‚ê‚É‚Í inverse ‘®«‚ðŽg‚¢‚Ü‚·B + ãã‚Œã§ã¯ Child エンティティãŒãƒªãƒ³ã‚¯ã®çŠ¶æ…‹ã‚’制御ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸã®ã§ã€ + コレクションãŒãƒªãƒ³ã‚¯ã‚’æ›´æ–°ã—ãªã„よã†ã«ã—ã¾ã—ょã†ã€‚ãã‚Œã«ã¯ inverse 属性を使ã„ã¾ã™ã€‚ @@ -136,7 +138,7 @@ session.flush();]]> ]]> - ˆÈ‰º‚̃R[ƒh‚ðŽg‚¦‚ÎAV‚µ‚¢ Child ‚ð’ljÁ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + 以下ã®ã‚³ãƒ¼ãƒ‰ã‚’使ãˆã°ã€æ–°ã—ã„ Child を追加ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ‚±‚ê‚É‚æ‚èASQL‚Ì INSERT •¶‚ªˆê‚‚¾‚¯‚ª”­s‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½I + ã“ã‚Œã«ã‚ˆã‚Šã€SQLã® INSERT æ–‡ãŒä¸€ã¤ã ã‘ãŒç™ºè¡Œã•ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸï¼ - ‚à‚¤­‚µ‹­‰»‚·‚é‚É‚ÍAParent ‚Ì addChild() ƒƒ\ƒbƒh‚ð쬂µ‚Ü‚·B + ã‚‚ã†å°‘ã—強化ã™ã‚‹ã«ã¯ã€Parent ã® addChild() メソッドを作æˆã—ã¾ã™ã€‚ }]]> - Child ‚ð’ljÁ‚·‚éƒR[ƒh‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·B + Child を追加ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¯ã“ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ - ƒ‰ƒCƒtƒTƒCƒNƒ‹‚̃JƒXƒP[ƒh + ライフサイクルã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ - –¾Ž¦“I‚É save() ‚ðƒR[ƒ‹‚·‚é‚Ì‚Í‚Ü‚¾”ς킵‚¢‚à‚Ì‚Å‚·B‚±‚ê‚ðƒJƒXƒP[ƒh‚ðŽg‚Á‚đΈ‚µ‚Ü‚·B + 明示的㫠save() をコールã™ã‚‹ã®ã¯ã¾ã ç…©ã‚ã—ã„ã‚‚ã®ã§ã™ã€‚ã“れをカスケードを使ã£ã¦å¯¾å‡¦ã—ã¾ã™ã€‚ @@ -184,7 +186,7 @@ session.flush();]]> ]]> - ‚±‚ê‚É‚æ‚èæ‚قǂ̃R[ƒh‚ð‚±‚Ì‚æ‚¤‚É’Pƒ‰»‚µ‚Ü‚· + ã“ã‚Œã«ã‚ˆã‚Šå…ˆã»ã©ã®ã‚³ãƒ¼ãƒ‰ã‚’ã“ã®ã‚ˆã†ã«å˜ç´”化ã—ã¾ã™ - “¯—l‚É Parent ‚ð•Û‘¶‚Ü‚½‚Í휂·‚é‚Æ‚«‚ÉAŽq‹Ÿ‚ðˆê‚ˆê‚ÂŽæ‚èo‚µ‚Ĉµ‚¤•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ˆÈ‰º‚̃R[ƒh‚Í p ‚ð휂µA‚»‚µ‚ăf[ƒ^ƒx[ƒX‚©‚ç‚»‚ÌŽq‹Ÿ‚ð‚·‚×‚Ä휂µ‚Ü‚·B + åŒæ§˜ã« Parent ã‚’ä¿å­˜ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã¨ãã«ã€å­ä¾›ã‚’一ã¤ä¸€ã¤å–り出ã—ã¦æ‰±ã†å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + 以下ã®ã‚³ãƒ¼ãƒ‰ã¯ p を削除ã—ã€ãã—ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãã®å­ä¾›ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã€‚ - ‚µ‚©‚µ‚±‚̃R[ƒh‚Í + ã—ã‹ã—ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ - ƒf[ƒ^ƒx[ƒX‚©‚ç c ‚ð휂µ‚Ü‚¹‚ñBp ‚ւ̃Šƒ“ƒN‚ð휂·‚é - i‚»‚µ‚Ä‚±‚̃P[ƒX‚Å‚Í NOT NULL §–ñˆá”½‚ðˆø‚«‹N‚±‚·j‚¾‚¯‚Å‚·B - Child ‚Ì delete() ‚𖾎¦‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + データベースã‹ã‚‰ c を削除ã—ã¾ã›ã‚“。p ã¸ã®ãƒªãƒ³ã‚¯ã‚’削除ã™ã‚‹ + (ãã—ã¦ã“ã®ã‚±ãƒ¼ã‚¹ã§ã¯ NOT NULL 制約é•åを引ãèµ·ã“ã™ï¼‰ã ã‘ã§ã™ã€‚ + Child ã® delete() を明示ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - ¡‚±‚̃P[ƒX‚Å‚ÍŽÀÛ‚É Child ‚ªe‚È‚µ‚Å‚Í‘¶Ý‚Å‚«‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½B - ‚»‚Ì‚½‚ßA‚à‚µƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç Child ‚ðŽæ‚蜂­ê‡A‚±‚ê‚à휂µ‚½‚¢‚Å‚·B - ‚»‚Ì‚½‚ß‚É‚Í cascade="all-delete-orphan" ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 今ã“ã®ã‚±ãƒ¼ã‚¹ã§ã¯å®Ÿéš›ã« Child ãŒè¦ªãªã—ã§ã¯å­˜åœ¨ã§ããªã„よã†ã«ãªã‚Šã¾ã—ãŸã€‚ + ãã®ãŸã‚ã€ã‚‚ã—コレクションã‹ã‚‰ Child ã‚’å–り除ãå ´åˆã€ã“れも削除ã—ãŸã„ã§ã™ã€‚ + ãã®ãŸã‚ã«ã¯ cascade="all-delete-orphan" を使ã‚ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -235,35 +237,35 @@ session.flush();]]> ]]> - ’ˆÓFƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å inverse="true" ‚ÆŽw’肵‚Ä‚àA - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̃CƒeƒŒ[ƒVƒ‡ƒ“‚É‚æ‚Á‚ÄAˆË‘RƒJƒXƒP[ƒh‚ªŽÀs‚³‚ê‚Ü‚·B - ‚»‚Ì‚½‚ß‚à‚µƒJƒXƒP[ƒh‚ŃIƒuƒWƒFƒNƒg‚ðƒZ[ƒuAíœAXV‚·‚é•K—v‚ª‚ ‚é‚È‚çA - ‚»‚ê‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB’P‚É setParent() ‚ðŒÄ‚Ô‚¾‚¯‚Å‚Í•s\•ª‚Å‚·B + 注æ„:コレクションã®ãƒžãƒƒãƒ”ング㧠inverse="true" ã¨æŒ‡å®šã—ã¦ã‚‚〠+ コレクションã®è¦ç´ ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã‚ˆã£ã¦ã€ä¾ç„¶ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ + ãã®ãŸã‚ã‚‚ã—カスケードã§ã‚ªãƒ–ジェクトをセーブã€å‰Šé™¤ã€æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãªã‚‰ã€ + ãれをコレクションã«è¿½åŠ ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。å˜ã« setParent() を呼ã¶ã ã‘ã§ã¯ä¸å分ã§ã™ã€‚ - ƒJƒXƒP[ƒh‚Æ <literal>unsaved-value</literal> + カスケード㨠<literal>unsaved-value</literal> - Parent ‚ªA‚ ‚é Session ‚Ń[ƒh‚³‚êAUI‚̃AƒNƒVƒ‡ƒ“‚Å•ÏX‚ª‰Á‚¦‚ç‚êA - update() ‚ðŒÄ‚ñ‚Å‚±‚Ì•ÏX‚ðV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ʼni‘±‰»‚µ‚½‚¢‚Æ‚µ‚Ü‚·B - Parent ‚ªŽq‹Ÿ‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽ‚¿AƒJƒXƒP[ƒhXV‚ª—LŒø‚É‚È‚Á‚Ä‚¢‚邽‚ßA - Hibernate‚Í‚Ç‚ÌŽq‹Ÿ‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚©A‚ǂꂪƒf[ƒ^ƒx[ƒX‚ÌŠù‘¶‚Ìs‚É‘Š“–‚·‚é‚Ì‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B - Parent ‚Æ Child ‚Ì—¼•û‚ª java.lang.Long - Œ^‚ÌŽ¯•ÊƒvƒƒpƒeƒB‚𶬂µ‚½‚Æ‚µ‚Ü‚µ‚傤B - Hibernate‚Í‚Ç‚ÌŽq‹Ÿ‚ªV‚µ‚¢‚à‚Ì‚©‚ðŒˆ’è‚·‚邽‚ß‚ÉŽ¯•ÊƒvƒƒpƒeƒB‚Ì’l‚ðŽg‚¢‚Ü‚·(version‚âtimestampƒvƒƒpƒeƒB‚àŽg‚¦‚Ü‚·B - ŽQÆ)BHibernate3‚É‚È‚Á‚ÄA - –¾Ž¦“I‚É unsaved-value ‚ðŽw’è‚·‚é•K—v‚Í‚È‚­‚È‚è‚Ü‚µ‚½B + Parent ãŒã€ã‚ã‚‹ Session ã§ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã€UIã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã§å¤‰æ›´ãŒåŠ ãˆã‚‰ã‚Œã€ + update() を呼んã§ã“ã®å¤‰æ›´ã‚’æ–°ã—ã„セッションã§æ°¸ç¶šåŒ–ã—ãŸã„ã¨ã—ã¾ã™ã€‚ + Parent ãŒå­ä¾›ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’æŒã¡ã€ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰æ›´æ–°ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹ãŸã‚〠+ Hibernateã¯ã©ã®å­ä¾›ãŒæ–°ã—ãインスタンス化ã•ã‚ŒãŸã‹ã€ã©ã‚ŒãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ—¢å­˜ã®è¡Œã«ç›¸å½“ã™ã‚‹ã®ã‹ã‚’知る必è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Parent 㨠Child ã®ä¸¡æ–¹ãŒ java.lang.Long + åž‹ã®è­˜åˆ¥ãƒ—ロパティを生æˆã—ãŸã¨ã—ã¾ã—ょã†ã€‚ + Hibernateã¯ã©ã®å­ä¾›ãŒæ–°ã—ã„ã‚‚ã®ã‹ã‚’決定ã™ã‚‹ãŸã‚ã«è­˜åˆ¥ãƒ—ロパティã®å€¤ã‚’使ã„ã¾ã™(versionã‚„timestampプロパティも使ãˆã¾ã™ã€‚ + å‚ç…§)。Hibernate3ã«ãªã£ã¦ã€ + 明示的㫠unsaved-value を指定ã™ã‚‹å¿…è¦ã¯ãªããªã‚Šã¾ã—ãŸã€‚ - ˆÈ‰º‚̃R[ƒh‚Í parent ‚Æ child ‚ðXV‚µAnewChild ‚ð‘}“ü‚µ‚Ü‚·B + 以下ã®ã‚³ãƒ¼ãƒ‰ã¯ parent 㨠child ã‚’æ›´æ–°ã—ã€newChild を挿入ã—ã¾ã™ã€‚ - ‚±‚ê‚ç‚Ͷ¬‚³‚ꂽŽ¯•ÊŽq‚Ìꇂɂ͔ñí‚É—Ç‚¢‚Ì‚Å‚·‚ªAŠ„‚è“–‚Ä‚ç‚ꂽŽ¯•ÊŽq‚Æ•¡‡Ž¯•ÊŽq‚Ìꇂ͂ǂ¤‚Å‚µ‚傤‚©H - ‚±‚ê‚ÍHibernate‚ªAiƒ†[ƒU‚É‚æ‚芄‚è“–‚Ä‚ç‚ꂽŽ¯•ÊŽq‚ðŽ‚ÂjV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÆA - ˆÈ‘O‚ÌSession‚Ń[ƒh‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ð‹æ•Ê‚Å‚«‚È‚¢‚½‚ßA‚æ‚è“‚¢‚Å‚·B - ‚±‚Ìê‡AHibernate‚̓^ƒCƒ€ƒXƒ^ƒ“ƒv‚©ƒo[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚Ì‚Ç‚¿‚ç‚©‚ðŽg‚¤‚©A“ñŽŸƒLƒƒƒbƒVƒ…‚É–â‚¢‡‚킹‚Ü‚·B - ň«‚Ìê‡As‚ª‘¶Ý‚·‚é‚©‚Ç‚¤‚©ƒf[ƒ^ƒx[ƒX‚ðŒ©‚Ü‚·B + ã“れらã¯ç”Ÿæˆã•ã‚ŒãŸè­˜åˆ¥å­ã®å ´åˆã«ã¯éžå¸¸ã«è‰¯ã„ã®ã§ã™ãŒã€å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸè­˜åˆ¥å­ã¨è¤‡åˆè­˜åˆ¥å­ã®å ´åˆã¯ã©ã†ã§ã—ょã†ã‹ï¼Ÿ + ã“ã‚Œã¯HibernateãŒã€ï¼ˆãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã‚Šå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸè­˜åˆ¥å­ã‚’æŒã¤ï¼‰æ–°ã—ãインスタンス化ã•ã‚ŒãŸã‚ªãƒ–ジェクトã¨ã€ + 以å‰ã®Sessionã§ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸã‚ªãƒ–ジェクトを区別ã§ããªã„ãŸã‚ã€ã‚ˆã‚Šé›£ã—ã„ã§ã™ã€‚ + ã“ã®å ´åˆã€Hibernateã¯ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ—ロパティã®ã©ã¡ã‚‰ã‹ã‚’使ã†ã‹ã€äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å•ã„åˆã‚ã›ã¾ã™ã€‚ + 最悪ã®å ´åˆã€è¡ŒãŒå­˜åœ¨ã™ã‚‹ã‹ã©ã†ã‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’見ã¾ã™ã€‚ - + - ’x‰„ƒvƒƒpƒeƒBƒtƒFƒbƒ`‚ÌŽg—p + é…延プロパティフェッãƒã®ä½¿ç”¨ - Hibernate3‚̓vƒƒpƒeƒB‚²‚Æ‚Ì’x‰„ƒtƒFƒbƒ`‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B‚±‚ÌÅ“K‰»Žè–@‚Í - ƒOƒ‹[ƒv‚̃tƒFƒbƒ` ‚Æ‚µ‚Ä‚à’m‚ç‚ê‚Ä‚¢‚Ü‚·B‚±‚ê‚Í‚Ù‚Æ‚ñ‚Ç - —v–]‚©‚ço‚½‹@”\‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BŽÀÛ‚É‚Í—ñ“Ç‚Ýž‚Ý‚ÌÅ“K‰»‚æ‚è‚àA - s“Ç‚Ýž‚Ý‚ÌÅ“K‰»‚ª”ñí‚Éd—v‚Å‚·B - ‚µ‚©‚µAƒNƒ‰ƒX‚Ì‚¢‚­‚‚©‚̃vƒƒpƒeƒB‚¾‚¯‚ð“Ç‚Ýž‚Þ‚±‚Æ‚ÍAŠù‘¶‚̃e[ƒuƒ‹‚ª‰½•S‚à‚Ì—ñ‚ðŽ‚¿A - ƒf[ƒ^ƒ‚ƒfƒ‹‚ð‰ü‘P‚Å‚«‚È‚¢‚È‚Ç‚Ì‹É’[‚Èꇂɂ͗L—p‚Å‚·B + Hibernate3ã¯ãƒ—ロパティã”ã¨ã®é…延フェッãƒã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ã“ã®æœ€é©åŒ–手法㯠+ グループã®ãƒ•ã‚§ãƒƒãƒ ã¨ã—ã¦ã‚‚知られã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯ã»ã¨ã‚“ã© + è¦æœ›ã‹ã‚‰å‡ºãŸæ©Ÿèƒ½ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。実際ã«ã¯åˆ—読ã¿è¾¼ã¿ã®æœ€é©åŒ–よりも〠+ 行読ã¿è¾¼ã¿ã®æœ€é©åŒ–ãŒéžå¸¸ã«é‡è¦ã§ã™ã€‚ + ã—ã‹ã—ã€ã‚¯ãƒ©ã‚¹ã®ã„ãã¤ã‹ã®ãƒ—ロパティã ã‘を読ã¿è¾¼ã‚€ã“ã¨ã¯ã€æ—¢å­˜ã®ãƒ†ãƒ¼ãƒ–ルãŒä½•ç™¾ã‚‚ã®åˆ—ã‚’æŒã¡ã€ + データモデルを改善ã§ããªã„ãªã©ã®æ¥µç«¯ãªå ´åˆã«ã¯æœ‰ç”¨ã§ã™ã€‚ - ’x‰„ƒvƒƒpƒeƒB“Ç‚Ýž‚Ý‚ð—LŒø‚É‚·‚é‚É‚ÍA‘Îۂ̃vƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚Å lazy - ‘®«‚ðƒZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B + é…延プロパティ読ã¿è¾¼ã¿ã‚’有効ã«ã™ã‚‹ã«ã¯ã€å¯¾è±¡ã®ãƒ—ロパティã®ãƒžãƒƒãƒ”ング㧠lazy + 属性をセットã—ã¦ãã ã•ã„。 @@ -583,13 +585,13 @@ Cat fritz = (Cat) iter.next();]]> ]]> - ’x‰„ƒvƒƒpƒeƒB“Ç‚Ýž‚݂̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚Ýž‚Ý‚ð•K—v‚Æ‚µ‚Ü‚·I‚à‚µ - ‰i‘±ƒNƒ‰ƒX‚É‘g‚Ýž‚Ý‚ª‚³‚ê‚Ä‚¢‚È‚¢‚È‚çAHibernate‚Í–Ù‚Á‚Ä’x‰„ƒvƒƒpƒeƒB‚ÌÝ’è‚𖳎‹‚µ‚ÄA - ‘¦ŽžƒtƒFƒbƒ`‚É–ß‚µ‚Ü‚·B + é…延プロパティ読ã¿è¾¼ã¿ã¯ãƒ“ルド時ã®ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰çµ„ã¿è¾¼ã¿ã‚’å¿…è¦ã¨ã—ã¾ã™ï¼ã‚‚ã— + 永続クラスã«çµ„ã¿è¾¼ã¿ãŒã•ã‚Œã¦ã„ãªã„ãªã‚‰ã€Hibernateã¯é»™ã£ã¦é…延プロパティã®è¨­å®šã‚’無視ã—ã¦ã€ + å³æ™‚フェッãƒã«æˆ»ã—ã¾ã™ã€‚ - ƒoƒCƒgƒR[ƒh‘g‚Ýž‚݂͈ȉº‚ÌAntƒ^ƒXƒN‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B + ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰çµ„ã¿è¾¼ã¿ã¯ä»¥ä¸‹ã®Antタスクを使ã£ã¦ãã ã•ã„。 @@ -607,15 +609,15 @@ Cat fritz = (Cat) iter.next();]]> ]]> - •s—v‚È—ñ‚ð“Ç‚Ýž‚Ü‚È‚¢‚½‚ß‚ÌA•Ê‚Ìi‚æ‚è‚æ‚¢Hj•û–@‚ÍA­‚È‚­‚Æ‚à - “Ç‚Ýž‚݂݂̂̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚¨‚¢‚Ä‚ÍAHQL‚âCriteriaƒNƒGƒŠ‚̎ˉe - ‹@”\‚ðŽg‚¤‚±‚Æ‚Å‚·B‚±‚Ì•û–@‚̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚Ýž‚Ý‚ª•s—v‚É‚È‚èA - ‚æ‚è—Ç‚¢‰ðŒˆ•û–@‚Å‚·B + ä¸è¦ãªåˆ—を読ã¿è¾¼ã¾ãªã„ãŸã‚ã®ã€åˆ¥ã®ï¼ˆã‚ˆã‚Šã‚ˆã„?)方法ã¯ã€å°‘ãªãã¨ã‚‚ + 読ã¿è¾¼ã¿ã®ã¿ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ãŠã„ã¦ã¯ã€HQLã‚„Criteriaクエリã®å°„å½± + 機能を使ã†ã“ã¨ã§ã™ã€‚ã“ã®æ–¹æ³•ã¯ãƒ“ルド時ã®ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰çµ„ã¿è¾¼ã¿ãŒä¸è¦ã«ãªã‚Šã€ + より良ã„解決方法ã§ã™ã€‚ - HQL‚Å fetch all properties ‚ðŽg‚¤‚±‚Æ‚ÅA•’Ê‚Ç‚¨‚è‚Ì - ƒvƒƒpƒeƒB‚Ì‘¦ŽžƒtƒFƒbƒ`ƒ“ƒO‚ð‹­§‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + HQL㧠fetch all properties を使ã†ã“ã¨ã§ã€æ™®é€šã©ãŠã‚Šã® + プロパティã®å³æ™‚フェッãƒãƒ³ã‚°ã‚’強制ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ @@ -623,28 +625,28 @@ Cat fritz = (Cat) iter.next();]]> - ‘æ2ƒŒƒxƒ‹ƒLƒƒƒbƒVƒ… + 第2レベルキャッシュ - Hibernate‚Ì Session ‚͉i‘±ƒf[ƒ^‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒŒƒxƒ‹‚̃LƒƒƒbƒVƒ…‚Å‚·B - class-by-class‚Æcollection-by-collection‚²‚Æ‚ÌAƒNƒ‰ƒXƒ^ƒŒƒxƒ‹‚âJVMƒŒƒxƒ‹ - i SessionFactory ƒŒƒxƒ‹j‚̃LƒƒƒbƒVƒ…‚ðÝ’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - ƒNƒ‰ƒXƒ^‰»‚³‚ꂽƒLƒƒƒbƒVƒ…‚ɂ‚Ȃ®‚±‚Æ‚³‚¦o—ˆ‚Ü‚·B‚µ‚©‚µ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ƒLƒƒƒbƒVƒ…‚Í‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚é‰i‘±‘w‚Ì•ÏX‚ð - l—¶‚µ‚Ü‚¹‚ñiƒLƒƒƒbƒVƒ…ƒf[ƒ^‚ð’èŠú“I‚ÉŠúŒÀØ‚ê‚É‚·‚éÝ’è‚Ío—ˆ‚Ü‚·jB + Hibernateã® Session ã¯æ°¸ç¶šãƒ‡ãƒ¼ã‚¿ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ¬ãƒ™ãƒ«ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§ã™ã€‚ + class-by-classã¨collection-by-collectionã”ã¨ã®ã€ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¬ãƒ™ãƒ«ã‚„JVMレベル + ( SessionFactory レベル)ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’設定ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + クラスタ化ã•ã‚ŒãŸã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«ã¤ãªãã“ã¨ã•ãˆå‡ºæ¥ã¾ã™ã€‚ã—ã‹ã—注æ„ã—ã¦ãã ã•ã„。 + キャッシュã¯ä»–ã®ã‚¢ãƒ—リケーションã«ã‚ˆã‚‹æ°¸ç¶šå±¤ã®å¤‰æ›´ã‚’ + 考慮ã—ã¾ã›ã‚“(キャッシュデータを定期的ã«æœŸé™åˆ‡ã‚Œã«ã™ã‚‹è¨­å®šã¯å‡ºæ¥ã¾ã™ï¼‰ã€‚ - Hibernate‚ªŽg—p‚·‚éƒLƒƒƒbƒVƒ…ŽÀ‘•‚ÍAhibernate.cache.provider_class ƒvƒƒpƒeƒB‚É - org.hibernate.cache.CacheProvider ‚ðŽÀ‘•‚µ‚½ƒNƒ‰ƒX–¼‚ðŽw’è‚·‚邱‚Æ‚Å•ÏX‚Å‚«‚Ü‚·B - Hibernate‚Í‘½‚­‚̃I[ƒvƒ“ƒ\[ƒX‚̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚ðƒrƒ‹ƒgƒCƒ“ŽÀ‘•‚ÅŽ‚Á‚Ä‚¢‚Ü‚·iŒã‚ɃŠƒXƒg‚ª‚ ‚è‚Ü‚·jB - ‰Á‚¦‚ÄA‘O‚Éà–¾‚µ‚½‚悤‚ÉA‚ ‚È‚½Ž©g‚ª“ÆŽ©‚ÌŽÀ‘•‚ð‚µ‚ÄA‚»‚ê‚ð‘g‚Ýž‚Þ‚±‚Æ‚ào—ˆ‚Ü‚·B - ƒo[ƒWƒ‡ƒ“3.2‚æ‚è‘O‚Å‚ÍEhCache‚ªƒfƒtƒHƒ‹ƒg‚̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ƒo[ƒWƒ‡ƒ“3.2‚Å‚Í‚±‚ê‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB + HibernateãŒä½¿ç”¨ã™ã‚‹ã‚­ãƒ£ãƒƒã‚·ãƒ¥å®Ÿè£…ã¯ã€hibernate.cache.provider_class プロパティ㫠+ org.hibernate.cache.CacheProvider を実装ã—ãŸã‚¯ãƒ©ã‚¹åを指定ã™ã‚‹ã“ã¨ã§å¤‰æ›´ã§ãã¾ã™ã€‚ + Hibernateã¯å¤šãã®ã‚ªãƒ¼ãƒ—ンソースã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ—ロãƒã‚¤ãƒ€ã‚’ビルトイン実装ã§æŒã£ã¦ã„ã¾ã™ï¼ˆå¾Œã«ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ï¼‰ã€‚ + 加ãˆã¦ã€å‰ã«èª¬æ˜Žã—ãŸã‚ˆã†ã«ã€ã‚ãªãŸè‡ªèº«ãŒç‹¬è‡ªã®å®Ÿè£…ã‚’ã—ã¦ã€ãれを組ã¿è¾¼ã‚€ã“ã¨ã‚‚出æ¥ã¾ã™ã€‚ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³3.2よりå‰ã§ã¯EhCacheãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ—ロãƒã‚¤ãƒ€ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ãƒãƒ¼ã‚¸ãƒ§ãƒ³3.2ã§ã¯ã“ã‚Œã¯å½“ã¦ã¯ã¾ã‚Šã¾ã›ã‚“。
- ƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_ + キャッシュプロãƒã‚¤ãƒ€ @@ -653,58 +655,58 @@ Cat fritz = (Cat) iter.next();]]> - ƒLƒƒƒbƒVƒ… - ƒvƒƒoƒCƒ_ƒNƒ‰ƒX - ƒ^ƒCƒv - ƒNƒ‰ƒXƒ^ƒZ[ƒt - ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚̃Tƒ|[ƒg + キャッシュ + プロãƒã‚¤ãƒ€ã‚¯ãƒ©ã‚¹ + タイプ + クラスタセーフ + クエリキャッシュã®ã‚µãƒãƒ¼ãƒˆ - Hashtablei»•i—p‚Æ‚µ‚ĈÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñj + Hashtable(製å“用ã¨ã—ã¦æ„図ã—ã¦ã„ã¾ã›ã‚“) org.hibernate.cache.HashtableCacheProvider - ƒƒ‚ƒŠ + メモリ yes EHCache org.hibernate.cache.EhCacheProvider - ƒƒ‚ƒŠAƒfƒBƒXƒN + メモリã€ãƒ‡ã‚£ã‚¹ã‚¯ yes OSCache org.hibernate.cache.OSCacheProvider - ƒƒ‚ƒŠAƒfƒBƒXƒN - yesiƒNƒ‰ƒXƒ^–³Œø‰»j + メモリã€ãƒ‡ã‚£ã‚¹ã‚¯ + yes(クラスタ無効化) yes SwarmCache org.hibernate.cache.SwarmCacheProvider - ƒNƒ‰ƒXƒ^iipƒ}ƒ‹ƒ`ƒLƒƒƒXƒgj - yesiƒNƒ‰ƒXƒ^–³Œø‰»j + クラスタ(ipマルãƒã‚­ãƒ£ã‚¹ãƒˆï¼‰ + yes(クラスタ無効化) JBoss TreeCache org.hibernate.cache.TreeCacheProvider - ƒNƒ‰ƒXƒ^iipƒ}ƒ‹ƒ`ƒLƒƒƒXƒgjAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹ - yesi•¡»j - yesiŽž“¯Šú‚ª•K—vj + クラスタ(ipマルãƒã‚­ãƒ£ã‚¹ãƒˆï¼‰ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒŠãƒ« + yes(複製) + yes(時刻åŒæœŸãŒå¿…è¦ï¼‰
- ƒLƒƒƒbƒVƒ…‚̃}ƒbƒsƒ“ƒO + キャッシュã®ãƒžãƒƒãƒ”ング - ƒNƒ‰ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Ì <cache> —v‘f‚͈ȉº‚ÌŒ`Ž®‚Å‚·B + クラスやコレクションã®ãƒžãƒƒãƒ”ング㮠<cache> è¦ç´ ã¯ä»¥ä¸‹ã®å½¢å¼ã§ã™ã€‚ @@ -747,23 +749,23 @@ Cat fritz = (Cat) iter.next();]]> - ‚Ü‚½‚Íi‚æ‚è‚æ‚¢•û–@‚Æ‚µ‚ÄHjA hibernate.cfg.xml ‚É <class-cache> - ‚Æ <collection-cache> —v‘f‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B + ã¾ãŸã¯ï¼ˆã‚ˆã‚Šã‚ˆã„方法ã¨ã—ã¦ï¼Ÿï¼‰ã€ hibernate.cfg.xml ã« <class-cache> + 㨠<collection-cache> è¦ç´ ã‚’指定ã™ã‚‹ã“ã¨ã‚‚出æ¥ã¾ã™ã€‚ - usage ‘®«‚Í ƒLƒƒƒbƒVƒ…‚Ì•À—ñ«í—ª ‚ðŽw’肵‚Ü‚·B + usage 属性㯠キャッシュã®ä¸¦åˆ—性戦略 を指定ã—ã¾ã™ã€‚ - read onlyí—ª + read only戦略 - ‚à‚µƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“Ç‚Ýž‚Ý‚Ì‚Ý•K—v‚ÅA‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•ÏX‚µ‚È‚¢‚È‚çA - read-only ƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B‚±‚ê‚Í‚à‚Á‚Æ‚à’Pƒ‚Å - ‚à‚Á‚Æ‚àƒpƒtƒH[ƒ}ƒ“ƒX‚Ì—Ç‚¢í—ª‚Å‚·BƒNƒ‰ƒXƒ^‚Å‚ÌŽg—p‚àŠ®‘S‚ɈÀ‘S‚Å‚·B + ã‚‚ã—アプリケーションãŒèª­ã¿è¾¼ã¿ã®ã¿å¿…è¦ã§ã€æ°¸ç¶šã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’変更ã—ãªã„ãªã‚‰ã€ + read-only キャッシュを使ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã“ã‚Œã¯ã‚‚ã£ã¨ã‚‚å˜ç´”㧠+ ã‚‚ã£ã¨ã‚‚パフォーマンスã®è‰¯ã„戦略ã§ã™ã€‚クラスタã§ã®ä½¿ç”¨ã‚‚完全ã«å®‰å…¨ã§ã™ã€‚ @@ -775,19 +777,19 @@ Cat fritz = (Cat) iter.next();]]> - read/writeí—ª + read/write戦略 - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒf[ƒ^‚ðXV‚·‚é•K—v‚ª‚ ‚é‚È‚çA read-write ƒLƒƒƒbƒVƒ…‚ª“K“–‚©‚à - ‚µ‚ê‚Ü‚¹‚ñB‚±‚̃LƒƒƒbƒVƒ…í—ª‚ÍAƒVƒŠƒAƒ‰ƒCƒUƒuƒ‹‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£ƒŒƒxƒ‹‚ª—v‹‚³‚ê‚é‚È‚çA - Œˆ‚µ‚ÄŽg‚¤‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚à‚µƒLƒƒƒbƒVƒ…‚ªJTAŠÂ‹«‚ÅŽg‚í‚ê‚é‚È‚çAJTA TransactionManager - ‚ðŽæ“¾‚·‚邽‚ß‚Ì•û–@‚ðŽ¦‚· hibernate.transaction.manager_lookup_class - ƒvƒƒpƒeƒB‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‘¼‚̊‹«‚Å‚ÍA Session.close() - ‚â Session.disconnect() ‚ªŒÄ‚΂ꂽ‚Æ‚«‚ÉAŠmŽÀ‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹ - ‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚à‚µƒNƒ‰ƒXƒ^‚Å‚±‚Ìí—ª‚ðŽg‚¢‚½‚¢‚È‚çAŠî‚Æ‚È‚éƒLƒƒƒbƒVƒ…‚ÌŽÀ‘•‚ªƒƒbƒN‚ðƒTƒ|[ƒg - ‚µ‚Ä‚¢‚邱‚Æ‚ð•ÛØ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‘g‚Ýž‚݂̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Í ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ B + アプリケーションãŒãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãªã‚‰ã€ read-write キャッシュãŒé©å½“ã‹ã‚‚ + ã—ã‚Œã¾ã›ã‚“。ã“ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥æˆ¦ç•¥ã¯ã€ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚¶ãƒ–ルãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³åˆ†é›¢ãƒ¬ãƒ™ãƒ«ãŒè¦æ±‚ã•ã‚Œã‚‹ãªã‚‰ã€ + 決ã—ã¦ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。もã—キャッシュãŒJTA環境ã§ä½¿ã‚れるãªã‚‰ã€JTA TransactionManager + ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®æ–¹æ³•ã‚’示㙠hibernate.transaction.manager_lookup_class + プロパティを指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。他ã®ç’°å¢ƒã§ã¯ã€ Session.close() + ã‚„ Session.disconnect() ãŒå‘¼ã°ã‚ŒãŸã¨ãã«ã€ç¢ºå®Ÿã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå®Œäº† + ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã‚‚ã—クラスタã§ã“ã®æˆ¦ç•¥ã‚’使ã„ãŸã„ãªã‚‰ã€åŸºã¨ãªã‚‹ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®å®Ÿè£…ãŒãƒ­ãƒƒã‚¯ã‚’サãƒãƒ¼ãƒˆ + ã—ã¦ã„ã‚‹ã“ã¨ã‚’ä¿è¨¼ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 組ã¿è¾¼ã¿ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ—ロãƒã‚¤ãƒ€ã¯ サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ 。 @@ -802,39 +804,39 @@ Cat fritz = (Cat) iter.next();]]> - Œµ–§‚Å‚Í‚È‚¢read/writeí—ª + 厳密ã§ã¯ãªã„read/write戦略 - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚½‚Ü‚É‚µ‚©ƒf[ƒ^‚ðXV‚·‚é•K—v‚Í‚È‚­i‚·‚È‚í‚¿“ñ‚‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª - “¯Žž‚É“¯‚¶ƒAƒCƒeƒ€‚ðXV‚µ‚悤‚Æ‚·‚邱‚Æ‚Í‚Ù‚Æ‚ñ‚Ç‹N‚±‚ç‚È‚¢jAŒµ–§‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£‚ª - —v‹‚³‚ê‚È‚¢‚È‚çA nonstrict-read-write ƒLƒƒƒbƒVƒ…‚ª“K“–‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚à‚µƒLƒƒƒbƒVƒ…‚ªJTAŠÂ‹«‚ÅŽg‚í‚ê‚é‚È‚çA hibernate.transaction.manager_lookup_class - ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‘¼‚̊‹«‚Å‚ÍA Session.close() - ‚â Session.disconnect() ‚ªŒÄ‚΂ꂽ‚Æ‚«‚ÉAŠmŽÀ‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹ - ‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + アプリケーションãŒãŸã¾ã«ã—ã‹ãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã™ã‚‹å¿…è¦ã¯ãªã(ã™ãªã‚ã¡äºŒã¤ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒ + åŒæ™‚ã«åŒã˜ã‚¢ã‚¤ãƒ†ãƒ ã‚’æ›´æ–°ã—よã†ã¨ã™ã‚‹ã“ã¨ã¯ã»ã¨ã‚“ã©èµ·ã“らãªã„)ã€åŽ³å¯†ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³åˆ†é›¢ãŒ + è¦æ±‚ã•ã‚Œãªã„ãªã‚‰ã€ nonstrict-read-write キャッシュãŒé©å½“ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã‚‚ã—キャッシュãŒJTA環境ã§ä½¿ã‚れるãªã‚‰ã€ hibernate.transaction.manager_lookup_class + を指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。他ã®ç’°å¢ƒã§ã¯ã€ Session.close() + ã‚„ Session.disconnect() ãŒå‘¼ã°ã‚ŒãŸã¨ãã«ã€ç¢ºå®Ÿã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå®Œäº† + ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - transactionalí—ª + transactional戦略 - transactional ƒLƒƒƒbƒVƒ…í—ª‚ÍJBoss TreeCache‚̂悤‚ÈŠ®‘S‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹ - ƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚̃Tƒ|[ƒg‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ‚±‚̂悤‚ȃLƒƒƒbƒVƒ…‚ÍJTAŠÂ‹«‚Å‚Ì‚ÝŽg—p‰Â”\‚ÅA hibernate.transaction.manager_lookup_class - ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + transactional キャッシュ戦略ã¯JBoss TreeCacheã®ã‚ˆã†ãªå®Œå…¨ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒŠãƒ« + キャッシュプロãƒã‚¤ãƒ€ã®ã‚µãƒãƒ¼ãƒˆã‚’æä¾›ã—ã¾ã™ã€‚ + ã“ã®ã‚ˆã†ãªã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯JTA環境ã§ã®ã¿ä½¿ç”¨å¯èƒ½ã§ã€ hibernate.transaction.manager_lookup_class + を指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ‚·‚ׂĂ̓¯Žž•Às«ƒLƒƒƒbƒVƒ…í—ª‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Í‚ ‚è‚Ü‚¹‚ñB - ˆÈ‰º‚Ì•\‚͂ǂ̃vƒƒoƒCƒ_‚ª‚Ç‚Ì“¯Žž•À—ñ«í—ª‚ɑΉž‚·‚é‚©‚ð•\‚µ‚Ä‚¢‚Ü‚·B + ã™ã¹ã¦ã®åŒæ™‚並行性キャッシュ戦略をサãƒãƒ¼ãƒˆã—ã¦ã„るキャッシュプロãƒã‚¤ãƒ€ã¯ã‚ã‚Šã¾ã›ã‚“。 + 以下ã®è¡¨ã¯ã©ã®ãƒ—ロãƒã‚¤ãƒ€ãŒã©ã®åŒæ™‚並列性戦略ã«å¯¾å¿œã™ã‚‹ã‹ã‚’表ã—ã¦ã„ã¾ã™ã€‚ - “¯Žž•Às«ƒLƒƒƒbƒVƒ…í—ª‚̃Tƒ|[ƒg + åŒæ™‚並行性キャッシュ戦略ã®ã‚µãƒãƒ¼ãƒˆ @@ -843,16 +845,16 @@ Cat fritz = (Cat) iter.next();]]> - ƒLƒƒƒbƒVƒ… + キャッシュ read-only - Œµ–§‚Å‚Í‚È‚¢read-write + 厳密ã§ã¯ãªã„read-write read-write transactional - Hashtablei»•i—p‚Æ‚µ‚ĈÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñj + Hashtable(製å“用ã¨ã—ã¦æ„図ã—ã¦ã„ã¾ã›ã‚“) yes yes yes @@ -893,19 +895,19 @@ Cat fritz = (Cat) iter.next();]]> - ƒLƒƒƒbƒVƒ…‚ÌŠÇ— + キャッシュã®ç®¡ç† - ƒIƒuƒWƒFƒNƒg‚ð save() A update() A saveOrUpdate() - ‚É“n‚·‚Æ‚«A‚»‚µ‚Ä load() A get() A list() A - iterate() A scroll() ‚ðŽg‚Á‚ăIƒuƒWƒFƒNƒg‚𕜌³‚·‚é‚Æ‚«‚É‚Íí‚ÉA - ‚»‚̃IƒuƒWƒFƒNƒg‚Í Session ‚Ì“à•”ƒLƒƒƒbƒVƒ…‚ɒljÁ‚³‚ê‚Ü‚·B + オブジェクトを save() 〠update() 〠saveOrUpdate() + ã«æ¸¡ã™ã¨ãã€ãã—㦠load() 〠get() 〠list() 〠+ iterate() 〠scroll() を使ã£ã¦ã‚ªãƒ–ジェクトを復元ã™ã‚‹ã¨ãã«ã¯å¸¸ã«ã€ + ãã®ã‚ªãƒ–ジェクト㯠Session ã®å†…部キャッシュã«è¿½åŠ ã•ã‚Œã¾ã™ã€‚ - ŽŸ‚É flush() ‚ªŒÄ‚΂ê‚é‚ÆAƒIƒuƒWƒFƒNƒg‚Ìó‘Ԃ̓f[ƒ^ƒx[ƒX‚Æ“¯Šú‰»‚³‚ê‚Ü‚·B - ‚à‚µ‚±‚Ì“¯Šú‚ª‹N‚±‚邱‚Æ‚ð–]‚Ü‚È‚¢‚Æ‚«‚âA–c‘å‚È”‚̃IƒuƒWƒFƒNƒg‚ðˆ—‚µ‚Ä‚¢‚ăƒ‚ƒŠ‚ðŒø—¦“I‚É - ˆµ‚¤•K—v‚ª‚ ‚é‚Æ‚«‚ÍA evict() ƒƒ\ƒbƒh‚ðŽg‚Á‚ĈꎟƒLƒƒƒbƒVƒ…‚©‚ç - ƒIƒuƒWƒFƒNƒg‚âƒRƒŒƒNƒVƒ‡ƒ“‚ð휂·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + 次㫠flush() ãŒå‘¼ã°ã‚Œã‚‹ã¨ã€ã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨åŒæœŸåŒ–ã•ã‚Œã¾ã™ã€‚ + ã‚‚ã—ã“ã®åŒæœŸãŒèµ·ã“ã‚‹ã“ã¨ã‚’望ã¾ãªã„ã¨ãã‚„ã€è†¨å¤§ãªæ•°ã®ã‚ªãƒ–ジェクトを処ç†ã—ã¦ã„ã¦ãƒ¡ãƒ¢ãƒªã‚’効率的㫠+ 扱ã†å¿…è¦ãŒã‚ã‚‹ã¨ãã¯ã€ evict() メソッドを使ã£ã¦ä¸€æ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‹ã‚‰ + オブジェクトやコレクションを削除ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ - Session ‚̓Cƒ“ƒXƒ^ƒ“ƒX‚ªƒZƒbƒVƒ‡ƒ“ƒLƒƒƒbƒVƒ…‚ÉŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©‚ð”»’f‚·‚邽‚ß‚Ì - contains() ƒƒ\ƒbƒh‚à’ñ‹Ÿ‚µ‚Ü‚·B + Session ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å«ã¾ã‚Œã‚‹ã‹ã©ã†ã‹ã‚’判断ã™ã‚‹ãŸã‚ã® + contains() メソッドもæä¾›ã—ã¾ã™ã€‚ - ‚·‚ׂẴIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“ƒLƒƒƒbƒVƒ…‚©‚犮‘S‚ÉŽæ‚蜂­‚É‚ÍASession.clear() - ‚ðŒÄ‚Ño‚µ‚Ä‚­‚¾‚³‚¢B + ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをセッションキャッシュã‹ã‚‰å®Œå…¨ã«å–り除ãã«ã¯ã€Session.clear() + を呼ã³å‡ºã—ã¦ãã ã•ã„。 - “ñŽŸƒLƒƒƒbƒVƒ…‚Ì‚½‚ß‚ÉA SessionFactory ‚É‚Í - ƒCƒ“ƒXƒ^ƒ“ƒXAƒNƒ‰ƒX‘S‘ÌAƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒXAƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ðƒLƒƒƒbƒVƒ…‚©‚ç - 휂·‚邽‚߂̃ƒ\ƒbƒh‚ª‚»‚ꂼ‚ê’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B + 二次キャッシュã®ãŸã‚ã«ã€ SessionFactory ã«ã¯ + インスタンスã€ã‚¯ãƒ©ã‚¹å…¨ä½“ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å…¨ä½“をキャッシュã‹ã‚‰ + 削除ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒãã‚Œãžã‚Œå®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚ - CacheMode ‚Í“Á’è‚̃ZƒbƒVƒ‡ƒ“‚ª“ñŽŸƒLƒƒƒbƒVƒ…‚Ƃǂ̂悤‚É‘ŠŒÝì—p‚·‚é‚©‚ð - Žw’肵‚Ü‚·B + CacheMode ã¯ç‰¹å®šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒäºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¨ã©ã®ã‚ˆã†ã«ç›¸äº’作用ã™ã‚‹ã‹ã‚’ + 指定ã—ã¾ã™ã€‚ - CacheMode.NORMAL - ƒAƒCƒeƒ€‚Ì“Ç‚Ýž‚Ý‚Æ‘‚«ž‚Ý‚Å“ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¢‚Ü‚· + CacheMode.NORMAL - アイテムã®èª­ã¿è¾¼ã¿ã¨æ›¸ãè¾¼ã¿ã§äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’使ã„ã¾ã™ - CacheMode.GET - “Ç‚Ýž‚Ý‚Í“ñŽŸƒLƒƒƒbƒVƒ…‚©‚çs‚¢‚Ü‚·‚ªAƒf[ƒ^‚ð - XV‚µ‚½ê‡‚𜂢‚Ä“ñŽŸƒLƒƒƒbƒVƒ…‚É‘‚«ž‚Ý‚ð‚µ‚Ü‚¹‚ñB + CacheMode.GET - 読ã¿è¾¼ã¿ã¯äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‹ã‚‰è¡Œã„ã¾ã™ãŒã€ãƒ‡ãƒ¼ã‚¿ã‚’ + æ›´æ–°ã—ãŸå ´åˆã‚’除ã„ã¦äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«æ›¸ãè¾¼ã¿ã‚’ã—ã¾ã›ã‚“。 - CacheMode.PUT - “ñŽŸƒLƒƒƒbƒVƒ…‚ɃAƒCƒeƒ€‚ð‘‚«ž‚Ý‚Ü‚·‚ªA“Ç‚Ýž‚Ý‚É‚Í - “ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¢‚Ü‚¹‚ñB + CacheMode.PUT - 二次キャッシュã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’書ãè¾¼ã¿ã¾ã™ãŒã€èª­ã¿è¾¼ã¿ã«ã¯ + 二次キャッシュを使ã„ã¾ã›ã‚“。 - CacheMode.REFRESH - “ñŽŸƒLƒƒƒbƒVƒ…‚ɃAƒCƒeƒ€‚ð‘‚«ž‚Ý‚Ü‚·‚ªA“Ç‚Ýž‚Ý‚É‚Í - “ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚킸A hibernate.cache.use_minimal_puts - ‚̉e‹¿‚ðŽó‚¯‚¸‚ÉAƒf[ƒ^ƒx[ƒX‚©‚ç“Ç‚Ýž‚Þ‚·‚ׂẴAƒCƒeƒ€‚Ì“ñŽŸƒLƒƒƒbƒVƒ…‚ð‹­§“I‚ɃŠƒtƒŒƒbƒVƒ…‚µ‚Ü‚·B + CacheMode.REFRESH - 二次キャッシュã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’書ãè¾¼ã¿ã¾ã™ãŒã€èª­ã¿è¾¼ã¿ã«ã¯ + 二次キャッシュを使ã‚ãšã€ hibernate.cache.use_minimal_puts + ã®å½±éŸ¿ã‚’å—ã‘ãšã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰èª­ã¿è¾¼ã‚€ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã®äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’強制的ã«ãƒªãƒ•ãƒ¬ãƒƒã‚·ãƒ¥ã—ã¾ã™ã€‚ - “ñŽŸƒLƒƒƒbƒVƒ…‚Ì“à—e‚âƒNƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚ðŒ©‚é‚½‚ß‚ÉA Statistics API‚ð - Žg‚Á‚Ä‚­‚¾‚³‚¢B + 二次キャッシュã®å†…容やクエリキャッシュ領域を見るãŸã‚ã«ã€ Statistics APIã‚’ + 使ã£ã¦ãã ã•ã„。 .getEntries();]]> - “Œvî•ñ‚ð—LŒø‚É‚µ‚ÄA‚³‚ç‚ɃIƒvƒVƒ‡ƒ“‚Æ‚µ‚ÄAƒLƒƒƒbƒVƒ…ƒGƒ“ƒgƒŠ‚ð - l‚ª‚æ‚è—‰ð‰Â”\‚ÈŒ`Ž®‚Å•ÛŽ‚·‚邱‚Æ‚ðHibernate‚É‹­§‚µ‚Ü‚·B + 統計情報を有効ã«ã—ã¦ã€ã•ã‚‰ã«ã‚ªãƒ—ションã¨ã—ã¦ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚¨ãƒ³ãƒˆãƒªã‚’ + 人ãŒã‚ˆã‚Šç†è§£å¯èƒ½ãªå½¢å¼ã§ä¿æŒã™ã‚‹ã“ã¨ã‚’Hibernateã«å¼·åˆ¶ã—ã¾ã™ã€‚ - ƒNƒGƒŠƒLƒƒƒbƒVƒ… + クエリキャッシュ - ƒNƒGƒŠ‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚àƒLƒƒƒbƒVƒ…o—ˆ‚Ü‚·B‚±‚ê‚Í“¯‚¶ƒpƒ‰ƒ[ƒ^‚ʼn½“x‚àŽÀs‚³‚ê‚é - ƒNƒGƒŠ‚ɑ΂µ‚Ä‚Ì‚Ý—L—p‚Å‚·BƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚É‚ÍA‚Ü‚¸Ý’è‚Å—LŒø‚É‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB + クエリã®ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚‚キャッシュ出æ¥ã¾ã™ã€‚ã“ã‚Œã¯åŒã˜ãƒ‘ラメータã§ä½•åº¦ã‚‚実行ã•ã‚Œã‚‹ + クエリã«å¯¾ã—ã¦ã®ã¿æœ‰ç”¨ã§ã™ã€‚クエリキャッシュを使ã†ã«ã¯ã€ã¾ãšè¨­å®šã§æœ‰åŠ¹ã«ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。 - ‚±‚ÌÝ’è‚ÍV‚½‚É“ñ‚‚̃LƒƒƒbƒVƒ…—̈æ‚Ì쬂ðs‚¢‚Ü‚·Bˆê‚‚̓NƒGƒŠ‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚Ì - ƒLƒƒƒbƒVƒ…i org.hibernate.cache.StandardQueryCache j‚ð•ÛŽ‚µA - ‚à‚¤1‚‚̓NƒGƒŠ‰Â”\‚ȃe[ƒuƒ‹‚Ö‚ÌÅV‚ÌXVƒ^ƒCƒ€ƒXƒ^ƒ“ƒv - i org.hibernate.cache.UpdateTimestampsCache j‚ð•ÛŽ‚µ‚Ü‚·B - ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ÌŽÀÛ‚Ì—v‘f‚Ìó‘Ԃ̓LƒƒƒbƒVƒ…‚µ‚È‚¢‚±‚Æ‚É - ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BƒLƒƒƒbƒVƒ…‚·‚é‚Ì‚ÍŽ¯•ÊŽq‚Ì’l‚ÆA’lŒ^‚ÌŒ‹‰Ê‚Ì‚Ý‚Å‚·B - ‚»‚Ì‚½‚ßAƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Íí‚É“ñŽŸƒLƒƒƒbƒVƒ…‚ƈê‚ÉŽg‚¤‚ׂ«‚Å‚·B + ã“ã®è¨­å®šã¯æ–°ãŸã«äºŒã¤ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã®ä½œæˆã‚’è¡Œã„ã¾ã™ã€‚一ã¤ã¯ã‚¯ã‚¨ãƒªã®ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã® + キャッシュ( org.hibernate.cache.StandardQueryCache )をä¿æŒã—〠+ ã‚‚ã†1ã¤ã¯ã‚¯ã‚¨ãƒªå¯èƒ½ãªãƒ†ãƒ¼ãƒ–ルã¸ã®æœ€æ–°ã®æ›´æ–°ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ— + ( org.hibernate.cache.UpdateTimestampsCache )をä¿æŒã—ã¾ã™ã€‚ + クエリキャッシュã¯ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã®å®Ÿéš›ã®è¦ç´ ã®çŠ¶æ…‹ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã—ãªã„ã“ã¨ã« + 注æ„ã—ã¦ãã ã•ã„。キャッシュã™ã‚‹ã®ã¯è­˜åˆ¥å­ã®å€¤ã¨ã€å€¤åž‹ã®çµæžœã®ã¿ã§ã™ã€‚ + ãã®ãŸã‚ã€ã‚¯ã‚¨ãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯å¸¸ã«äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¨ä¸€ç·’ã«ä½¿ã†ã¹ãã§ã™ã€‚ - ‚Ù‚Æ‚ñ‚ǂ̃NƒGƒŠ‚̓LƒƒƒbƒVƒ…‚̉¶Œb‚ðŽó‚¯‚È‚¢‚Ì‚ÅAƒfƒtƒHƒ‹ƒg‚ł̓NƒGƒŠ‚̓LƒƒƒbƒVƒ…‚³‚ê‚Ü‚¹‚ñB - ƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚·‚é‚É‚ÍA Query.setCacheable(true) ‚ðŒÄ‚Ño‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚¤‚·‚ê‚΃NƒGƒŠ‚ªŠù‘¶‚̃LƒƒƒbƒVƒ…Œ‹‰Ê‚ð’T‚µAƒNƒGƒŠŽÀsŽž‚É‚»‚ÌŒ‹‰Ê‚ðƒLƒƒƒbƒVƒ…‚ɒljÁ‚·‚é - ‚悤‚É‚È‚è‚Ü‚·B + ã»ã¨ã‚“ã©ã®ã‚¯ã‚¨ãƒªã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®æ©æµã‚’å—ã‘ãªã„ã®ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯ã‚¯ã‚¨ãƒªã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚Œã¾ã›ã‚“。 + キャッシュを有効ã«ã™ã‚‹ã«ã¯ã€ Query.setCacheable(true) を呼ã³å‡ºã—ã¦ãã ã•ã„。 + ãã†ã™ã‚Œã°ã‚¯ã‚¨ãƒªãŒæ—¢å­˜ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥çµæžœã‚’探ã—ã€ã‚¯ã‚¨ãƒªå®Ÿè¡Œæ™‚ã«ãã®çµæžœã‚’キャッシュã«è¿½åŠ ã™ã‚‹ + よã†ã«ãªã‚Šã¾ã™ã€‚ - ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Ì”jŠüƒ|ƒŠƒV[‚ðׂ©‚­§Œä‚µ‚½‚¢‚Æ‚«‚ÍA Query.setCacheRegion() - ‚ðŒÄ‚Ño‚µ‚Ä“Á’è‚̃NƒGƒŠ‚ɑ΂·‚éƒLƒƒƒbƒVƒ…—̈æ‚ðŽw’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + クエリキャッシュã®ç ´æ£„ãƒãƒªã‚·ãƒ¼ã‚’ç´°ã‹ã制御ã—ãŸã„ã¨ãã¯ã€ Query.setCacheRegion() + を呼ã³å‡ºã—ã¦ç‰¹å®šã®ã‚¯ã‚¨ãƒªã«å¯¾ã™ã‚‹ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã‚’指定ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ .list();]]> - ƒNƒGƒŠ‚ªŽ©g‚̃NƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚̃ŠƒtƒŒƒbƒVƒ…‚ð‹­§‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚È‚çA - Query.setCacheMode(CacheMode.REFRESH) ‚ðŒÄ‚Ño‚·‚ׂ«‚Å‚·B‚±‚ê‚Í - Œ³‚Æ‚È‚éƒf[ƒ^‚ª•Ê‚̃vƒƒZƒX‚É‚æ‚Á‚ÄXV‚³‚ꂽ‚èi‚·‚È‚í‚¿Hibernate‚ð’Ê‚¶‚ÄXV‚³‚ê‚È‚¢jA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“Á’è‚̃NƒGƒŠƒŠƒUƒ‹ƒgƒZƒbƒg‚ð‘I‘ð‚µ‚ÄƒŠƒtƒŒƒbƒVƒ…‚³‚¹‚éꇂɓÁ‚É—L—p‚Å‚·B - ‚³‚ç‚É—L—p‚È‚à‚¤ˆê‚‚̕û–@‚ÍA SessionFactory.evictQueries() - ‚É‚æ‚Á‚ăNƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚ðÁ‹Ž‚·‚邱‚Æ‚Å‚·B + クエリãŒè‡ªèº«ã®ã‚¯ã‚¨ãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã®ãƒªãƒ•ãƒ¬ãƒƒã‚·ãƒ¥ã‚’強制ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ãªã‚‰ã€ + Query.setCacheMode(CacheMode.REFRESH) を呼ã³å‡ºã™ã¹ãã§ã™ã€‚ã“れ㯠+ å…ƒã¨ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãŒåˆ¥ã®ãƒ—ロセスã«ã‚ˆã£ã¦æ›´æ–°ã•ã‚ŒãŸã‚Šï¼ˆã™ãªã‚ã¡Hibernateを通ã˜ã¦æ›´æ–°ã•ã‚Œãªã„)〠+ アプリケーションã«ç‰¹å®šã®ã‚¯ã‚¨ãƒªãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’é¸æŠžã—ã¦ãƒªãƒ•ãƒ¬ãƒƒã‚·ãƒ¥ã•ã›ã‚‹å ´åˆã«ç‰¹ã«æœ‰ç”¨ã§ã™ã€‚ + ã•ã‚‰ã«æœ‰ç”¨ãªã‚‚ã†ä¸€ã¤ã®æ–¹æ³•ã¯ã€ SessionFactory.evictQueries() + ã«ã‚ˆã£ã¦ã‚¯ã‚¨ãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã‚’消去ã™ã‚‹ã“ã¨ã§ã™ã€‚ -™14.1 +☆14.1 - ƒRƒŒƒNƒVƒ‡ƒ“‚̃pƒtƒH[ƒ}ƒ“ƒX‚Ì—‰ð + コレクションã®ãƒ‘フォーマンスã®ç†è§£ - ƒRƒŒƒNƒVƒ‡ƒ“‚̘b‘è‚É‚Í‚·‚Å‚É‘½‚­‚ÌŽžŠÔ‚ðŽg‚¢‚Ü‚µ‚½B‚±‚Ìß‚Å‚Í - ƒRƒŒƒNƒVƒ‡ƒ“‚ªŽÀsŽž‚ɂǂ̂悤‚ÉU•‘‚¤‚©‚ɂ‚¢‚Ă̘b‘è‚ð2A3Žæ‚èã‚°‚Ü‚·B + コレクションã®è©±é¡Œã«ã¯ã™ã§ã«å¤šãã®æ™‚間を使ã„ã¾ã—ãŸã€‚ã“ã®ç¯€ã§ã¯ + コレクションãŒå®Ÿè¡Œæ™‚ã«ã©ã®ã‚ˆã†ã«æŒ¯èˆžã†ã‹ã«ã¤ã„ã¦ã®è©±é¡Œã‚’2ã€3å–り上ã’ã¾ã™ã€‚ - •ª—Þ + 分類 - Hibernate‚Í3‚‚̊î–{“I‚ȃRƒŒƒNƒVƒ‡ƒ“‚ÌŽí—Þ‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B + Hibernateã¯3ã¤ã®åŸºæœ¬çš„ãªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ç¨®é¡žã‚’定義ã—ã¦ã„ã¾ã™ã€‚ - ’l‚̃RƒŒƒNƒVƒ‡ƒ“ + 値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ - ˆê‘Α½ŠÖ˜A + 一対多関連 - ‘½‘Α½ŠÖ˜A + 多対多関連 - ‚±‚Ì•ª—Þ‚Í‚³‚Ü‚´‚܂ȃe[ƒuƒ‹‚âŠO•”ƒL[ŠÖ˜A‚ð‹æ•Ê‚µ‚Ü‚·‚ªAŽ„‚½‚¿‚ª’m‚é•K—v‚Ì‚ ‚é - ŠÖ˜Aƒ‚ƒfƒ‹‚ɂ‚¢‚Ä‚Ù‚Æ‚ñ‚Ç‚È‚É‚à‹³‚¦‚Ä‚­‚ê‚Ü‚¹‚ñBŠÖ˜A\‘¢‚âƒpƒtƒH[ƒ}ƒ“ƒX‚Ì“Á’¥‚ð - Š®‘S‚É—‰ð‚·‚é‚É‚ÍAHibernate‚ªƒRƒŒƒNƒVƒ‡ƒ“‚Ìs‚ðXVA휂·‚邽‚ß‚ÉŽg‚¤ŽåƒL[‚Ì - \‘¢‚à‚Ü‚½l‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚ê‚͈ȉº‚Ì•ª—Þ‚ð’ñŽ¦‚µ‚Ü‚·B + ã“ã®åˆ†é¡žã¯ã•ã¾ã–ã¾ãªãƒ†ãƒ¼ãƒ–ルや外部キー関連を区別ã—ã¾ã™ãŒã€ç§ãŸã¡ãŒçŸ¥ã‚‹å¿…è¦ã®ã‚ã‚‹ + 関連モデルã«ã¤ã„ã¦ã»ã¨ã‚“ã©ãªã«ã‚‚æ•™ãˆã¦ãã‚Œã¾ã›ã‚“。関連構造やパフォーマンスã®ç‰¹å¾´ã‚’ + 完全ã«ç†è§£ã™ã‚‹ã«ã¯ã€HibernateãŒã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¡Œã‚’æ›´æ–°ã€å‰Šé™¤ã™ã‚‹ãŸã‚ã«ä½¿ã†ä¸»ã‚­ãƒ¼ã® + 構造もã¾ãŸè€ƒãˆãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ã“ã‚Œã¯ä»¥ä¸‹ã®åˆ†é¡žã‚’æ示ã—ã¾ã™ã€‚ - ƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“ + インデックス付ãコレクション set @@ -1083,86 +1085,86 @@ hibernate.cache.use_structured_entries true]]> - ‚·‚ׂẴCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“imapAlistA”z—ñj‚Í <key> - ‚Æ <index> ƒJƒ‰ƒ€‚©‚ç‚È‚éŽåƒL[‚ðŽ‚Á‚Ä‚¢‚Ü‚·B‚±‚Ìê‡‚Í - ƒRƒŒƒNƒVƒ‡ƒ“‚ÌXV‚Í”ñí‚ÉŒø—¦“I‚Å‚·BŽåƒL[‚Í—L—p‚ȃCƒ“ƒfƒbƒNƒX‚É‚È‚èAHibernate‚ª - “Á’è‚Ìs‚ðXV‚Ü‚½‚Í휂·‚é‚Æ‚«‚ÉA‚»‚Ìs‚ðŒø—¦“I‚ÉŒ©‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ã™ã¹ã¦ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãコレクション(mapã€listã€é…列)㯠<key> + 㨠<index> カラムã‹ã‚‰ãªã‚‹ä¸»ã‚­ãƒ¼ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ã“ã®å ´åˆã¯ + コレクションã®æ›´æ–°ã¯éžå¸¸ã«åŠ¹çŽ‡çš„ã§ã™ã€‚主キーã¯æœ‰ç”¨ãªã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«ãªã‚Šã€Hibernate㌠+ 特定ã®è¡Œã‚’æ›´æ–°ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã¨ãã«ã€ãã®è¡Œã‚’効率的ã«è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - set‚Í <key> ‚©‚ç‚È‚éŽåƒL[‚Æ—v‘f‚̃Jƒ‰ƒ€‚ðŽ‚Á‚Ä‚¢‚Ü‚·B - ‚±‚ê‚̓RƒŒƒNƒVƒ‡ƒ“—v‘f‚Ì‚¢‚­‚‚©‚ÌŒ^‚ɂ‚¢‚Ä‚ÍŒø—¦“I‚Å‚Í‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - “Á‚É•¡‡—v‘fA‘å‚«‚ȃeƒLƒXƒgAƒoƒCƒiƒŠƒtƒB[ƒ‹ƒh‚Å‚Í”ñŒø—¦‚Å‚·Bƒf[ƒ^ƒx[ƒX‚Í - •¡‡ŽåƒL[‚ÉŒø—¦“I‚ɃCƒ“ƒfƒbƒNƒX‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚È‚¢‚©‚ç‚Å‚·Bˆê•ûA1‘Α½‚⑽‘Α½ŠÖ˜A‚É‚¨‚¢‚ÄA - “Á‚ÉlHŽ¯•ÊŽq‚Ìꇂ͓¯‚¶‚®‚ç‚¢Œø—¦“I‚Å‚·Bi—]’kF SchemaExport - ‚ÅŽÀÛ‚É <set> ‚ÌŽåƒL[‚ðì‚肽‚¢‚È‚çA‚·‚ׂẴJƒ‰ƒ€‚Å - not-null="true" ‚ð錾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBj + set㯠<key> ã‹ã‚‰ãªã‚‹ä¸»ã‚­ãƒ¼ã¨è¦ç´ ã®ã‚«ãƒ©ãƒ ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³è¦ç´ ã®ã„ãã¤ã‹ã®åž‹ã«ã¤ã„ã¦ã¯åŠ¹çŽ‡çš„ã§ã¯ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + 特ã«è¤‡åˆè¦ç´ ã€å¤§ããªãƒ†ã‚­ã‚¹ãƒˆã€ãƒã‚¤ãƒŠãƒªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§ã¯éžåŠ¹çŽ‡ã§ã™ã€‚データベース㯠+ 複åˆä¸»ã‚­ãƒ¼ã«åŠ¹çŽ‡çš„ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’付ã‘ã‚‹ã“ã¨ãŒã§ããªã„ã‹ã‚‰ã§ã™ã€‚一方ã€1対多や多対多関連ã«ãŠã„ã¦ã€ + 特ã«äººå·¥è­˜åˆ¥å­ã®å ´åˆã¯åŒã˜ãらã„効率的ã§ã™ã€‚(余談: SchemaExport + ã§å®Ÿéš›ã« <set> ã®ä¸»ã‚­ãƒ¼ã‚’作りãŸã„ãªã‚‰ã€ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ ã§ + not-null="true" を宣言ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。) - <idbag> ƒ}ƒbƒsƒ“ƒO‚Í‘ã—ƒL[‚ð’è‹`‚µ‚Ü‚·B‚»‚Ì‚½‚ß - XV‚Íí‚É”ñí‚ÉŒø—¦“I‚Å‚·BŽ–ŽÀãA‚±‚ê‚ÍÅ‘P‚̃P[ƒX‚Å‚·B + <idbag> マッピングã¯ä»£ç†ã‚­ãƒ¼ã‚’定義ã—ã¾ã™ã€‚ãã®ãŸã‚ + æ›´æ–°ã¯å¸¸ã«éžå¸¸ã«åŠ¹çŽ‡çš„ã§ã™ã€‚事実上ã€ã“ã‚Œã¯æœ€å–„ã®ã‚±ãƒ¼ã‚¹ã§ã™ã€‚ - bag‚Íň«‚̃P[ƒX‚Å‚·Bbag‚Í—v‘f‚Ì’l‚Ìd•¡‚ª‰Â”\‚ÅAƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ðŽ‚½‚È‚¢‚½‚ßA - ŽåƒL[‚Í’è‹`‚³‚ê‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñBHibernate‚É‚Íd•¡‚µ‚½s‚ð‹æ•Ê‚·‚é•û–@‚ª‚ ‚è‚Ü‚¹‚ñB - Hibernate‚Í‚±‚Ì–â‘è‚Ì‰ðŒˆ‚Ì‚½‚ß‚ÉA•ÏX‚ª‚ ‚Á‚½‚Æ‚«‚É‚Íí‚ÉŠ®‘S‚Èíœ - iˆê‚Â‚Ì DELETE ‚É‚æ‚éj‚ðs‚¢AƒRƒŒƒNƒVƒ‡ƒ“‚ÌÄ쬂ðs‚¢‚Ü‚·B - ‚±‚ê‚Í”ñí‚É”ñŒø—¦“I‚©‚à‚µ‚ê‚Ü‚¹‚ñB + bagã¯æœ€æ‚ªã®ã‚±ãƒ¼ã‚¹ã§ã™ã€‚bagã¯è¦ç´ ã®å€¤ã®é‡è¤‡ãŒå¯èƒ½ã§ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚«ãƒ©ãƒ ã‚’æŒãŸãªã„ãŸã‚〠+ 主キーã¯å®šç¾©ã•ã‚Œãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。Hibernateã«ã¯é‡è¤‡ã—ãŸè¡Œã‚’区別ã™ã‚‹æ–¹æ³•ãŒã‚ã‚Šã¾ã›ã‚“。 + Hibernateã¯ã“ã®å•é¡Œã®è§£æ±ºã®ãŸã‚ã«ã€å¤‰æ›´ãŒã‚ã£ãŸã¨ãã«ã¯å¸¸ã«å®Œå…¨ãªå‰Šé™¤ + (一ã¤ã® DELETE ã«ã‚ˆã‚‹ï¼‰ã‚’è¡Œã„ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å†ä½œæˆã‚’è¡Œã„ã¾ã™ã€‚ + ã“ã‚Œã¯éžå¸¸ã«éžåŠ¹çŽ‡çš„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - 1‘Α½ŠÖ˜A‚Å‚ÍAuŽåƒL[v‚̓f[ƒ^ƒx[ƒX‚̃e[ƒuƒ‹‚Ì•¨—“I‚È - ŽåƒL[‚Å‚Í‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚µ‚©‚µ‚±‚Ìꇂł³‚¦Aã‹L‚Ì•ª—Þ‚Í‚Ü‚¾—L—p‚Å‚·B - iHibernate‚ªƒRƒŒƒNƒVƒ‡ƒ“‚ÌŒÂX‚Ìs‚ð‚Ç‚¤‚â‚Á‚ÄuŒ©‚‚¯‚é‚©v‚ð•\‚µ‚Ä‚¢‚Ü‚·Bj + 1対多関連ã§ã¯ã€ã€Œä¸»ã‚­ãƒ¼ã€ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ†ãƒ¼ãƒ–ルã®ç‰©ç†çš„㪠+ 主キーã§ã¯ãªã„ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã—ã‹ã—ã“ã®å ´åˆã§ã•ãˆã€ä¸Šè¨˜ã®åˆ†é¡žã¯ã¾ã æœ‰ç”¨ã§ã™ã€‚ + (HibernateãŒã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å€‹ã€…ã®è¡Œã‚’ã©ã†ã‚„ã£ã¦ã€Œè¦‹ã¤ã‘ã‚‹ã‹ã€ã‚’表ã—ã¦ã„ã¾ã™ã€‚) - XV‚É‚à‚Á‚Æ‚àŒø—¦“I‚ȃRƒŒƒNƒVƒ‡ƒ“ listAmapAidbagAset + æ›´æ–°ã«ã‚‚ã£ã¨ã‚‚効率的ãªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ listã€mapã€idbagã€set - ã‚Å‚Ì‹c˜_‚©‚çAƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚Æi•’Ê‚Ìjset‚Í—v‘f‚̒ljÁAíœA - XV‚Å‚à‚Á‚Æ‚àŒø—¦“I‚È‘€ì‚ªo—ˆ‚邱‚Æ‚Í–¾‚ç‚©‚Å‚·B + 上ã§ã®è­°è«–ã‹ã‚‰ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãコレクションã¨ï¼ˆæ™®é€šã®ï¼‰setã¯è¦ç´ ã®è¿½åŠ ã€å‰Šé™¤ã€ + æ›´æ–°ã§ã‚‚ã£ã¨ã‚‚効率的ãªæ“作ãŒå‡ºæ¥ã‚‹ã“ã¨ã¯æ˜Žã‚‰ã‹ã§ã™ã€‚ - ‚قڊԈႢ‚È‚­A‘½‘Α½ŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚É‚¨‚¢‚ÄAƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚ª - set‚æ‚è‚à—D‚ê‚Ä‚¢‚é“_‚ªˆê‚ˆÈã‚ ‚è‚Ü‚·B Set ‚Í‚»‚Ì - \‘¢‚Ì‚½‚ß‚ÉAHibernate‚Í—v‘f‚ªu•ÏXv‚³‚ꂽ‚Æ‚«‚És‚ðŒˆ‚µ‚Ä UPDATE - ‚µ‚Ü‚¹‚ñB Set ‚Ö‚Ì•ÏX‚Íí‚ÉiŒÂX‚Ìs‚ÌjINSERT - ‚Æ DELETE ‚É‚æ‚Á‚Äs‚¢‚Ü‚·BŒJ‚è•Ô‚µ‚Ü‚·‚ªA‚±‚ê‚͈ê‘Α½ŠÖ˜A‚É‚Í - “–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB + ã»ã¼é–“é•ã„ãªãã€å¤šå¯¾å¤šé–¢é€£ã‚„値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ãŠã„ã¦ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãコレクション㌠+ setよりも優れã¦ã„る点ãŒä¸€ã¤ä»¥ä¸Šã‚ã‚Šã¾ã™ã€‚ Set ã¯ãã® + 構造ã®ãŸã‚ã«ã€Hibernateã¯è¦ç´ ãŒã€Œå¤‰æ›´ã€ã•ã‚ŒãŸã¨ãã«è¡Œã‚’決ã—㦠UPDATE + ã—ã¾ã›ã‚“。 Set ã¸ã®å¤‰æ›´ã¯å¸¸ã«ï¼ˆå€‹ã€…ã®è¡Œã®ï¼‰INSERT + 㨠DELETE ã«ã‚ˆã£ã¦è¡Œã„ã¾ã™ã€‚ç¹°ã‚Šè¿”ã—ã¾ã™ãŒã€ã“ã‚Œã¯ä¸€å¯¾å¤šé–¢é€£ã«ã¯ + 当ã¦ã¯ã¾ã‚Šã¾ã›ã‚“。 - ”z—ñ‚Í’x‰„ˆ—‚ª‚Å‚«‚È‚¢‚Æ‚¢‚¤Œˆ‚Ü‚è‚È‚Ì‚ÅAŒ‹˜_‚Æ‚µ‚ÄAlistAmapAidbag‚ª‚à‚Á‚Æ‚à - ƒpƒtƒH[ƒ}ƒ“ƒX‚Ì—Ç‚¢iinverse‚Å‚Í‚È‚¢jƒRƒŒƒNƒVƒ‡ƒ“ƒ^ƒCƒv‚Æ‚È‚è‚Ü‚·Bset‚à - ‚»‚ê‚قLjႢ‚Í‚ ‚è‚Ü‚¹‚ñBHibernate‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍAset‚̓RƒŒƒNƒVƒ‡ƒ“‚Ì‚à‚Á‚Æ‚à - ‹¤’Ê‚ÌŽí—Þ‚Æ‚µ‚ÄŠú‘Ò‚³‚ê‚Ü‚·Bset‚Ì•\Œ»‚ÍŠÖ˜Aƒ‚ƒfƒ‹‚Å‚Í‚à‚Á‚Æ‚àŽ©‘R‚¾‚©‚ç‚Å‚·B + é…列ã¯é…延処ç†ãŒã§ããªã„ã¨ã„ã†æ±ºã¾ã‚Šãªã®ã§ã€çµè«–ã¨ã—ã¦ã€listã€mapã€idbagãŒã‚‚ã£ã¨ã‚‚ + パフォーマンスã®è‰¯ã„(inverseã§ã¯ãªã„)コレクションタイプã¨ãªã‚Šã¾ã™ã€‚setã‚‚ + ãã‚Œã»ã©é•ã„ã¯ã‚ã‚Šã¾ã›ã‚“。Hibernateã®ã‚¢ãƒ—リケーションã§ã¯ã€setã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚‚ã£ã¨ã‚‚ + 共通ã®ç¨®é¡žã¨ã—ã¦æœŸå¾…ã•ã‚Œã¾ã™ã€‚setã®è¡¨ç¾ã¯é–¢é€£ãƒ¢ãƒ‡ãƒ«ã§ã¯ã‚‚ã£ã¨ã‚‚自然ã ã‹ã‚‰ã§ã™ã€‚ - ‚µ‚©‚µA‚æ‚­ƒfƒUƒCƒ“‚³‚ꂽHibernate‚̃hƒƒCƒ“ƒ‚ƒfƒ‹‚Å‚ÍA’Êí‚à‚Á‚Æ‚à‘½‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Í - Ž–ŽÀã inverse="true" ‚ðŽw’肵‚½1‘Α½ŠÖ˜A‚Å‚·B‚±‚ê‚ç‚ÌŠÖ˜A‚Å‚ÍA - XV‚Í‘½‘Έê‚ÌŠÖ˜A’[‚ňµ‚í‚êAƒRƒŒƒNƒVƒ‡ƒ“‚ÌXVƒpƒtƒH[ƒ}ƒ“ƒX‚Ì–â‘è‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB + ã—ã‹ã—ã€ã‚ˆãデザインã•ã‚ŒãŸHibernateã®ãƒ‰ãƒ¡ã‚¤ãƒ³ãƒ¢ãƒ‡ãƒ«ã§ã¯ã€é€šå¸¸ã‚‚ã£ã¨ã‚‚多ã„コレクション㯠+ 事実上 inverse="true" を指定ã—ãŸ1対多関連ã§ã™ã€‚ã“れらã®é–¢é€£ã§ã¯ã€ + æ›´æ–°ã¯å¤šå¯¾ä¸€ã®é–¢é€£ç«¯ã§æ‰±ã‚ã‚Œã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æ›´æ–°ãƒ‘フォーマンスã®å•é¡Œã¯å½“ã¦ã¯ã¾ã‚Šã¾ã›ã‚“。 - inverseƒRƒŒƒNƒVƒ‡ƒ“‚É‚à‚Á‚Æ‚àÅ“K‚Èbag‚Ælist + inverseコレクションã«ã‚‚ã£ã¨ã‚‚最é©ãªbagã¨list - bag‚ðŒ©•ú‚µ‚Ä‚µ‚Ü‚¤‘O‚ÉAbagi‚»‚µ‚Älist‚àj‚ªset‚æ‚è‚à‚¸‚Á‚ƃpƒtƒH[ƒ}ƒ“ƒX‚ª—Ç‚¢“Á•Ê‚ȃP[ƒX‚ð - Љ‚Ü‚·B inverse="true" ‚̃RƒŒƒNƒVƒ‡ƒ“iˆê”Ê“I‚È1‘Α½ŠÖ˜A‚ÌŽg‚¢•û‚È‚Çj‚ÅA - bag‚Ì—v‘f‚ð‰Šú‰»iƒtƒFƒbƒ`j‚·‚é•K—v‚È‚­bag‚âlist‚É—v‘f‚ð’ljÁ‚Å‚«‚Ü‚·I - ‚±‚ê‚Í Collection.add() ‚â Collection.addAll() - ‚Íbag‚â List ‚Å‚Íí‚Étrue‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©‚ç‚Å‚· - i Set ‚Ƃ͈قȂè‚Ü‚·jB - ‚±‚ê‚͈ȉº‚Ì‹¤’ʈ—‚ð‚æ‚葬‚­‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + bagを見放ã—ã¦ã—ã¾ã†å‰ã«ã€bag(ãã—ã¦listも)ãŒsetよりもãšã£ã¨ãƒ‘フォーマンスãŒè‰¯ã„特別ãªã‚±ãƒ¼ã‚¹ã‚’ + 紹介ã—ã¾ã™ã€‚ inverse="true" ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆä¸€èˆ¬çš„ãª1対多関連ã®ä½¿ã„æ–¹ãªã©ï¼‰ã§ã€ + bagã®è¦ç´ ã‚’åˆæœŸåŒ–(フェッãƒï¼‰ã™ã‚‹å¿…è¦ãªãbagã‚„listã«è¦ç´ ã‚’追加ã§ãã¾ã™ï¼ + ã“れ㯠Collection.add() ã‚„ Collection.addAll() + ã¯bagã‚„ List ã§ã¯å¸¸ã«trueã‚’è¿”ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„ã‹ã‚‰ã§ã™ + ( Set ã¨ã¯ç•°ãªã‚Šã¾ã™ï¼‰ã€‚ + ã“ã‚Œã¯ä»¥ä¸‹ã®å…±é€šå‡¦ç†ã‚’より速ãã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ˆêŠ‡íœ + 一括削除 - ŽžXAƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ðˆê‚ˆê‚Â휂·‚邱‚Æ‚Í‹É‚ß‚Ä”ñŒø—¦“I‚ɂȂ邱‚Æ‚ª‚ ‚è‚Ü‚·B - Hibernate‚Í‹ð‚©‚Å‚Í‚È‚¢‚Ì‚ÅAV‚µ‚¢‹ó‚̃RƒŒƒNƒVƒ‡ƒ“‚Ìê‡i list.clear() - ‚ðŒÄ‚Ño‚µ‚½ê‡‚È‚Çj‚Å‚Í‚±‚ê‚ð‚·‚×‚«‚Å‚È‚¢‚±‚Æ‚ð’m‚Á‚Ä‚¢‚Ü‚·B‚±‚ÌꇂÍAHibernate‚Í - DELETE ‚ðˆê‰ñ”­s‚µ‚ÄA‚»‚ê‚Å‚·‚ׂÄI‚í‚è‚Ü‚·I + 時々ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ã‚’一ã¤ä¸€ã¤å‰Šé™¤ã™ã‚‹ã“ã¨ã¯æ¥µã‚ã¦éžåŠ¹çŽ‡çš„ã«ãªã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernateã¯æ„šã‹ã§ã¯ãªã„ã®ã§ã€æ–°ã—ã„空ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆï¼ˆ list.clear() + を呼ã³å‡ºã—ãŸå ´åˆãªã©ï¼‰ã§ã¯ã“れをã™ã¹ãã§ãªã„ã“ã¨ã‚’知ã£ã¦ã„ã¾ã™ã€‚ã“ã®å ´åˆã¯ã€Hibernate㯠+ DELETE を一回発行ã—ã¦ã€ãã‚Œã§ã™ã¹ã¦çµ‚ã‚ã‚Šã¾ã™ï¼ - ƒTƒCƒY20‚̃RƒŒƒNƒVƒ‡ƒ“‚Ɉê‚‚̗v‘f‚ð’ljÁ‚µA‚»‚ê‚©‚ç“ñ‚‚̗v‘f‚ð휂·‚é‚Æ‚µ‚Ü‚·B - Hibernate‚͈ê‚Â‚Ì INSERT •¶‚Æ“ñ‚Â‚Ì DELETE •¶‚ð”­s‚µ‚Ü‚· - iƒRƒŒƒNƒVƒ‡ƒ“‚ªbag‚Å‚È‚¯‚ê‚ÎjB‚±‚ê‚ÍŠm‚©‚É–]‚Ü‚µ‚¢“®ì‚Å‚·B + サイズ20ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ä¸€ã¤ã®è¦ç´ ã‚’追加ã—ã€ãã‚Œã‹ã‚‰äºŒã¤ã®è¦ç´ ã‚’削除ã™ã‚‹ã¨ã—ã¾ã™ã€‚ + Hibernateã¯ä¸€ã¤ã® INSERT æ–‡ã¨äºŒã¤ã® DELETE 文を発行ã—ã¾ã™ + (コレクションãŒbagã§ãªã‘ã‚Œã°ï¼‰ã€‚ã“ã‚Œã¯ç¢ºã‹ã«æœ›ã¾ã—ã„動作ã§ã™ã€‚ - ‚µ‚©‚µA18ŒÂ‚Ì—v‘f‚ð휂µ‚Ä2‚‚ðŽc‚µA‚»‚ê‚©‚ç3‚ÂV‚µ‚¢—v‘f‚ð’ljÁ‚·‚é‚Æ‚µ‚Ü‚·B - ‚±‚Ì‚Æ‚«“ñ‚‚̕û–@‚ª‚ ‚è‚Ü‚·B + ã—ã‹ã—ã€18個ã®è¦ç´ ã‚’削除ã—ã¦2ã¤ã‚’残ã—ã€ãã‚Œã‹ã‚‰3ã¤æ–°ã—ã„è¦ç´ ã‚’追加ã™ã‚‹ã¨ã—ã¾ã™ã€‚ + ã“ã®ã¨ã二ã¤ã®æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ - 18s‚ðˆê‚ˆê‚Â휂µ‚ÄA3s‚ð’ljÁ‚·‚é + 18行を一ã¤ä¸€ã¤å‰Šé™¤ã—ã¦ã€3行を追加ã™ã‚‹ - ƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ðíœi DELETE ‚ÌSQL‚ðˆê‰ñj‚µA‚»‚µ‚Ä5‚‚̗v‘f‚·‚ׂĂð - iˆê‚‚¸‚Âj’ljÁ‚·‚é + コレクション全体を削除( DELETE ã®SQLを一回)ã—ã€ãã—ã¦5ã¤ã®è¦ç´ ã™ã¹ã¦ã‚’ + (一ã¤ãšã¤ï¼‰è¿½åŠ ã™ã‚‹ - Hibernate‚Í‚±‚ÌꇂÉ2”Ô–Ú‚Ì•û–@‚ª‚æ‚葬‚¢‚¾‚낤‚Æ‚í‚©‚é‚Ù‚ÇŒ«‚­‚Í‚ ‚è‚Ü‚¹‚ñB - i‚»‚µ‚ÄHibernate‚ª‚±‚̂悤‚ÉŒ«‚¢‚±‚Æ‚à–]‚Ü‚µ‚­‚È‚¢‚Å‚µ‚傤B‚±‚̂悤‚ÈU‚é•‘‚¢‚Í - ƒf[ƒ^ƒx[ƒX‚̃gƒŠƒK‚Ȃǂ𬗂³‚¹‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñBj + Hibernateã¯ã“ã®å ´åˆã«2番目ã®æ–¹æ³•ãŒã‚ˆã‚Šé€Ÿã„ã ã‚ã†ã¨ã‚ã‹ã‚‹ã»ã©è³¢ãã¯ã‚ã‚Šã¾ã›ã‚“。 + (ãã—ã¦HibernateãŒã“ã®ã‚ˆã†ã«è³¢ã„ã“ã¨ã‚‚望ã¾ã—ããªã„ã§ã—ょã†ã€‚ã“ã®ã‚ˆã†ãªæŒ¯ã‚‹èˆžã„㯠+ データベースã®ãƒˆãƒªã‚¬ãªã©ã‚’æ··ä¹±ã•ã›ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。) - K‚¢‚É‚àAŒ³‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽÌ‚Äi‚‚܂èŽQÆ‚ð‚â‚ß‚ÄjAŒ»Ý‚Ì—v‘f‚ð‚·‚×‚ÄŽ‚ÂV‚µ‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Ì - ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚±‚Æ‚ÅA‚¢‚Â‚Å‚à‚±‚ÌU‚é•‘‚¢i2”Ô–Ú‚Ìí—ªj‚ð‹­§‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - Žž‚É‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚Å‹­—Í‚Å‚·B + 幸ã„ã«ã‚‚ã€å…ƒã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’æ¨ã¦ï¼ˆã¤ã¾ã‚Šå‚照をやã‚ã¦ï¼‰ã€ç¾åœ¨ã®è¦ç´ ã‚’ã™ã¹ã¦æŒã¤æ–°ã—ã„コレクション㮠+ インスタンスを返ã™ã“ã¨ã§ã€ã„ã¤ã§ã‚‚ã“ã®æŒ¯ã‚‹èˆžã„(2番目ã®æˆ¦ç•¥ï¼‰ã‚’強制ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + 時ã«ã“ã‚Œã¯ã¨ã¦ã‚‚便利ã§å¼·åŠ›ã§ã™ã€‚ - ‚à‚¿‚ë‚ñAˆêŠ‡íœ‚Í inverse="true" ‚ðŽw’肵‚½ƒRƒŒƒNƒVƒ‡ƒ“‚É‚Ís‚¢‚Ü‚¹‚ñB + ã‚‚ã¡ã‚ã‚“ã€ä¸€æ‹¬å‰Šé™¤ã¯ inverse="true" を指定ã—ãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯è¡Œã„ã¾ã›ã‚“。 @@ -1229,28 +1231,28 @@ sess.flush();]]> - ƒpƒtƒH[ƒ}ƒ“ƒX‚̃‚ƒjƒ^ƒŠƒ“ƒO + パフォーマンスã®ãƒ¢ãƒ‹ã‚¿ãƒªãƒ³ã‚° - Å“K‰»‚̓‚ƒjƒ^ƒŠƒ“ƒO‚âƒpƒtƒH[ƒ}ƒ“ƒX‚ðŽ¦‚·”’l‚ª‚È‚¯‚ê‚Î\•ª‚És‚¦‚Ü‚¹‚ñB - Hibernate‚Í“à•”ˆ—‚Ì‚·‚ׂĂ͈̔͂̔’l‚ð’ñ‹Ÿ‚µ‚Ü‚·B - Hibernate‚Ì“Œvî•ñ‚Í SessionFactory ’PˆÊ‚Ŏ擾‰Â”\‚Å‚·B + 最é©åŒ–ã¯ãƒ¢ãƒ‹ã‚¿ãƒªãƒ³ã‚°ã‚„パフォーマンスを示ã™æ•°å€¤ãŒãªã‘ã‚Œã°å分ã«è¡Œãˆã¾ã›ã‚“。 + Hibernateã¯å†…部処ç†ã®ã™ã¹ã¦ã®ç¯„囲ã®æ•°å€¤ã‚’æä¾›ã—ã¾ã™ã€‚ + Hibernateã®çµ±è¨ˆæƒ…報㯠SessionFactory å˜ä½ã§å–å¾—å¯èƒ½ã§ã™ã€‚ - SessionFactory‚̃‚ƒjƒ^ƒŠƒ“ƒO + SessionFactoryã®ãƒ¢ãƒ‹ã‚¿ãƒªãƒ³ã‚° - SessionFactory ‚̃ƒgƒŠƒNƒX‚ɃAƒNƒZƒX‚·‚é‚É‚Í2‚‚̕û–@‚ª‚ ‚è‚Ü‚·B - ʼn‚Ì•û–@‚ÍA sessionFactory.getStatistics() ‚ðŒÄ‚Ño‚µA - Ž©•ª‚Å Statistics ‚Ì“Ç‚Ýž‚Ý‚â•\Ž¦‚ðs‚¢‚Ü‚·B + SessionFactory ã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯2ã¤ã®æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ + 最åˆã®æ–¹æ³•ã¯ã€ sessionFactory.getStatistics() を呼ã³å‡ºã—〠+ 自分㧠Statistics ã®èª­ã¿è¾¼ã¿ã‚„表示を行ã„ã¾ã™ã€‚ - StatisticsService MBean‚ð—LŒø‚É‚µ‚Ä‚¢‚ê‚ÎAHibernate‚ÍJMX‚ðŽg‚Á‚Ä - ƒƒgƒŠƒNƒX‚ð”­s‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B1‚‚ÌMBean‚ð‚·‚×‚Ä‚Ì SessionFactory - ‚ɑ΂µ‚Ä—LŒø‚É‚·‚é‚©ASessionFactory‚²‚ƂɈê‚‚ÌMBean‚ð—LŒø‚É‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - ŬŒÀ‚ÌÝ’è—á‚Å‚ ‚éˆÈ‰º‚̃R[ƒh‚ðŒ©‚Ä‚­‚¾‚³‚¢B + StatisticsService MBeanを有効ã«ã—ã¦ã„ã‚Œã°ã€Hibernateã¯JMXを使ã£ã¦ + メトリクスを発行ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚1ã¤ã®MBeanã‚’ã™ã¹ã¦ã® SessionFactory + ã«å¯¾ã—ã¦æœ‰åŠ¹ã«ã™ã‚‹ã‹ã€SessionFactoryã”ã¨ã«ä¸€ã¤ã®MBeanを有効ã«ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + 最å°é™ã®è¨­å®šä¾‹ã§ã‚る以下ã®ã‚³ãƒ¼ãƒ‰ã‚’見ã¦ãã ã•ã„。 - TODO: ‚±‚ê‚͈Ӗ¡‚ª‚ ‚è‚Ü‚¹‚ñBʼn‚̃P[ƒX‚ÍAMBean‚ð’¼Ú•œŒ³‚µ‚ÄŽg—p‚µ‚Ü‚·B2”Ԗڂ̃P[ƒX‚ÍA - Žg‚¤‘O‚Ésession factory‚ªŽ‚Á‚Ä‚¢‚éJNDI–¼‚ð“n‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name") ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B + TODO: ã“ã‚Œã¯æ„味ãŒã‚ã‚Šã¾ã›ã‚“。最åˆã®ã‚±ãƒ¼ã‚¹ã¯ã€MBeanを直接復元ã—ã¦ä½¿ç”¨ã—ã¾ã™ã€‚2番目ã®ã‚±ãƒ¼ã‚¹ã¯ã€ + 使ã†å‰ã«session factoryãŒæŒã£ã¦ã„ã‚‹JNDIåを渡ã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name") を使ã£ã¦ãã ã•ã„。 - SessionFactory ‚ɑ΂µ‚ă‚ƒjƒ^ƒŠƒ“ƒO‚ÌŠJŽniI—¹j‚ðs‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B + SessionFactory ã«å¯¾ã—ã¦ãƒ¢ãƒ‹ã‚¿ãƒªãƒ³ã‚°ã®é–‹å§‹ï¼ˆçµ‚了)を行ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ - ݒ莞‚É‚ÍA hibernate.generate_statistics ‚ð false ‚É‚µ‚Ü‚· + 設定時ã«ã¯ã€ hibernate.generate_statistics ã‚’ false ã«ã—ã¾ã™ - ŽÀsŽž‚ÉA sf.getStatistics().setStatisticsEnabled(true) ‚Ü‚½‚Í - hibernateStatsBean.setStatisticsEnabled(true) ‚ðŒÄ‚Ño‚µ‚Ü‚· + 実行時ã«ã€ sf.getStatistics().setStatisticsEnabled(true) ã¾ãŸã¯ + hibernateStatsBean.setStatisticsEnabled(true) を呼ã³å‡ºã—ã¾ã™ - “Œv‚Í clear() ƒƒ\ƒbƒh‚ðŽg‚Á‚ÄŽè“®‚ŃŠƒZƒbƒg‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B - ƒTƒ}ƒŠ‚Í logSummary() ƒƒ\ƒbƒh‚ðŽg‚Á‚Älogger‚É‘—‚邱‚Æ‚ªo—ˆ‚Ü‚· - iinfoƒŒƒxƒ‹‚Å‚·jB + 統計㯠clear() メソッドを使ã£ã¦æ‰‹å‹•ã§ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + サマリ㯠logSummary() メソッドを使ã£ã¦loggerã«é€ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ + (infoレベルã§ã™ï¼‰ã€‚ - ƒƒgƒŠƒNƒX + メトリクス - ‘½‚­‚Ì‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚·‚ׂĂ̎g—p‰Â”\‚ȃJƒEƒ“ƒ^‚Í Statistics - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌAPI‚É‘‚©‚ê‚Ä‚¨‚èA3‚‚̕ª—Þ‚ª‚ ‚è‚Ü‚·B + 多ãã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚ã™ã¹ã¦ã®ä½¿ç”¨å¯èƒ½ãªã‚«ã‚¦ãƒ³ã‚¿ã¯ Statistics + インターフェイスã®APIã«æ›¸ã‹ã‚Œã¦ãŠã‚Šã€3ã¤ã®åˆ†é¡žãŒã‚ã‚Šã¾ã™ã€‚ - ƒƒgƒŠƒNƒX‚͈ê”Ê“I‚È Session ‚ÌŽg‚¢•û‚ÆŠÖŒW‚µ‚Ä‚¢‚Ü‚·B - ƒI[ƒvƒ“‚µ‚½ƒZƒbƒVƒ‡ƒ“‚Ì”‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÆŠÖ˜A‚µ‚Ä‚¢‚é‚Ì‚Æ“¯‚¶‚Å‚·B + メトリクスã¯ä¸€èˆ¬çš„㪠Session ã®ä½¿ã„æ–¹ã¨é–¢ä¿‚ã—ã¦ã„ã¾ã™ã€‚ + オープンã—ãŸã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ•°ãŒJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã¨é–¢é€£ã—ã¦ã„ã‚‹ã®ã¨åŒã˜ã§ã™ã€‚ - ƒƒgƒŠƒNƒX‚Í—v‘fAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠ‚âƒLƒƒƒbƒVƒ…‚È‚Ç‘S‘Ì‚É - ŠÖŒW‚µ‚Ä‚¢‚Ü‚·i•Ê–¼‚̓Oƒ[ƒoƒ‹ƒƒgƒŠƒNƒX‚Å‚·jB + メトリクスã¯è¦ç´ ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚¯ã‚¨ãƒªã‚„キャッシュãªã©å…¨ä½“ã« + 関係ã—ã¦ã„ã¾ã™ï¼ˆåˆ¥åã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«ãƒ¡ãƒˆãƒªã‚¯ã‚¹ã§ã™ï¼‰ã€‚ - ƒƒgƒŠƒNƒX‚ÌÚׂ͓Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠAƒLƒƒƒbƒVƒ…—̈æ‚ÉŠÖŒW‚µ‚Ä‚¢‚Ü‚·B + メトリクスã®è©³ç´°ã¯ç‰¹å®šã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚¯ã‚¨ãƒªã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã«é–¢ä¿‚ã—ã¦ã„ã¾ã™ã€‚ - —á‚Æ‚µ‚ÄAƒLƒƒƒbƒVƒ…‚̃qƒbƒgAƒqƒbƒgƒ~ƒX‚âA—v‘fAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠ‚ÌŠ„‡AƒNƒGƒŠ‚ÌŽÀs‚É - •K—v‚È•½‹ÏŽžŠÔ‚ðŠm”F‚Å‚«‚Ü‚·Bƒ~ƒŠ•b‚Ì”’l‚ÍJava‚̋ߎ—‚ðŽó‚¯‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - Hibernate‚ÍJVM‚̸“x‚ɧŒÀ‚³‚êAƒvƒ‰ƒbƒgƒtƒH[ƒ€‚É‚æ‚Á‚Ä‚Í10•b’PˆÊ‚Å‚µ‚©³Šm‚Å‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB + 例ã¨ã—ã¦ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ãƒ’ットã€ãƒ’ットミスやã€è¦ç´ ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚¯ã‚¨ãƒªã®å‰²åˆã€ã‚¯ã‚¨ãƒªã®å®Ÿè¡Œã« + å¿…è¦ãªå¹³å‡æ™‚間を確èªã§ãã¾ã™ã€‚ミリ秒ã®æ•°å€¤ã¯Javaã®è¿‘似をå—ã‘ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + Hibernateã¯JVMã®ç²¾åº¦ã«åˆ¶é™ã•ã‚Œã€ãƒ—ラットフォームã«ã‚ˆã£ã¦ã¯10秒å˜ä½ã§ã—ã‹æ­£ç¢ºã§ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - ’Pƒ‚Ègetter‚̓Oƒ[ƒoƒ‹ƒƒgƒŠƒNƒXi‚·‚È‚í‚¿“Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒLƒƒƒbƒVƒ…—̈æ‚È‚Ç‚É”›‚ç‚ê‚È‚¢j - ‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B“Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒLƒƒƒbƒVƒ…—̈æ‚̃ƒgƒŠƒNƒX‚ÍA - ‚»‚ê‚ç‚Ì–¼‘O‚âAƒNƒGƒŠ‚ÌHQLASQL•\Œ»‚É‚æ‚Á‚ăAƒNƒZƒX‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B‚³‚ç‚ÉÚ‚µ‚¢î•ñ‚ÍA - Statistics A EntityStatistics A CollectionStatistics - A SecondLevelCacheStatistics A QueryStatistics API‚Ìjavadoc‚ð - ŽQÆ‚µ‚Ä‚­‚¾‚³‚¢BˆÈ‰º‚̃R[ƒh‚ÍŠÈ’P‚È—á‚Å‚·B + å˜ç´”ãªgetterã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«ãƒ¡ãƒˆãƒªã‚¯ã‚¹ï¼ˆã™ãªã‚ã¡ç‰¹å®šã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸãªã©ã«ç¸›ã‚‰ã‚Œãªã„) + ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ä½¿ã„ã¾ã™ã€‚特定ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹ã¯ã€ + ãれらã®åå‰ã‚„ã€ã‚¯ã‚¨ãƒªã®HQLã€SQL表ç¾ã«ã‚ˆã£ã¦ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã•ã‚‰ã«è©³ã—ã„情報ã¯ã€ + Statistics 〠EntityStatistics 〠CollectionStatistics + 〠SecondLevelCacheStatistics 〠QueryStatistics APIã®javadocã‚’ + å‚ç…§ã—ã¦ãã ã•ã„。以下ã®ã‚³ãƒ¼ãƒ‰ã¯ç°¡å˜ãªä¾‹ã§ã™ã€‚ - ‚·‚ׂẴGƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠAƒLƒƒƒbƒVƒ…—̈æ‚ɑ΂µ‚Äs‚¤ê‡‚ÍA - getQueries() A getEntityNames()A - getCollectionRoleNames() A getSecondLevelCacheRegionNames() ƒƒ\ƒbƒh‚Å - ‚»‚ꂼ‚ê‚Ì–¼‘O‚̃ŠƒXƒg‚ðŽæ“¾‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚¯ã‚¨ãƒªã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥é ˜åŸŸã«å¯¾ã—ã¦è¡Œã†å ´åˆã¯ã€ + getQueries() 〠getEntityNames()〠+ getCollectionRoleNames() 〠getSecondLevelCacheRegionNames() メソッド㧠+ ãã‚Œãžã‚Œã®åå‰ã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ - \ No newline at end of file + diff --git a/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml b/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml index e9f9ae56d6..d7ddd0c487 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml @@ -1,28 +1,30 @@ - + + + - ‰i‘±ƒNƒ‰ƒX + 永続クラス - ‰i‘±ƒNƒ‰ƒX‚̓rƒWƒlƒXã‚Ì–â‘è‚̃Gƒ“ƒeƒBƒeƒBi—Ⴆ‚ÎAEƒRƒ}[ƒXƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̌ڋq‚â’•¶j - ‚ðŽÀ‘•‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Nƒ‰ƒX‚Å‚·B - ‰i‘±ƒNƒ‰ƒX‚Ì‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ª‰i‘±ó‘Ô‚Å‚ ‚é‚ÆŒ©‚È‚³‚ê‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ƒCƒ“ƒXƒ^ƒ“ƒX‚Í‹t‚Ɉꎞ“Iitransientj‚Å‚ ‚Á‚½‚èA•ª—£ó‘Ôidetachedj‚Å‚ ‚Á‚½‚è‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + 永続クラスã¯ãƒ“ジãƒã‚¹ä¸Šã®å•é¡Œã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ï¼ˆä¾‹ãˆã°ã€Eコマースアプリケーションã®é¡§å®¢ã‚„注文) + を実装ã™ã‚‹ã‚¢ãƒ—リケーションã®ã‚¯ãƒ©ã‚¹ã§ã™ã€‚ + 永続クラスã®ã™ã¹ã¦ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ°¸ç¶šçŠ¶æ…‹ã§ã‚ã‚‹ã¨è¦‹ãªã•ã‚Œã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + インスタンスã¯é€†ã«ä¸€æ™‚的(transient)ã§ã‚ã£ãŸã‚Šã€åˆ†é›¢çŠ¶æ…‹ï¼ˆdetached)ã§ã‚ã£ãŸã‚Šã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - Plain Old Java Object (POJO)ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚Æ‚µ‚Ä‚à’m‚ç‚ê‚é - ‚¢‚­‚‚©‚Ì’Pƒ‚ȃ‹[ƒ‹‚É]‚¤‚È‚çAHibernate‚ÍÅ‚à‚æ‚­“­‚«‚Ü‚·B - ‚µ‚©‚µ‚±‚ê‚ç‚̃‹[ƒ‹‚͓‚¢‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ŽÀÛHibernate3‚͉i‘±ƒIƒuƒWƒFƒNƒg‚Ì«Ž¿‚É‚Ù‚Æ‚ñ‚lj½‚Ì‘O’ñ‚à’u‚¢‚Ä‚¢‚Ü‚¹‚ñB - ƒhƒƒCƒ“ƒ‚ƒfƒ‹‚Í‘¼‚Ì•û–@‚Å•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - —Ⴆ‚Î Map ƒCƒ“ƒXƒ^ƒ“ƒX‚̃cƒŠ[‚ðŽg‚¤•û–@‚ª‚ ‚è‚Ü‚·B + Plain Old Java Object (POJO)プログラミングモデルã¨ã—ã¦ã‚‚知られる + ã„ãã¤ã‹ã®å˜ç´”ãªãƒ«ãƒ¼ãƒ«ã«å¾“ã†ãªã‚‰ã€Hibernateã¯æœ€ã‚‚よãåƒãã¾ã™ã€‚ + ã—ã‹ã—ã“れらã®ãƒ«ãƒ¼ãƒ«ã¯é›£ã—ã„ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + 実際Hibernate3ã¯æ°¸ç¶šã‚ªãƒ–ジェクトã®æ€§è³ªã«ã»ã¨ã‚“ã©ä½•ã®å‰æã‚‚ç½®ã„ã¦ã„ã¾ã›ã‚“。 + ドメインモデルã¯ä»–ã®æ–¹æ³•ã§è¡¨ç¾ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + 例ãˆã° Map インスタンスã®ãƒ„リーを使ã†æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ - ’Pƒ‚ÈPOJO‚Ì—á + å˜ç´”ãªPOJOã®ä¾‹ - ‚Ù‚Æ‚ñ‚Ç‚ÌJavaƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɂ̓lƒR‰È‚Ì“®•¨‚ð•\Œ»‚·‚é‰i‘±ƒNƒ‰ƒX‚ª•K—v‚Å‚·B + ã»ã¨ã‚“ã©ã®Javaアプリケーションã«ã¯ãƒã‚³ç§‘ã®å‹•ç‰©ã‚’表ç¾ã™ã‚‹æ°¸ç¶šã‚¯ãƒ©ã‚¹ãŒå¿…è¦ã§ã™ã€‚ - ]‚¤‚ׂ«4‚‚̃‹[ƒ‹‚ª‚ ‚è‚Ü‚·F + 従ã†ã¹ã4ã¤ã®ãƒ«ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã™ï¼š - ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ðŽÀ‘•‚·‚é + 引数ã®ãªã„コンストラクタを実装ã™ã‚‹ - Cat ‚ɂ͈ø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ª‚ ‚è‚Ü‚·B - Hibernate‚ª Constructor.newInstance() ‚ðŽg‚Á‚ĉi‘±ƒNƒ‰ƒX‚Ì - ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚ðs‚¦‚é‚悤‚ÉA‚·‚ׂẲi‘±ƒNƒ‰ƒX‚ɂ̓fƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^ - ipublic‚Å‚È‚­‚Ä‚à\‚¢‚Ü‚¹‚ñj‚ª‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Hibernate‚ÌŽÀsŽžƒvƒƒLƒV¶¬‚Ì‚½‚ß‚ÉA­‚È‚­‚Æ‚à package - ‚̉Ž‹«‚ðŽ‚ƒfƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ð‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B + Cat ã«ã¯å¼•æ•°ã®ãªã„コンストラクタãŒã‚ã‚Šã¾ã™ã€‚ + Hibernate㌠Constructor.newInstance() を使ã£ã¦æ°¸ç¶šã‚¯ãƒ©ã‚¹ã® + インスタンス化を行ãˆã‚‹ã‚ˆã†ã«ã€ã™ã¹ã¦ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ + (publicã§ãªãã¦ã‚‚構ã„ã¾ã›ã‚“)ãŒãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Hibernateã®å®Ÿè¡Œæ™‚プロキシ生æˆã®ãŸã‚ã«ã€å°‘ãªãã¨ã‚‚ package + ã®å¯è¦–性をæŒã¤ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚ - Ž¯•ÊŽqƒvƒƒpƒeƒB‚ð—pˆÓ‚·‚éiƒIƒvƒVƒ‡ƒ“j + 識別å­ãƒ—ロパティを用æ„ã™ã‚‹ï¼ˆã‚ªãƒ—ション) - Cat ‚É‚Í id ‚Æ‚¢‚¤ƒvƒƒpƒeƒB‚ª‚ ‚è‚Ü‚·B - ‚±‚̃vƒƒpƒeƒB‚̓f[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B - ‚±‚̃vƒƒpƒeƒB‚Ì–¼‘O‚͉½‚Å‚à\‚¢‚Ü‚¹‚ñ‚µAŒ^‚͂ǂ̂悤‚ȃvƒŠƒ~ƒeƒBƒuŒ^‚Å‚àA - ƒvƒŠƒ~ƒeƒBƒu‚Ìuƒ‰ƒbƒp[vŒ^‚Å‚àAjava.lang.String ‚â - java.util.Date ‚Å‚à\‚¢‚Ü‚¹‚ñB - i‚à‚µƒŒƒKƒV[ƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ª•¡‡ƒL[‚ðŽ‚‚Ȃç‚ÎA - ¡q‚ׂ½‚悤‚ÈŒ^‚̃vƒƒpƒeƒB‚ðŽ‚ƒ†[ƒU’è‹`‚̃Nƒ‰ƒX‚ðŽg‚¤‚±‚Æ‚³‚¦‰Â”\‚Å‚·B - Œã‚Å•¡‡Ž¯•ÊŽq‚Ìß‚ðŒ©‚Ä‚­‚¾‚³‚¢Bj + Cat ã«ã¯ id ã¨ã„ã†ãƒ—ロパティãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã®ãƒ—ロパティã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã®ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã¸ãƒžãƒƒãƒ”ングã•ã‚Œã¾ã™ã€‚ + ã“ã®ãƒ—ロパティã®åå‰ã¯ä½•ã§ã‚‚構ã„ã¾ã›ã‚“ã—ã€åž‹ã¯ã©ã®ã‚ˆã†ãªãƒ—リミティブ型ã§ã‚‚〠+ プリミティブã®ã€Œãƒ©ãƒƒãƒ‘ーã€åž‹ã§ã‚‚ã€java.lang.String ã‚„ + java.util.Date ã§ã‚‚構ã„ã¾ã›ã‚“。 + (もã—レガシーデータベーステーブルãŒè¤‡åˆã‚­ãƒ¼ã‚’æŒã¤ãªã‚‰ã°ã€ + 今述ã¹ãŸã‚ˆã†ãªåž‹ã®ãƒ—ロパティをæŒã¤ãƒ¦ãƒ¼ã‚¶å®šç¾©ã®ã‚¯ãƒ©ã‚¹ã‚’使ã†ã“ã¨ã•ãˆå¯èƒ½ã§ã™ã€‚ + 後ã§è¤‡åˆè­˜åˆ¥å­ã®ç¯€ã‚’見ã¦ãã ã•ã„。) - Ž¯•ÊŽqƒvƒƒpƒeƒB‚ÍŒµ–§‚ɂ̓IƒvƒVƒ‡ƒ“‚Å‚·B - ‚±‚ê‚ðÈ—ª‚µ‚ÄAHibernate‚É“à•”“I‚ɃIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ð’ÇÕ‚³‚¹‚邱‚Ƃ͉”\‚Å‚·B - ‚µ‚©‚µ‚¨‚·‚·‚ß‚Í‚µ‚Ü‚¹‚ñB + 識別å­ãƒ—ロパティã¯åŽ³å¯†ã«ã¯ã‚ªãƒ—ションã§ã™ã€‚ + ã“れをçœç•¥ã—ã¦ã€Hibernateã«å†…部的ã«ã‚ªãƒ–ジェクトã®è­˜åˆ¥å­ã‚’追跡ã•ã›ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚ + ã—ã‹ã—ãŠã™ã™ã‚ã¯ã—ã¾ã›ã‚“。 - ŽÀÛ‚ÉAŽ¯•ÊŽqƒvƒƒpƒeƒB‚ð錾‚·‚éƒNƒ‰ƒX‚¾‚¯‚ª—˜—p‰Â”\‚È‹@”\‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F + 実際ã«ã€è­˜åˆ¥å­ãƒ—ロパティを宣言ã™ã‚‹ã‚¯ãƒ©ã‚¹ã ã‘ãŒåˆ©ç”¨å¯èƒ½ãªæ©Ÿèƒ½ãŒã„ãã¤ã‹ã‚ã‚Šã¾ã™ï¼š - •ª—£ƒIƒuƒWƒFƒNƒg‚̘A½“I‚ÈĒljÁiƒJƒXƒP[ƒhXV‚âƒJƒXƒP[ƒhƒ}[ƒWjB - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 分離オブジェクトã®é€£éŽ–çš„ãªå†è¿½åŠ ï¼ˆã‚«ã‚¹ã‚±ãƒ¼ãƒ‰æ›´æ–°ã‚„カスケードマージ)。 + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 @@ -165,47 +167,47 @@ public class Cat { - ‰i‘±ƒNƒ‰ƒX‚É‚ÍAˆêŠÑ‚µ‚½–¼‘O‚ÌŽ¯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B - ‚³‚ç‚Énull’l‚ðŽæ‚ê‚é(‚‚܂èƒvƒŠƒ~ƒeƒBƒu‚Å‚Í‚È‚¢)Œ^‚ðŽg‚Á‚½•û‚ª‚æ‚¢‚Å‚µ‚傤B + 永続クラスã«ã¯ã€ä¸€è²«ã—ãŸåå‰ã®è­˜åˆ¥å­ãƒ—ロパティを定義ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + ã•ã‚‰ã«null値をå–れる(ã¤ã¾ã‚Šãƒ—リミティブã§ã¯ãªã„)型を使ã£ãŸæ–¹ãŒã‚ˆã„ã§ã—ょã†ã€‚ - finalƒNƒ‰ƒX‚É‚µ‚È‚¢iƒIƒvƒVƒ‡ƒ“j + finalクラスã«ã—ãªã„(オプション) - Hibernate‚Ì’†S“I‚È“Á’¥‚Å‚ ‚é ƒvƒƒLƒV ‚ÍA - ‰i‘±ƒNƒ‰ƒX‚ªfinal‚Å‚È‚¢‚±‚ÆA‚Ü‚½‚̓ƒ\ƒbƒh‚ð‘S•”public‚Å錾‚µ‚Ä‚¢‚é - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‚©‚Ɉˑ¶‚µ‚Ä‚¢‚Ü‚·B + Hibernateã®ä¸­å¿ƒçš„ãªç‰¹å¾´ã§ã‚ã‚‹ プロキシ ã¯ã€ + 永続クラスãŒfinalã§ãªã„ã“ã¨ã€ã¾ãŸã¯ãƒ¡ã‚½ãƒƒãƒ‰ã‚’全部publicã§å®£è¨€ã—ã¦ã„ã‚‹ + インターフェイスãŒå®Ÿè£…ã•ã‚Œã¦ã„ã‚‹ã‹ã«ä¾å­˜ã—ã¦ã„ã¾ã™ã€‚ - Hibernate‚ŃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚Ä‚¢‚È‚¢ final ƒNƒ‰ƒX‚ð‰i‘±‰»‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚·‚ªA - ’x‰„ŠÖ˜AƒtƒFƒbƒ`‚ɑ΂µ‚ăvƒƒLƒV‚ðŽg‚¤‚±‚Æ‚Í‚Å‚«‚È‚­‚È‚è‚Ü‚·B - ‚±‚ê‚̓pƒtƒH[ƒ}ƒ“ƒXƒ`ƒ…[ƒjƒ“ƒO‚Ö‚Ì‘I‘ðŽˆ‚ð‹·‚ß‚é‚±‚Æ‚É‚È‚è‚Ü‚·B + Hibernateã§ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã—ã¦ã„ãªã„ final クラスを永続化ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã™ãŒã€ + é…延関連フェッãƒã«å¯¾ã—ã¦ãƒ—ロキシを使ã†ã“ã¨ã¯ã§ããªããªã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯ãƒ‘フォーマンスãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã¸ã®é¸æŠžè‚¢ã‚’ç‹­ã‚ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - final‚Å‚Í‚È‚¢ƒNƒ‰ƒX‚Å public final ƒƒ\ƒbƒh‚ð’è‹`‚·‚邱‚Æ‚à”ð‚¯‚é‚ׂ«‚Å‚·B - public final ƒƒ\ƒbƒh‚ðŽ‚ƒNƒ‰ƒX‚ðŽg‚¢‚½‚¯‚ê‚ÎA - lazy="false" ‚Æݒ肵‚Ä–¾Ž¦“I‚ɃvƒƒLƒV‚𖳌ø‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + finalã§ã¯ãªã„クラス㧠public final メソッドを定義ã™ã‚‹ã“ã¨ã‚‚é¿ã‘ã‚‹ã¹ãã§ã™ã€‚ + public final メソッドをæŒã¤ã‚¯ãƒ©ã‚¹ã‚’使ã„ãŸã‘ã‚Œã°ã€ + lazy="false" ã¨è¨­å®šã—ã¦æ˜Žç¤ºçš„ã«ãƒ—ロキシを無効ã«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ‰i‘±ƒtƒB[ƒ‹ƒh‚ɑ΂·‚éƒAƒNƒZƒT‚ƃ~ƒ…[ƒe[ƒ^‚ð’è‹`‚·‚éiƒIƒvƒVƒ‡ƒ“j + 永続フィールドã«å¯¾ã™ã‚‹ã‚¢ã‚¯ã‚»ã‚µã¨ãƒŸãƒ¥ãƒ¼ãƒ†ãƒ¼ã‚¿ã‚’定義ã™ã‚‹ï¼ˆã‚ªãƒ—ション) - Cat ‚Å‚Í‚·‚ׂẲi‘±ƒtƒB[ƒ‹ƒh‚ɑ΂µ‚ăAƒNƒZƒTƒƒ\ƒbƒh‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B - ‘¼‚Ì‘½‚­‚ÌORMƒc[ƒ‹‚ÍA‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ð’¼Ú‰i‘±‰»‚µ‚Ü‚·B - Ž„‚½‚¿‚̓ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒXƒL[ƒ}‚ƃNƒ‰ƒX‚Ì“à•”\‘¢‚𕪗£‚·‚é•û‚ª—Ç‚¢‚ÆM‚¶‚Ä‚¢‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚ÍAHibernate‚ÍJavaBeanƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚ð‰i‘±‰»‚µA + Cat ã§ã¯ã™ã¹ã¦ã®æ°¸ç¶šãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å¯¾ã—ã¦ã‚¢ã‚¯ã‚»ã‚µãƒ¡ã‚½ãƒƒãƒ‰ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ + ä»–ã®å¤šãã®ORMツールã¯ã€æ°¸ç¶šã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’直接永続化ã—ã¾ã™ã€‚ + ç§ãŸã¡ã¯ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ã‚¹ã‚­ãƒ¼ãƒžã¨ã‚¯ãƒ©ã‚¹ã®å†…部構造を分離ã™ã‚‹æ–¹ãŒè‰¯ã„ã¨ä¿¡ã˜ã¦ã„ã¾ã™ã€‚ + デフォルトã§ã¯ã€Hibernateã¯JavaBeanスタイルã®ãƒ—ロパティを永続化ã—〠getFoo, isFoo, setFoo - Œ`Ž®‚̃ƒ\ƒbƒh–¼‚ð”FŽ¯‚µ‚Ü‚·B - ‚µ‚©‚µ•K—v‚È‚çA“Á’è‚̃vƒƒpƒeƒB‚ɑ΂µ‚ÄA’¼Ú‚̃tƒB[ƒ‹ƒhƒAƒNƒZƒX‚ÉØ‚è‘Ö‚¦‚邱‚Ƃ͉”\‚Å‚·B + å½¢å¼ã®ãƒ¡ã‚½ãƒƒãƒ‰åã‚’èªè­˜ã—ã¾ã™ã€‚ + ã—ã‹ã—å¿…è¦ãªã‚‰ã€ç‰¹å®šã®ãƒ—ロパティã«å¯¾ã—ã¦ã€ç›´æŽ¥ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚¢ã‚¯ã‚»ã‚¹ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚ - ƒvƒƒpƒeƒB‚Ípublic‚Å錾‚·‚é•K—v‚Í ‚ ‚è‚Ü‚¹‚ñ B - Hibernate‚̓fƒtƒHƒ‹ƒgAprotected ‚à‚µ‚­‚Í private - ‚Ìget / set‚̃yƒA‚ðŽ‚ƒvƒƒpƒeƒB‚ð‰i‘±‰»‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + プロパティã¯publicã§å®£è¨€ã™ã‚‹å¿…è¦ã¯ ã‚ã‚Šã¾ã›ã‚“ 。 + Hibernateã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã€protected ã‚‚ã—ã㯠private + ã®get / setã®ãƒšã‚¢ã‚’æŒã¤ãƒ—ロパティを永続化ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -213,11 +215,11 @@ public class Cat { - Œp³‚ÌŽÀ‘• + 継承ã®å®Ÿè£… - ƒTƒuƒNƒ‰ƒX‚à1”Ô–Ú‚Æ2”Ԗڂ̃‹[ƒ‹‚ðŽç‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ƒTƒuƒNƒ‰ƒX‚̓X[ƒp[ƒNƒ‰ƒX Cat ‚©‚环•ÊŽqƒvƒƒpƒeƒB‚ðŒp³‚µ‚Ü‚·B + サブクラスも1番目ã¨2番目ã®ãƒ«ãƒ¼ãƒ«ã‚’守らãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + サブクラスã¯ã‚¹ãƒ¼ãƒ‘ークラス Cat ã‹ã‚‰è­˜åˆ¥å­ãƒ—ロパティを継承ã—ã¾ã™ã€‚ - <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ÌŽÀ‘• + <literal>equals()</literal> 㨠<literal>hashCode()</literal> ã®å®Ÿè£… - ˆÈ‰º‚ÌðŒ‚Ìê‡A - equals() ‚Æ hashCode() ƒƒ\ƒbƒh‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñA + 以下ã®æ¡ä»¶ã®å ´åˆã€ + equals() 㨠hashCode() メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“〠- ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð Set ‚É’u‚­ê‡B - i‚±‚ê‚Í‘½’l‚ÌŠÖ˜A‚ð•\Œ»‚·‚邨‚·‚·‚ß‚Ì•û–@‚Å‚·j - ‚»‚µ‚Ä“¯Žž‚É + 永続クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’ Set ã«ç½®ãå ´åˆã€‚ + (ã“ã‚Œã¯å¤šå€¤ã®é–¢é€£ã‚’表ç¾ã™ã‚‹ãŠã™ã™ã‚ã®æ–¹æ³•ã§ã™ï¼‰ + ãã—ã¦åŒæ™‚ã« - •ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒZƒbƒVƒ‡ƒ“‚ÖĒljÁ‚·‚éê‡B + 分離インスタンスをセッションã¸å†è¿½åŠ ã™ã‚‹å ´åˆã€‚ - Hibernate‚ÍA‰i‘±IDiƒf[ƒ^ƒx[ƒX‚Ìsj‚ÆA“Á’è‚̃ZƒbƒVƒ‡ƒ“ƒXƒR[ƒv“à‚É - ŒÀ’è‚Å‚·‚ªJavaID‚Æ‚ª“™‰¿‚Å‚ ‚邱‚Æ‚ð•ÛØ‚µ‚Ü‚·B - ‚Å‚·‚©‚çˆÙ‚È‚éƒZƒbƒVƒ‡ƒ“‚ÅŒŸõ‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‘g‚݇‚킹‚éê‡A - Set ‚ɈӖ¡‚Ì‚ ‚éƒZƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚½‚¹‚悤‚ÆŽv‚Á‚Ä‚¢‚é‚È‚ç - ‚·‚®‚Éequals() ‚Æ hashCode() - ‚ðŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + Hibernateã¯ã€æ°¸ç¶šID(データベースã®è¡Œï¼‰ã¨ã€ç‰¹å®šã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚¹ã‚³ãƒ¼ãƒ—内㫠+ é™å®šã§ã™ãŒJavaIDã¨ãŒç­‰ä¾¡ã§ã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã—ã¾ã™ã€‚ + ã§ã™ã‹ã‚‰ç•°ãªã‚‹ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§æ¤œç´¢ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’組ã¿åˆã‚ã›ã‚‹å ´åˆã€ + Set ã«æ„味ã®ã‚るセマンティクスをæŒãŸã›ã‚ˆã†ã¨æ€ã£ã¦ã„ã‚‹ãªã‚‰ + ã™ãã«equals() 㨠hashCode() + を実装ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - Å‚à–¾”’‚È•û–@‚ÍA—¼•û‚̃IƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚Ì’l‚Ì”äŠr‚É‚æ‚Á‚Ä equals()‚Æ - hashCode() ‚ðŽÀ‘•‚·‚é•û–@‚Å‚·B - ’l‚ª“¯‚¶‚È‚çA—¼ŽÒ‚̓f[ƒ^ƒx[ƒX‚Ì“¯‚¶s‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚ß“™‚µ‚­‚È‚è‚Ü‚·B - i—¼ŽÒ‚ª Set ‚ɒljÁ‚³‚ê‚Ä‚àA - Set ‚É‚Í1ŒÂ‚Ì—v‘f‚µ‚©‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·j - Žc”O‚È‚±‚Æ‚ÉA¶¬‚³‚ꂽŽ¯•ÊŽq‚É‚Í‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB - Hibernate‚͉i‘±‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÖŽ¯•ÊŽq‚Ì’l‚ð‘ã“ü‚·‚邾‚¯‚Å‚ ‚èA - V‚µ‚­ì¬‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚͂ǂ̂悤‚ÈŽ¯•ÊŽq‚Ì’l‚àŽ‚Á‚Ä‚¢‚Ü‚¹‚ñB - ‚³‚ç‚ÉAƒCƒ“ƒXƒ^ƒ“ƒX‚ªƒZ[ƒu‚³‚ê‚Ä‚¨‚炸AŒ»Ý Set ‚Ì’†‚É‚ ‚ê‚ÎA - ƒZ[ƒu‚·‚é‚ƃIƒuƒWƒFƒNƒg‚ÖŽ¯•ÊŽq‚Ì’l‚ð‘ã“ü‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B - ‚à‚µ equals() ‚Æ hashCode() ‚ªŽ¯•ÊŽq‚Ì’l‚ÉŠî‚¢‚Ä‚¢‚é‚È‚çA - ƒnƒbƒVƒ…ƒR[ƒh‚ª•ÏX‚³‚ê‚é‚Æ Set ‚Ì‹K–ñ‚ª”j‚ç‚ê‚Ü‚·B - ‚±‚Ì–â‘è‚ɂ‚¢‚Ä‚ÌŠ®‘S‚È‹c˜_‚ÍAHibernate‚̃EƒFƒuƒTƒCƒg‚ðŒ©‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚ÍHibernate‚Ì–â‘è‚Å‚Í‚È‚­AƒIƒuƒWƒFƒNƒg‚Ì“¯ˆê«‚Æ“™‰¿«‚ɂ‚¢‚Ä‚ÌA - ’Êí‚ÌJava‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 最も明白ãªæ–¹æ³•ã¯ã€ä¸¡æ–¹ã®ã‚ªãƒ–ジェクトã®è­˜åˆ¥å­ã®å€¤ã®æ¯”較ã«ã‚ˆã£ã¦ equals()㨠+ hashCode() を実装ã™ã‚‹æ–¹æ³•ã§ã™ã€‚ + 値ãŒåŒã˜ãªã‚‰ã€ä¸¡è€…ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®åŒã˜è¡Œã§ãªã‘ã‚Œã°ãªã‚‰ãªã„ãŸã‚ç­‰ã—ããªã‚Šã¾ã™ã€‚ + (両者㌠Set ã«è¿½åŠ ã•ã‚Œã¦ã‚‚〠+ Set ã«ã¯1個ã®è¦ç´ ã—ã‹ãªã„ã“ã¨ã«ãªã‚Šã¾ã™ï¼‰ + 残念ãªã“ã¨ã«ã€ç”Ÿæˆã•ã‚ŒãŸè­˜åˆ¥å­ã«ã¯ã“ã®ã‚¢ãƒ—ローãƒã‚’使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 + Hibernateã¯æ°¸ç¶šåŒ–ã•ã‚ŒãŸã‚ªãƒ–ジェクトã¸è­˜åˆ¥å­ã®å€¤ã‚’代入ã™ã‚‹ã ã‘ã§ã‚り〠+ æ–°ã—ã作æˆã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã©ã®ã‚ˆã†ãªè­˜åˆ¥å­ã®å€¤ã‚‚æŒã£ã¦ã„ã¾ã›ã‚“。 + ã•ã‚‰ã«ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚»ãƒ¼ãƒ–ã•ã‚Œã¦ãŠã‚‰ãšã€ç¾åœ¨ Set ã®ä¸­ã«ã‚ã‚Œã°ã€ + セーブã™ã‚‹ã¨ã‚ªãƒ–ジェクトã¸è­˜åˆ¥å­ã®å€¤ã‚’代入ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + ã‚‚ã— equals() 㨠hashCode() ãŒè­˜åˆ¥å­ã®å€¤ã«åŸºã¥ã„ã¦ã„ã‚‹ãªã‚‰ã€ + ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ãŒå¤‰æ›´ã•ã‚Œã‚‹ã¨ Set ã®è¦ç´„ãŒç ´ã‚‰ã‚Œã¾ã™ã€‚ + ã“ã®å•é¡Œã«ã¤ã„ã¦ã®å®Œå…¨ãªè­°è«–ã¯ã€Hibernateã®ã‚¦ã‚§ãƒ–サイトを見ã¦ãã ã•ã„。 + ã“ã‚Œã¯Hibernateã®å•é¡Œã§ã¯ãªãã€ã‚ªãƒ–ジェクトã®åŒä¸€æ€§ã¨ç­‰ä¾¡æ€§ã«ã¤ã„ã¦ã®ã€ + 通常ã®Javaã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ƒrƒWƒlƒXƒL[‚Ì“™‰¿« ‚ðŽg‚Á‚ÄA - equals() ‚Æ hashCode() ‚ðŽÀ‘•‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B - ƒrƒWƒlƒXƒL[‚Ì“™‰¿«‚Æ‚ÍAequals() ƒƒ\ƒbƒh‚ªAƒrƒWƒlƒXƒL[A - ‚‚܂茻ŽÀ‚Ì¢ŠE‚É‚¨‚¢‚ăCƒ“ƒXƒ^ƒ“ƒX‚ð“Á’è‚·‚éƒL[iŽ©‘R Œó•âƒL[j - ‚ðŒ`¬‚·‚éƒvƒƒpƒeƒB‚¾‚¯‚ð”äŠr‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + ビジãƒã‚¹ã‚­ãƒ¼ã®ç­‰ä¾¡æ€§ を使ã£ã¦ã€ + equals() 㨠hashCode() を実装ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + ビジãƒã‚¹ã‚­ãƒ¼ã®ç­‰ä¾¡æ€§ã¨ã¯ã€equals() メソッドãŒã€ãƒ“ジãƒã‚¹ã‚­ãƒ¼ã€ + ã¤ã¾ã‚Šç¾å®Ÿã®ä¸–ç•Œã«ãŠã„ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’特定ã™ã‚‹ã‚­ãƒ¼ï¼ˆè‡ªç„¶ 候補キー) + ã‚’å½¢æˆã™ã‚‹ãƒ—ロパティã ã‘を比較ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - ƒrƒWƒlƒXƒL[‚̓f[ƒ^ƒx[ƒX‚ÌŽåƒL[Œó•â‚قLjÀ’è‚Å‚ ‚é•K—v‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢ - i ‚ðŒ©‚Ä‚­‚¾‚³‚¢jB - XV•s‰Â‚ȃvƒƒpƒeƒB‚⃆ƒj[ƒN‚ȃvƒƒpƒeƒB‚ÍA’ÊíƒrƒWƒlƒXƒL[‚Ì‚æ‚¢Œó•â‚Å‚·B + ビジãƒã‚¹ã‚­ãƒ¼ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸»ã‚­ãƒ¼å€™è£œã»ã©å®‰å®šã§ã‚ã‚‹å¿…è¦ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ + ( を見ã¦ãã ã•ã„)。 + æ›´æ–°ä¸å¯ãªãƒ—ロパティやユニークãªãƒ—ロパティã¯ã€é€šå¸¸ãƒ“ジãƒã‚¹ã‚­ãƒ¼ã®ã‚ˆã„候補ã§ã™ã€‚ - “®“Iƒ‚ƒfƒ‹ + 動的モデル - ˆÈ‰º‚Ì‹@”\‚ÍŒ»ÝŽÀŒ±’iŠK‚É‚ ‚é‚ÆŒ©‚È‚³‚ê‚Ä‚¨‚èA - ‹ß‚¢«—ˆ•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 以下ã®æ©Ÿèƒ½ã¯ç¾åœ¨å®Ÿé¨“段階ã«ã‚ã‚‹ã¨è¦‹ãªã•ã‚Œã¦ãŠã‚Šã€ + è¿‘ã„å°†æ¥å¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‰i‘±ƒGƒ“ƒeƒBƒeƒB‚ÍA•K‚¸‚µ‚àŽÀsŽž‚ÉPOJOƒNƒ‰ƒX‚âJavaBeanƒIƒuƒWƒFƒNƒg‚Å•\Œ»‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - Hibernate‚ÍiŽÀsŽž‚É Map ‚Ì Map ‚ðŽg‚¤j“®“Iƒ‚ƒfƒ‹‚ÆA - DOM4JƒcƒŠ[‚Æ‚µ‚ẴGƒ“ƒeƒBƒeƒB‚Ì•\Œ»‚àƒTƒ|[ƒg‚µ‚Ü‚·B - ‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¤‚Ɖi‘±ƒNƒ‰ƒX‚ð‘‚©‚¸Aƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚¾‚¯‚ð‘‚­‚±‚Æ‚É‚È‚è‚Ü‚·B + 永続エンティティã¯ã€å¿…ãšã—も実行時ã«POJOクラスやJavaBeanオブジェクトã§è¡¨ç¾ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + Hibernateã¯ï¼ˆå®Ÿè¡Œæ™‚ã« Map ã® Map を使ã†ï¼‰å‹•çš„モデルã¨ã€ + DOM4Jツリーã¨ã—ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®è¡¨ç¾ã‚‚サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ + ã“ã®ã‚¢ãƒ—ローãƒã‚’使ã†ã¨æ°¸ç¶šã‚¯ãƒ©ã‚¹ã‚’書ã‹ãšã€ãƒžãƒƒãƒ”ングファイルã ã‘を書ãã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - ƒfƒtƒHƒ‹ƒg‚Å‚ÍAHibernate‚Í’Êí‚ÌPOJOƒ‚[ƒh‚Å“®ì‚µ‚Ü‚·B - default_entity_mode Ý’èƒIƒvƒVƒ‡ƒ“‚ðŽg‚Á‚ÄA - “Á’è‚Ì SessionFactory ‚ɑ΂·‚éƒfƒtƒHƒ‹ƒg‚̃Gƒ“ƒeƒBƒeƒB•\Œ»ƒ‚[ƒh‚ðÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚· - i ‚ðŒ©‚Ä‚­‚¾‚³‚¢jB + デフォルトã§ã¯ã€Hibernateã¯é€šå¸¸ã®POJOモードã§å‹•ä½œã—ã¾ã™ã€‚ + default_entity_mode 設定オプションを使ã£ã¦ã€ + 特定㮠SessionFactory ã«å¯¾ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£è¡¨ç¾ãƒ¢ãƒ¼ãƒ‰ã‚’設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ + ( を見ã¦ãã ã•ã„)。 - ˆÈ‰º‚Ì—á‚Å‚Í Map ‚ðŽg‚Á‚½•\Œ»‚ðЉ‚Ü‚·B - ‚Ü‚¸ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÅAƒNƒ‰ƒX–¼‚Ì‘ã‚í‚è‚Éi‚Ü‚½‚Í‚»‚ê‚ɉÁ‚¦‚Äj - entity-name ‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñF + 以下ã®ä¾‹ã§ã¯ Map を使ã£ãŸè¡¨ç¾ã‚’紹介ã—ã¾ã™ã€‚ + ã¾ãšãƒžãƒƒãƒ”ングファイルã§ã€ã‚¯ãƒ©ã‚¹åã®ä»£ã‚ã‚Šã«ï¼ˆã¾ãŸã¯ãã‚Œã«åŠ ãˆã¦ï¼‰ + entity-name を定義ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“: @@ -386,14 +388,14 @@ public class DomesticCat extends Cat { ]]> - ŠÖ˜A‚ªƒ^[ƒQƒbƒg‚̃Nƒ‰ƒX–¼‚ðŽg‚Á‚Ä’è‹`‚µ‚Ä‚¢‚½‚Æ‚µ‚Ä‚àA - ŠÖ˜A‚̃^[ƒQƒbƒgŒ^‚àPOJO‚Å‚Í‚È‚­“®“I‚ȃGƒ“ƒeƒBƒeƒB‚Å‚à\‚í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 関連ãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ã‚¯ãƒ©ã‚¹åを使ã£ã¦å®šç¾©ã—ã¦ã„ãŸã¨ã—ã¦ã‚‚〠+ 関連ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆåž‹ã‚‚POJOã§ã¯ãªãå‹•çš„ãªã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã‚‚構ã‚ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - SessionFactory ‚ɑ΂µ‚ăfƒtƒHƒ‹ƒg‚̃Gƒ“ƒeƒBƒeƒBƒ‚[ƒh‚ð - dynamic-map ‚Éݒ肵‚½ŒãA - ŽÀsŽž‚É Map ‚Ì Map ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·F + SessionFactory ã«å¯¾ã—ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ¢ãƒ¼ãƒ‰ã‚’ + dynamic-map ã«è¨­å®šã—ãŸå¾Œã€ + 実行時㫠Map ã® Map を使ã†ã“ã¨ãŒã§ãã¾ã™ï¼š - “®“I‚ȃ}ƒbƒsƒ“ƒO‚Ì—˜“_‚ÍAƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ÌŽÀ‘•‚ð•K—v‚Æ‚µ‚È‚¢‚½‚ßA - ƒvƒƒgƒ^ƒCƒsƒ“ƒO‚É—v‚·‚éƒ^[ƒ“ƒAƒ‰ƒEƒ“ƒhƒ^ƒCƒ€‚ª‘‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ‚µ‚©‚µƒRƒ“ƒpƒCƒ‹Žž‚ÌŒ^ƒ`ƒFƒbƒN‚ª‚È‚¢‚Ì‚ÅAŽÀsŽž‚É”ñí‚É‘½‚­‚Ì—áŠOˆ—‚ðˆµ‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Å‚µ‚傤B - Hibernateƒ}ƒbƒsƒ“ƒO‚Ì‚¨‚©‚°‚ÅAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Í—eˆÕ‚ɳ‹K‰»‚Å‚«AŒ’‘S‚É‚È‚èA - Œã‚Å“K؂ȃhƒƒCƒ“ƒ‚ƒfƒ‹‚ÌŽÀ‘•‚ð’ljÁ‚·‚邱‚Æ‚ª‰Â”\‚É‚È‚è‚Ü‚·B + å‹•çš„ãªãƒžãƒƒãƒ”ングã®åˆ©ç‚¹ã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã®å®Ÿè£…ã‚’å¿…è¦ã¨ã—ãªã„ãŸã‚〠+ プロトタイピングã«è¦ã™ã‚‹ã‚¿ãƒ¼ãƒ³ã‚¢ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¿ã‚¤ãƒ ãŒæ—©ã„ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + ã—ã‹ã—コンパイル時ã®åž‹ãƒã‚§ãƒƒã‚¯ãŒãªã„ã®ã§ã€å®Ÿè¡Œæ™‚ã«éžå¸¸ã«å¤šãã®ä¾‹å¤–処ç†ã‚’扱ã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„ã§ã—ょã†ã€‚ + Hibernateマッピングã®ãŠã‹ã’ã§ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã¯å®¹æ˜“ã«æ­£è¦åŒ–ã§ãã€å¥å…¨ã«ãªã‚Šã€ + 後ã§é©åˆ‡ãªãƒ‰ãƒ¡ã‚¤ãƒ³ãƒ¢ãƒ‡ãƒ«ã®å®Ÿè£…を追加ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒB•\Œ»ƒ‚[ƒh‚Í Session ‚²‚Æ‚ÉÝ’è‚·‚邱‚Æ‚à‰Â”\‚Å‚·B + エンティティ表ç¾ãƒ¢ãƒ¼ãƒ‰ã¯ Session ã”ã¨ã«è¨­å®šã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ - EntityMode ‚ðŽg‚Á‚½ getSession() - ‚̌ĂÑo‚µ‚Í SessionFactory ‚Å‚Í‚È‚­ Session - API‚É‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚Ì•û–@‚Å‚ÍAV‚µ‚¢ Session ‚ÍAƒx[ƒX‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“A - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“A‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgî•ñ‚ð‹¤—L‚µ‚Ü‚·B - ‚±‚ê‚Í2”Ô–Ú‚Ì Session ‚Å‚Í flush() ‚Æ close() - ‚ðŒÄ‚Ô•K—v‚ª‚È‚¢‚Æ‚¢‚¤‚±‚ÆA‚»‚Ì‚½‚߃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ƃRƒlƒNƒVƒ‡ƒ“‚ÌŠÇ—‚ð - 1”Ô–Ú‚Ìì‹Æ’PˆÊ(Unit of Work)‚É”C‚¹‚邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + EntityMode を使ã£ãŸ getSession() + ã®å‘¼ã³å‡ºã—㯠SessionFactory ã§ã¯ãªã Session + APIã«ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ãã®æ–¹æ³•ã§ã¯ã€æ–°ã—ã„ Session ã¯ã€ãƒ™ãƒ¼ã‚¹ã¨ãªã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã€ + トランザクションã€ãã®ä»–ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆæƒ…報を共有ã—ã¾ã™ã€‚ + ã“ã‚Œã¯2番目㮠Session ã§ã¯ flush() 㨠close() + を呼ã¶å¿…è¦ãŒãªã„ã¨ã„ã†ã“ã¨ã€ãã®ãŸã‚トランザクションã¨ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã®ç®¡ç†ã‚’ + 1番目ã®ä½œæ¥­å˜ä½(Unit of Work)ã«ä»»ã›ã‚‹ã“ã¨ãŒã§ãã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - XML•\Œ»‚Ì”\—͂ɂ‚¢‚Ä‚Ì‚³‚ç‚È‚éî•ñ‚Í ‚ÅŒ©‚‚©‚è‚Ü‚·B + XML表ç¾ã®èƒ½åŠ›ã«ã¤ã„ã¦ã®ã•ã‚‰ãªã‚‹æƒ…報㯠ã§è¦‹ã¤ã‹ã‚Šã¾ã™ã€‚ @@ -465,30 +467,30 @@ dynamicSession.close() Tuplizer - org.hibernate.tuple.Tuplizer ‚Æ‚»‚̃TƒuƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÍA - •\Œ»‚Ì org.hibernate.EntityMode ‚ð—˜—p‚µ‚ÄA - ƒf[ƒ^’f•Ð‚Ì‚ ‚é•\Œ»‚ÌŠÇ—‚ÉÓ”C‚ðŽ‚¿‚Ü‚·B - —^‚¦‚ç‚ꂽƒf[ƒ^’f•Ð‚ðƒf[ƒ^\‘¢‚Æ‚µ‚Äl‚¦‚é‚È‚çATuplizer‚Í‚»‚̂悤‚ȃf[ƒ^\‘¢‚ð - ‚ǂ̂悤‚É쬂·‚é‚©‚ð’m‚èA‚»‚̂悤‚ȃf[ƒ^\‘¢‚©‚ç‚ǂ̂悤‚É’l‚ð’Šo‚µA - ’“ü‚·‚é‚©‚ð’m‚Á‚Ä‚¢‚Ü‚·B - —Ⴆ‚ÎPOJOƒGƒ“ƒeƒBƒeƒBƒ‚[ƒh‚Å‚ÍA‘Ήž‚·‚éTuplizer‚̓Rƒ“ƒXƒgƒ‰ƒNƒ^‚ð’Ê‚µ‚ÄA - POJO‚ð‚ǂ̂悤‚É쬂·‚é‚©A’è‹`‚³‚ꂽƒvƒƒpƒeƒBƒAƒNƒZƒT‚ðŽg‚¢A - POJOƒvƒƒpƒeƒB‚ɂǂ̂悤‚ɃAƒNƒZƒX‚·‚é‚©‚ð’m‚è‚Ü‚·B - Tuplizer‚É‚Í“ñ‚‚̃nƒCƒŒƒxƒ‹‚ÌŒ^‚ª‚ ‚è‚Ü‚·B - ‚»‚ê‚ç‚ÍAorg.hibernate.tuple.EntityTuplizer ‚Æ - org.hibernate.tuple.ComponentTuplizer ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å•\Œ»‚³‚ê‚Ü‚·B - EntityTuplizer ‚Íã‚Åq‚ׂ½‚悤‚ȃGƒ“ƒeƒBƒeƒB‚ÉŠÖ‚·‚éŒ_–ñ‚ÌŠÇ—‚ÉÓ”C‚ðŽ‚¿‚Ü‚·B - ˆê•ûAComponentTuplizer ‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚ÉŠÖ‚·‚éŒ_–ñ‚ÌŠÇ—‚ÉÓ”C‚ðŽ‚¿‚Ü‚·B + org.hibernate.tuple.Tuplizer ã¨ãã®ã‚µãƒ–インターフェイスã¯ã€ + 表ç¾ã® org.hibernate.EntityMode を利用ã—ã¦ã€ + データ断片ã®ã‚る表ç¾ã®ç®¡ç†ã«è²¬ä»»ã‚’æŒã¡ã¾ã™ã€‚ + 与ãˆã‚‰ã‚ŒãŸãƒ‡ãƒ¼ã‚¿æ–­ç‰‡ã‚’データ構造ã¨ã—ã¦è€ƒãˆã‚‹ãªã‚‰ã€Tuplizerã¯ãã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’ + ã©ã®ã‚ˆã†ã«ä½œæˆã™ã‚‹ã‹ã‚’知りã€ãã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‹ã‚‰ã©ã®ã‚ˆã†ã«å€¤ã‚’抽出ã—〠+ 注入ã™ã‚‹ã‹ã‚’知ã£ã¦ã„ã¾ã™ã€‚ + 例ãˆã°POJOエンティティモードã§ã¯ã€å¯¾å¿œã™ã‚‹Tuplizerã¯ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’通ã—ã¦ã€ + POJOã‚’ã©ã®ã‚ˆã†ã«ä½œæˆã™ã‚‹ã‹ã€å®šç¾©ã•ã‚ŒãŸãƒ—ロパティアクセサを使ã„〠+ POJOプロパティã«ã©ã®ã‚ˆã†ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‹ã‚’知りã¾ã™ã€‚ + Tuplizerã«ã¯äºŒã¤ã®ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã®åž‹ãŒã‚ã‚Šã¾ã™ã€‚ + ãれらã¯ã€org.hibernate.tuple.EntityTuplizer 㨠+ org.hibernate.tuple.ComponentTuplizer インターフェイスã§è¡¨ç¾ã•ã‚Œã¾ã™ã€‚ + EntityTuplizer ã¯ä¸Šã§è¿°ã¹ãŸã‚ˆã†ãªã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«é–¢ã™ã‚‹å¥‘ç´„ã®ç®¡ç†ã«è²¬ä»»ã‚’æŒã¡ã¾ã™ã€‚ + 一方ã€ComponentTuplizer ã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«é–¢ã™ã‚‹å¥‘ç´„ã®ç®¡ç†ã«è²¬ä»»ã‚’æŒã¡ã¾ã™ã€‚ - ƒ†[ƒU‚Í“ÆŽ©‚ÌTuplizer‚É·‚µ‘Ö‚¦‚邱‚Æ‚à‰Â”\‚Å‚·B - ‚¨‚»‚ç‚­dynamic-map entity-mode‚ÌÛ‚É java.util.HashMap ‚ðŽg‚¤‚Ì‚Å‚Í‚È‚­A - java.util.Map ‚ÌŽÀ‘•‚ª•K—v‚Å‚µ‚傤B - ‚à‚µ‚­‚ÍA‚¨‚»‚ç‚­ƒfƒtƒHƒ‹ƒg‚Ì‚à‚Ì‚Å‚Í‚È‚­A•Ê‚̃vƒƒLƒV¶¬í—ª‚Ì’è‹`‚ª•K—v‚Å‚µ‚傤B - —¼ŽÒ‚Æ‚àAƒJƒXƒ^ƒ€‚ÌTuplizerŽÀ‘•‚ð’è‹`‚·‚邱‚Æ‚Å’B¬‚³‚ê‚Ü‚·B - Tuplizer‚Ì’è‹`‚ÍAŠÇ—‚µ‚悤‚Æ‚·‚éƒGƒ“ƒeƒBƒeƒB‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚̃}ƒbƒsƒ“ƒO‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ü‚·B - ŒÚ‹qƒGƒ“ƒeƒBƒeƒB‚Ì—á‚É–ß‚é‚ÆF + ユーザã¯ç‹¬è‡ªã®Tuplizerã«å·®ã—替ãˆã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + ãŠãらãdynamic-map entity-modeã®éš›ã« java.util.HashMap を使ã†ã®ã§ã¯ãªã〠+ java.util.Map ã®å®Ÿè£…ãŒå¿…è¦ã§ã—ょã†ã€‚ + ã‚‚ã—ãã¯ã€ãŠãらãデフォルトã®ã‚‚ã®ã§ã¯ãªãã€åˆ¥ã®ãƒ—ロキシ生æˆæˆ¦ç•¥ã®å®šç¾©ãŒå¿…è¦ã§ã—ょã†ã€‚ + 両者ã¨ã‚‚ã€ã‚«ã‚¹ã‚¿ãƒ ã®Tuplizer実装を定義ã™ã‚‹ã“ã¨ã§é”æˆã•ã‚Œã¾ã™ã€‚ + Tuplizerã®å®šç¾©ã¯ã€ç®¡ç†ã—よã†ã¨ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚„コンãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒžãƒƒãƒ”ングã«çµã³ä»˜ã‘られã¾ã™ã€‚ + 顧客エンティティã®ä¾‹ã«æˆ»ã‚‹ã¨ï¼š @@ -531,7 +533,7 @@ public class CustomMapTuplizerImpl - TODO: ƒvƒƒpƒeƒB‚ƃvƒƒLƒVƒpƒbƒP[ƒW‚̃†[ƒUŠg’£ƒtƒŒ[ƒ€ƒ[ƒN‚𕶑‰»‚·‚邱‚Æ + TODO: プロパティã¨ãƒ—ロキシパッケージã®ãƒ¦ãƒ¼ã‚¶æ‹¡å¼µãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã‚’文書化ã™ã‚‹ã“㨠diff --git a/documentation/manual/ja-JP/src/main/docbook/content/preface.xml b/documentation/manual/ja-JP/src/main/docbook/content/preface.xml index bb773fc6df..317cf8a28d 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/preface.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/preface.xml @@ -1,145 +1,144 @@ - - + - ‘O‘‚« + å‰æ›¸ã - ¡“ú‚ÌŠé‹ÆŠÂ‹«‚É‚¨‚¢‚ÄAƒIƒuƒWƒFƒNƒgŽwŒüƒ\ƒtƒgƒEƒFƒA‚ƃŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚ÉŠÖ‚í‚éì‹Æ‚Í - ”ÏŽG‚Å–c‘å‚ÈŽžŠÔ‚ð•K—v‚Æ‚µ‚Ü‚·B - Hibernate‚ÍJavaŠÂ‹«‚̃IƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOƒc[ƒ‹‚Å‚·B - ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOiORMj‚Æ‚ÍA - ƒIƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚©‚çSQLƒx[ƒXƒXƒL[ƒ}‚̃ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒ‚ƒfƒ‹‚Ö‚ÆA - ƒf[ƒ^•\Œ»‚ðƒ}ƒbƒsƒ“ƒO‚·‚éi‘Ήž•t‚¯‚éj‹Zp‚Ì‚±‚Æ‚Å‚·B + 今日ã®ä¼æ¥­ç’°å¢ƒã«ãŠã„ã¦ã€ã‚ªãƒ–ジェクト指å‘ソフトウェアã¨ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«é–¢ã‚る作業㯠+ 煩雑ã§è†¨å¤§ãªæ™‚é–“ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚ + Hibernateã¯Java環境ã®ã‚ªãƒ–ジェクト/リレーショナルマッピングツールã§ã™ã€‚ + オブジェクト/リレーショナルマッピング(ORM)ã¨ã¯ã€ + オブジェクトモデルã‹ã‚‰SQLベーススキーマã®ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ‡ãƒ¼ã‚¿ãƒ¢ãƒ‡ãƒ«ã¸ã¨ã€ + データ表ç¾ã‚’マッピングã™ã‚‹ï¼ˆå¯¾å¿œä»˜ã‘る)技術ã®ã“ã¨ã§ã™ã€‚ - Hibernate‚ÍJavaƒNƒ‰ƒX‚©‚çƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚Öi‚»‚µ‚ÄJavaƒf[ƒ^Œ^‚©‚çSQLƒf[ƒ^Œ^‚Öj - ‚̃}ƒbƒsƒ“ƒO‚ðˆ—‚·‚邾‚¯‚Å‚Í‚È‚­Aƒf[ƒ^‚̃NƒGƒŠ‚Æ•œŒ³‚ÌŽd‘g‚Ý‚à’ñ‹Ÿ‚µ‚Ü‚·B - ‚±‚Ì‚¨‚©‚°‚ÅSQL‚ÆJDBC‚ðŽg‚Á‚½Žèì‹Æ‚ł̃f[ƒ^ˆ—‚É”ï‚₳‚ê‚Ä‚¢‚½ŠJ”­ŽžŠÔ‚ð‘å•‚É팸‚Å‚«‚Ü‚·B + Hibernateã¯Javaクラスã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã¸ï¼ˆãã—ã¦Javaデータ型ã‹ã‚‰SQLデータ型ã¸ï¼‰ + ã®ãƒžãƒƒãƒ”ングを処ç†ã™ã‚‹ã ã‘ã§ã¯ãªãã€ãƒ‡ãƒ¼ã‚¿ã®ã‚¯ã‚¨ãƒªã¨å¾©å…ƒã®ä»•çµ„ã¿ã‚‚æä¾›ã—ã¾ã™ã€‚ + ã“ã®ãŠã‹ã’ã§SQLã¨JDBCを使ã£ãŸæ‰‹ä½œæ¥­ã§ã®ãƒ‡ãƒ¼ã‚¿å‡¦ç†ã«è²»ã‚„ã•ã‚Œã¦ã„ãŸé–‹ç™ºæ™‚間を大幅ã«å‰Šæ¸›ã§ãã¾ã™ã€‚ - Hibernate‚ÌÅI–Ú•W‚ÍAƒf[ƒ^‚̉i‘±‰»‚ÉŠÖ‚í‚éˆê”Ê“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOì‹Æ‚Ì95“‚©‚çŠJ”­ŽÒ‚ð‰ð•ú‚·‚邱‚Æ‚Å‚·B - Hibernate‚̓rƒWƒlƒXƒƒWƒbƒN‚ÌŽÀ‘•‚ɃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤ - ƒf[ƒ^’†SƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚ẴxƒXƒgƒ\ƒŠƒ…[ƒVƒ‡ƒ“‚Å‚ ‚é‚É—¯‚Ü‚è‚Ü‚¹‚ñB - ƒIƒuƒWƒFƒNƒgŽwŒüƒhƒƒCƒ“ƒ‚ƒfƒ‹‚ÆJavaƒx[ƒX‚Ì’†ŠÔ‘w‚ł̃rƒWƒlƒXƒƒWƒbƒN‚ɑ΂µ‚ÄÅ‚à–ð‚É—§‚¿‚Ü‚·B - ‚µ‚©‚µHibernate‚̓xƒ“ƒ_ŒÅ—L‚ÌSQLƒR[ƒh‚ð팸‚Ü‚½‚̓JƒvƒZƒ‹‰»‚µ‚½‚èA - •\Œ`Ž®‚©‚çƒIƒuƒWƒFƒNƒg‚̃Oƒ‰ƒt‚ւƃŠƒUƒ‹ƒgƒZƒbƒg‚ð•ÏŠ·‚·‚é‚È‚Ç‚ÌA - ˆê”Ê“I‚ȃ^ƒXƒN‚É‚à–𗧂‚łµ‚傤B + Hibernateã®æœ€çµ‚目標ã¯ã€ãƒ‡ãƒ¼ã‚¿ã®æ°¸ç¶šåŒ–ã«é–¢ã‚る一般的ãªãƒ—ログラミング作業ã®95ï¼…ã‹ã‚‰é–‹ç™ºè€…を解放ã™ã‚‹ã“ã¨ã§ã™ã€‚ + Hibernateã¯ãƒ“ジãƒã‚¹ãƒ­ã‚¸ãƒƒã‚¯ã®å®Ÿè£…ã«ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャを使ㆠ+ データ中心アプリケーションã«å¯¾ã—ã¦ã®ãƒ™ã‚¹ãƒˆã‚½ãƒªãƒ¥ãƒ¼ã‚·ãƒ§ãƒ³ã§ã‚ã‚‹ã«ç•™ã¾ã‚Šã¾ã›ã‚“。 + オブジェクト指å‘ドメインモデルã¨Javaベースã®ä¸­é–“層ã§ã®ãƒ“ジãƒã‚¹ãƒ­ã‚¸ãƒƒã‚¯ã«å¯¾ã—ã¦æœ€ã‚‚å½¹ã«ç«‹ã¡ã¾ã™ã€‚ + ã—ã‹ã—Hibernateã¯ãƒ™ãƒ³ãƒ€å›ºæœ‰ã®SQLコードを削減ã¾ãŸã¯ã‚«ãƒ—セル化ã—ãŸã‚Šã€ + 表形å¼ã‹ã‚‰ã‚ªãƒ–ジェクトã®ã‚°ãƒ©ãƒ•ã¸ã¨ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’変æ›ã™ã‚‹ãªã©ã®ã€ + 一般的ãªã‚¿ã‚¹ã‚¯ã«ã‚‚役立ã¤ã§ã—ょã†ã€‚ - Hibernate‚âƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOA - ‚³‚ç‚É‚ÍJava‚ª‰‚ß‚Ä‚Ì•û‚ÍAˆÈ‰º‚̃Xƒeƒbƒv‚É]‚Á‚Ä‚­‚¾‚³‚¢F + Hibernateやオブジェクト/リレーショナルマッピング〠+ ã•ã‚‰ã«ã¯JavaãŒåˆã‚ã¦ã®æ–¹ã¯ã€ä»¥ä¸‹ã®ã‚¹ãƒ†ãƒƒãƒ—ã«å¾“ã£ã¦ãã ã•ã„: - ‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢B - ’iŠK“I‚ɉðà‚µ‚Ä‚¢‚«‚Ü‚·B - ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃\[ƒXƒR[ƒh‚̓fƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì - doc/reference/tutorial ƒfƒBƒŒƒNƒgƒŠ‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + を読んã§ãã ã•ã„。 + 段階的ã«è§£èª¬ã—ã¦ã„ãã¾ã™ã€‚ + ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューション㮠+ doc/reference/tutorial ディレクトリã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ - ‚ð“Ç‚ñ‚ÅAHibernate‚ª—˜—p‰Â”\‚Ȋ‹«‚ð—‰ð‚µ‚Ä‚­‚¾‚³‚¢B + を読んã§ã€HibernateãŒåˆ©ç”¨å¯èƒ½ãªç’°å¢ƒã‚’ç†è§£ã—ã¦ãã ã•ã„。 - HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì eg/ ƒfƒBƒŒƒNƒgƒŠ‚ðŒ©‚Ä‚­‚¾‚³‚¢B - ŠÈ’P‚ȃXƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚ ‚è‚Ü‚·B - JDBCƒhƒ‰ƒCƒo‚ð lib/ ƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚ÄA - Ž©•ª‚̃f[ƒ^ƒx[ƒX‚ɇ‚¤³‚µ‚¢’l‚ðŽw’è‚·‚é‚悤‚É etc/hibernate.properties - ‚ð•ÒW‚µ‚Ä‚­‚¾‚³‚¢B - ƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“ƒfƒBƒŒƒNƒgƒŠ‚©‚çAƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚Å - ant eg ‚ƃ^ƒCƒv‚µ‚Ä‚­‚¾‚³‚¢iAnt‚ðŽg‚¢‚Ü‚·jB - ‚Ü‚½WindowsŠÂ‹«‚Å‚Í build eg ‚ƃ^ƒCƒv‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateディストリビューション㮠eg/ ディレクトリを見ã¦ãã ã•ã„。 + ç°¡å˜ãªã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ¼ãƒ³ã®ã‚¢ãƒ—リケーションãŒã‚ã‚Šã¾ã™ã€‚ + JDBCドライãƒã‚’ lib/ ディレクトリã«ã‚³ãƒ”ーã—ã¦ã€ + 自分ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«åˆã†æ­£ã—ã„値を指定ã™ã‚‹ã‚ˆã†ã« etc/hibernate.properties + を編集ã—ã¦ãã ã•ã„。 + ディストリビューションディレクトリã‹ã‚‰ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ—ロンプト㧠+ ant eg ã¨ã‚¿ã‚¤ãƒ—ã—ã¦ãã ã•ã„(Antを使ã„ã¾ã™ï¼‰ã€‚ + ã¾ãŸWindows環境ã§ã¯ build eg ã¨ã‚¿ã‚¤ãƒ—ã—ã¦ãã ã•ã„。 - ‚±‚̃Šƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚ð‘æˆê‚Ìî•ñŒ¹‚Æ‚µ‚Ä—˜—p‚µ‚Ä‚­‚¾‚³‚¢B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ÝŒv‚ɂ‚¢‚Ä‚Ì‚³‚ç‚È‚éî•ñ‚â’iŠK“I‚ȃ`ƒ…[ƒgƒŠƒAƒ‹‚ð’T‚µ‚Ä‚¢‚é‚È‚çA - Java Persistence with Hibernateihttp://www.manning.com/bauer2j - ‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B - ‚Ü‚½http://caveatemptor.hibernate.org‚©‚ç - Java Persistence with Hibernate‚Ì—á‘è‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B + ã“ã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’第一ã®æƒ…å ±æºã¨ã—ã¦åˆ©ç”¨ã—ã¦ãã ã•ã„。 + アプリケーション設計ã«ã¤ã„ã¦ã®ã•ã‚‰ãªã‚‹æƒ…報や段階的ãªãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’探ã—ã¦ã„ã‚‹ãªã‚‰ã€ + Java Persistence with Hibernate(http://www.manning.com/bauer2) + ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚ + ã¾ãŸhttp://caveatemptor.hibernate.orgã‹ã‚‰ + Java Persistence with Hibernateã®ä¾‹é¡Œã®ã‚¢ãƒ—リケーションをダウンロードã§ãã¾ã™ã€‚ - FAQ‚ÍHibernateƒEƒFƒuƒTƒCƒg‚É‚ ‚è‚Ü‚·B + FAQã¯Hibernateウェブサイトã«ã‚ã‚Šã¾ã™ã€‚ - ƒT[ƒhƒp[ƒeƒB‚̃fƒ‚A—áAƒ`ƒ…[ƒgƒŠƒAƒ‹‚ÍHibernateƒEƒFƒuƒTƒCƒg‚ɃŠƒ“ƒN‚ª‚ ‚è‚Ü‚·B + サードパーティã®ãƒ‡ãƒ¢ã€ä¾‹ã€ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯Hibernateウェブサイトã«ãƒªãƒ³ã‚¯ãŒã‚ã‚Šã¾ã™ã€‚ - HibernateƒEƒFƒuƒTƒCƒg‚̃Rƒ~ƒ…ƒjƒeƒBƒGƒŠƒA‚ÍAƒfƒUƒCƒ“ƒpƒ^[ƒ“‚₳‚Ü‚´‚Ü‚È“‡ƒ\ƒŠƒ…[ƒVƒ‡ƒ“ - iTomcat, JBoss AS, Struts, EJB, “™j‚ɂ‚¢‚Ä‚Ì‚æ‚¢î•ñŒ¹‚Å‚·B + Hibernateウェブサイトã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã‚¨ãƒªã‚¢ã¯ã€ãƒ‡ã‚¶ã‚¤ãƒ³ãƒ‘ターンやã•ã¾ã–ã¾ãªçµ±åˆã‚½ãƒªãƒ¥ãƒ¼ã‚·ãƒ§ãƒ³ + (Tomcat, JBoss AS, Struts, EJB, 等)ã«ã¤ã„ã¦ã®ã‚ˆã„情報æºã§ã™ã€‚ - Ž¿–₪‚ ‚ê‚ÎHibernateƒEƒFƒuƒTƒCƒg‚̃†[ƒUƒtƒH[ƒ‰ƒ€‚ðŠˆ—p‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½ƒoƒOƒŒƒ|[ƒg‚ƃtƒB[ƒ`ƒƒƒŠƒNƒGƒXƒg‚Ì‚½‚ßJIRA‰Û‘è’ÇÕƒVƒXƒeƒ€‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B - Hibernate‚ÌŠJ”­‚É‹»–¡‚ª‚ ‚ê‚ÎAŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ÉŽQ‰Á‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚̃hƒLƒ…ƒƒ“ƒg‚ð‚ ‚È‚½‚Ì‘‚ÌŒ¾—t‚É–|–󂵂½‚¢ê‡‚ÍA - ŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ÅŽ„‚½‚¿‚ɃRƒ“ƒ^ƒNƒg‚ðŽæ‚Á‚Ä‚­‚¾‚³‚¢B + 質å•ãŒã‚ã‚Œã°Hibernateウェブサイトã®ãƒ¦ãƒ¼ã‚¶ãƒ•ã‚©ãƒ¼ãƒ©ãƒ ã‚’活用ã—ã¦ãã ã•ã„。 + ã¾ãŸãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¨ãƒ•ã‚£ãƒ¼ãƒãƒ£ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ãŸã‚JIRA課題追跡システムを用æ„ã—ã¦ã„ã¾ã™ã€‚ + Hibernateã®é–‹ç™ºã«èˆˆå‘³ãŒã‚ã‚Œã°ã€é–‹ç™ºè€…メーリングリストã«å‚加ã—ã¦ãã ã•ã„。 + ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’ã‚ãªãŸã®å›½ã®è¨€è‘‰ã«ç¿»è¨³ã—ãŸã„å ´åˆã¯ã€ + 開発者メーリングリストã§ç§ãŸã¡ã«ã‚³ãƒ³ã‚¿ã‚¯ãƒˆã‚’å–ã£ã¦ãã ã•ã„。 - ¤—pŠJ”­‚̃Tƒ|[ƒgA»•i‚̃Tƒ|[ƒgAHibernate‚̃gƒŒ[ƒjƒ“ƒO‚ÍJBoss Inc.‚ª’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚· - ihttp://www.hibernate.org/SupportTraining/‚ðŒ©‚Ä‚­‚¾‚³‚¢jB - Hibernate‚ÍProfessional Open SourceƒvƒƒWƒFƒNƒgA - ‚»‚µ‚ÄJBoss Enterprise Middleware SystemiJEMSjƒvƒƒ_ƒNƒgƒXƒC[ƒg‚̃NƒŠƒeƒBƒJƒ‹ƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B + 商用開発ã®ã‚µãƒãƒ¼ãƒˆã€è£½å“ã®ã‚µãƒãƒ¼ãƒˆã€Hibernateã®ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã¯JBoss Inc.ãŒæä¾›ã—ã¦ã„ã¾ã™ + (http://www.hibernate.org/SupportTraining/を見ã¦ãã ã•ã„)。 + Hibernateã¯Professional Open Sourceプロジェクト〠+ ãã—ã¦JBoss Enterprise Middleware System(JEMS)プロダクトスイートã®ã‚¯ãƒªãƒ†ã‚£ã‚«ãƒ«ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã§ã™ã€‚ - \ No newline at end of file + diff --git a/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml b/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml index 739498dc06..b9d72aefd2 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml @@ -1,18 +1,20 @@ - + + + - CriteriaƒNƒGƒŠ + Criteriaクエリ - Hibernate‚É‚ÍA’¼Š´“I‚ÅŠg’£‰Â”\‚ÈcriteriaƒNƒGƒŠAPI‚ª—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B + Hibernateã«ã¯ã€ç›´æ„Ÿçš„ã§æ‹¡å¼µå¯èƒ½ãªcriteriaクエリAPIãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚ - <literal>Criteria</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚Ìì¬ + <literal>Criteria</literal> インスタンスã®ä½œæˆ org.hibernate.Criteria - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í“Á’è‚̉i‘±«ƒNƒ‰ƒX‚ɑ΂·‚éƒNƒGƒŠ‚ð•\Œ»‚µ‚Ü‚·B - Session ‚Í Criteria ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠ‚Å‚·B + インターフェイスã¯ç‰¹å®šã®æ°¸ç¶šæ€§ã‚¯ãƒ©ã‚¹ã«å¯¾ã™ã‚‹ã‚¯ã‚¨ãƒªã‚’表ç¾ã—ã¾ã™ã€‚ + Session 㯠Criteria インスタンスã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã§ã™ã€‚ - ƒŠƒUƒ‹ƒgƒZƒbƒg‚Ìiž‚Ý + リザルトセットã®çµžè¾¼ã¿ - org.hibernate.criterion.Criterion ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA - ŒÂ•Ê‚̃NƒGƒŠƒNƒ‰ƒCƒeƒŠƒIƒ“i–â‚¢‡‚킹‚Ì”»’èŠî€j‚ð•\‚µ‚Ü‚·B + org.hibernate.criterion.Criterion インターフェイスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + 個別ã®ã‚¯ã‚¨ãƒªã‚¯ãƒ©ã‚¤ãƒ†ãƒªã‚ªãƒ³ï¼ˆå•ã„åˆã‚ã›ã®åˆ¤å®šåŸºæº–)を表ã—ã¾ã™ã€‚ org.hibernate.criterion.Restrictions - ƒNƒ‰ƒX‚ÍA‚ ‚é‘g‚Ýž‚Ý‚Ì Criterion - Œ^‚ðŽæ“¾‚·‚邽‚߂̃tƒ@ƒNƒgƒŠƒƒ\ƒbƒh‚ðŽ‚Á‚Ä‚¢‚Ü‚·B + クラスã¯ã€ã‚る組ã¿è¾¼ã¿ã® Criterion + åž‹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ .list();]]> - RestrictioniŒÀ’èj‚ÍA˜_—“I‚ɃOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B + Restriction(é™å®šï¼‰ã¯ã€è«–ç†çš„ã«ã‚°ãƒ«ãƒ¼ãƒ—化ã§ãã¾ã™ã€‚ .list();]]> - Œ³X‚ ‚éCriterionŒ^iRestrictions ‚̃TƒuƒNƒ‰ƒXj - ‚Í‚©‚È‚è‚͈̔͂ɋy‚Ñ‚Ü‚·‚ªA“Á‚É—L—p‚È‚Ì‚ÍSQL‚ð’¼ÚŽw’è‚Å‚«‚é‚à‚Ì‚Å‚·B + 元々ã‚ã‚‹Criterion型(Restrictions ã®ã‚µãƒ–クラス) + ã¯ã‹ãªã‚Šã®ç¯„囲ã«åŠã³ã¾ã™ãŒã€ç‰¹ã«æœ‰ç”¨ãªã®ã¯SQLを直接指定ã§ãã‚‹ã‚‚ã®ã§ã™ã€‚ .list();]]> - {alias} ‚Æ‚¢‚¤ƒvƒŒ[ƒXƒzƒ‹ƒ_‚ÍA - –â‚¢‡‚킹‚ðŽó‚¯‚½ƒGƒ“ƒeƒBƒeƒB‚Ìs‚Ì•Ê–¼‚É‚æ‚Á‚Ä’u‚«Š·‚¦‚ç‚ê‚Ü‚·B + {alias} ã¨ã„ã†ãƒ—レースホルダã¯ã€ + å•ã„åˆã‚ã›ã‚’å—ã‘ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®è¡Œã®åˆ¥åã«ã‚ˆã£ã¦ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚ - criterion‚𓾂é•Ê‚ÌŽè’i‚ÍA - Property ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚çŽæ“¾‚·‚邱‚Æ‚Å‚·B - Property.forName() ‚ðŒÄ‚Ño‚µ‚ÄA - Property ƒCƒ“ƒXƒ^ƒ“ƒX‚ð쬂ł«‚Ü‚·B + criterionを得る別ã®æ‰‹æ®µã¯ã€ + Property インスタンスã‹ã‚‰å–å¾—ã™ã‚‹ã“ã¨ã§ã™ã€‚ + Property.forName() を呼ã³å‡ºã—ã¦ã€ + Property インスタンスを作æˆã§ãã¾ã™ã€‚ - Œ‹‰Ê‚Ì®—ñ + çµæžœã®æ•´åˆ— org.hibernate.criterion.Order - ‚ðŽg‚Á‚ÄŒ‹‰Ê‚ð•À‚Ñ‘Ö‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + を使ã£ã¦çµæžœã‚’並ã³æ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ŠÖ˜A + 関連 - createCriteria() ‚ðŽg‚¢AŠÖ˜A‚ðƒiƒrƒQ[ƒg‚·‚邱‚Æ‚ÅA - —eˆÕ‚ÉŠÖŒW‚·‚éƒGƒ“ƒeƒBƒeƒB‚ɧ–ñ‚ðŽw’è‚Å‚«‚Ü‚·B + createCriteria() を使ã„ã€é–¢é€£ã‚’ナビゲートã™ã‚‹ã“ã¨ã§ã€ + 容易ã«é–¢ä¿‚ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«åˆ¶ç´„を指定ã§ãã¾ã™ã€‚ - 2”Ô–Ú‚Ì createCriteria() ‚ÍAkittens - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ðŽQÆ‚·‚éV‚µ‚¢ Criteria - ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + 2番目㮠createCriteria() ã¯ã€kittens + コレクションã®è¦ç´ ã‚’å‚ç…§ã™ã‚‹æ–°ã—ã„ Criteria + インスタンスを返ã™ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ˆÈ‰º‚̂悤‚È•û–@‚àA󋵂ɂæ‚è—L—p‚Å‚·B + 以下ã®ã‚ˆã†ãªæ–¹æ³•ã‚‚ã€çŠ¶æ³ã«ã‚ˆã‚Šæœ‰ç”¨ã§ã™ã€‚ - icreateAlias() ‚ÍV‚µ‚¢ - Criteria ƒCƒ“ƒXƒ^ƒ“ƒX‚ð쬂µ‚Ü‚¹‚ñBj + (createAlias() ã¯æ–°ã—ã„ + Criteria インスタンスを作æˆã—ã¾ã›ã‚“。) - ‘O‚Ì2‚‚̃NƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚é Cat - ƒCƒ“ƒXƒ^ƒ“ƒX‚É‚æ‚Á‚Ä•ÛŽ‚³‚ê‚ékittensƒRƒŒƒNƒVƒ‡ƒ“‚ÍA - criteria‚É‚æ‚Á‚ÄŽ–‘O‚ɃtƒBƒ‹ƒ^ƒŠƒ“ƒO ‚³‚ê‚È‚¢ - ‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚à‚µcriteria‚É“K‡‚·‚ékitten‚ðŽæ“¾‚µ‚½‚¢‚È‚çA - ResultTransformer ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + å‰ã®2ã¤ã®ã‚¯ã‚¨ãƒªã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹ Cat + インスタンスã«ã‚ˆã£ã¦ä¿æŒã•ã‚Œã‚‹kittensコレクションã¯ã€ + criteriaã«ã‚ˆã£ã¦äº‹å‰ã«ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚° ã•ã‚Œãªã„ + ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã‚‚ã—criteriaã«é©åˆã™ã‚‹kittenã‚’å–å¾—ã—ãŸã„ãªã‚‰ã€ + ResultTransformer を使ã‚ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ŠÖ˜A‚Ì“®“IƒtƒFƒbƒ` + 関連ã®å‹•çš„フェッム- setFetchMode() ‚ðŽg‚¢A - ŽÀsŽž‚ÉŠÖ˜A‚Ì•œŒ³•û–@‚ðŽw’肵‚Ä‚à‚æ‚¢‚Å‚·B + setFetchMode() を使ã„〠+ 実行時ã«é–¢é€£ã®å¾©å…ƒæ–¹æ³•ã‚’指定ã—ã¦ã‚‚よã„ã§ã™ã€‚ - ‚±‚̃NƒGƒŠ‚ÍŠO•”Œ‹‡‚É‚æ‚è mate ‚Æ - kittens ‚Ì—¼•û‚ðƒtƒFƒbƒ`‚µ‚Ü‚·B - ‚æ‚葽‚­‚Ìî•ñ‚Í ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + ã“ã®ã‚¯ã‚¨ãƒªã¯å¤–部çµåˆã«ã‚ˆã‚Š mate 㨠+ kittens ã®ä¸¡æ–¹ã‚’フェッãƒã—ã¾ã™ã€‚ + より多ãã®æƒ…報㯠をå‚ç…§ã—ã¦ãã ã•ã„。 - ƒNƒGƒŠ‚Ì—á + クエリã®ä¾‹ - org.hibernate.criterion.Example ƒNƒ‰ƒX‚ÍA - —^‚¦‚ç‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚©‚çƒNƒGƒŠƒNƒ‰ƒCƒeƒŠƒIƒ“‚ð\’z‚Å‚«‚Ü‚·B + org.hibernate.criterion.Example クラスã¯ã€ + 与ãˆã‚‰ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‹ã‚‰ã‚¯ã‚¨ãƒªã‚¯ãƒ©ã‚¤ãƒ†ãƒªã‚ªãƒ³ã‚’構築ã§ãã¾ã™ã€‚ - ƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒBAŽ¯•ÊŽqAŠÖ˜A‚Í–³Ž‹‚³‚ê‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚Ínull’l‚̃vƒƒpƒeƒB‚ÍœŠO‚³‚ê‚Ü‚·B + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ—ロパティã€è­˜åˆ¥å­ã€é–¢é€£ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚ + デフォルトã§ã¯null値ã®ãƒ—ロパティã¯é™¤å¤–ã•ã‚Œã¾ã™ã€‚ - ‚ǂ̂悤‚É Example ‚ð“K—p‚·‚é‚© - ’²®‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ã©ã®ã‚ˆã†ã« Example ã‚’é©ç”¨ã™ã‚‹ã‹ + 調整ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Écriteria‚ðŽw’è‚·‚邽‚ß‚ÉAExample‚ðŽg‚¤‚±‚Æ‚à‰Â”\‚Å‚·B + 関連オブジェクトã«criteriaを指定ã™ã‚‹ãŸã‚ã«ã€Exampleを使ã†ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ - ŽË‰eAW–ñAƒOƒ‹[ƒv‰» + å°„å½±ã€é›†ç´„ã€ã‚°ãƒ«ãƒ¼ãƒ—化 - org.hibernate.criterion.Projections ƒNƒ‰ƒX‚Í - Projection ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠ‚Å‚·B - setProjection() ‚ðŒÄ‚Ño‚·‚±‚Æ‚ÅA - ƒNƒGƒŠ‚Ɏˉe‚ð“K—p‚µ‚Ü‚·B + org.hibernate.criterion.Projections クラス㯠+ Projection インスタンスã®ãƒ•ã‚¡ã‚¯ãƒˆãƒªã§ã™ã€‚ + setProjection() を呼ã³å‡ºã™ã“ã¨ã§ã€ + クエリã«å°„影をé©ç”¨ã—ã¾ã™ã€‚ - •K—v‚Å‚ ‚Á‚Ä‚àAcriteriaƒNƒGƒŠ‚Éugroup byv‚𖾎¦‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ‚ ‚éŽí‚ÌProjectionŒ^‚Í ƒOƒ‹[ƒv‰»ŽË‰e ‚Æ‚µ‚Ä’è‹`‚³‚êA - SQL‚Ì group by ß‚É‚àŒ»‚ê‚Ü‚·B + å¿…è¦ã§ã‚ã£ã¦ã‚‚ã€criteriaクエリã«ã€Œgroup byã€ã‚’明示ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã‚る種ã®Projection型㯠グループ化射影 ã¨ã—ã¦å®šç¾©ã•ã‚Œã€ + SQLã® group by 節ã«ã‚‚ç¾ã‚Œã¾ã™ã€‚ - ”CˆÓ‚Ŏˉe‚É•Ê–¼‚ð•t‚¯‚ç‚ê‚邽‚ßAŽË‰e‚³‚ê‚é’l‚Írestriction‚âordering“à‚©‚çŽQÆ‚Å‚«‚Ü‚·B - •Ê–¼‚ð‚‚¯‚é‚Q‚‚̈قȂé•û–@‚ðŽ¦‚µ‚Ü‚·B + ä»»æ„ã§å°„å½±ã«åˆ¥åを付ã‘られるãŸã‚ã€å°„å½±ã•ã‚Œã‚‹å€¤ã¯restrictionã‚„ordering内ã‹ã‚‰å‚ç…§ã§ãã¾ã™ã€‚ + 別åã‚’ã¤ã‘ã‚‹ï¼’ã¤ã®ç•°ãªã‚‹æ–¹æ³•ã‚’示ã—ã¾ã™ã€‚ - alias() ‚Æ as() ƒƒ\ƒbƒh‚ÍA - ProjectionƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ê‚Ì–¼‘O‚Ì Projection ƒCƒ“ƒXƒ^ƒ“ƒX‚Å - ƒ‰ƒbƒv‚·‚邾‚¯‚Å‚·B - ƒVƒ‡[ƒgƒJƒbƒg‚Æ‚µ‚ÄAŽË‰e‚ðŽË‰eƒŠƒXƒg‚ɒljÁ‚·‚éÛ‚ÉA•Ê–¼‚ð‚‚¯‚ç‚ê‚Ü‚·B + alias() 㨠as() メソッドã¯ã€ + Projectionインスタンスを別ã®åå‰ã® Projection インスタンス㧠+ ラップã™ã‚‹ã ã‘ã§ã™ã€‚ + ショートカットã¨ã—ã¦ã€å°„影を射影リストã«è¿½åŠ ã™ã‚‹éš›ã«ã€åˆ¥åã‚’ã¤ã‘られã¾ã™ã€‚ - ŽË‰e‚ÌŽ®‚É Property.forName() ‚àŽg—p‚Å‚«‚Ü‚·B + å°„å½±ã®å¼ã« Property.forName() も使用ã§ãã¾ã™ã€‚ - ƒNƒGƒŠ‚¨‚æ‚уTƒuƒNƒGƒŠ‚Ì•ª—£ + クエリãŠã‚ˆã³ã‚µãƒ–クエリã®åˆ†é›¢ - DetachedCriteria ƒNƒ‰ƒX‚É‚æ‚èA - ƒZƒbƒVƒ‡ƒ“ƒXƒR[ƒvŠO‚ɃNƒGƒŠ‚ð쬂ł«‚Ü‚·B - Œã‚ÅA”CˆÓ‚Ì Session ‚ðŽg‚Á‚ÄAŽÀs‚Å‚«‚Ü‚·B + DetachedCriteria クラスã«ã‚ˆã‚Šã€ + セッションスコープ外ã«ã‚¯ã‚¨ãƒªã‚’作æˆã§ãã¾ã™ã€‚ + 後ã§ã€ä»»æ„ã® Session を使ã£ã¦ã€å®Ÿè¡Œã§ãã¾ã™ã€‚ - DetachedCriteria ‚ÍAƒTƒuƒNƒGƒŠ‚ð•\Œ»‚·‚邽‚ß‚É‚àŽg‚¦‚Ü‚·B - ƒTƒuƒNƒGƒŠ‚𔺂¤CriterionƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA - Subqueries ‚à‚µ‚­‚Í Property ‚©‚瓾‚ç‚ê‚Ü‚·B + DetachedCriteria ã¯ã€ã‚µãƒ–クエリを表ç¾ã™ã‚‹ãŸã‚ã«ã‚‚使ãˆã¾ã™ã€‚ + サブクエリを伴ã†Criterionインスタンスã¯ã€ + Subqueries ã‚‚ã—ã㯠Property ã‹ã‚‰å¾—られã¾ã™ã€‚ - ‘ŠŒÝŠÖŒW‚ª‚ ‚éƒTƒuƒNƒGƒŠ‚Å‚³‚¦‚à‰Â”\‚Å‚·B + 相互関係ãŒã‚るサブクエリã§ã•ãˆã‚‚å¯èƒ½ã§ã™ã€‚ - Ž©‘RŽ¯•ÊŽq‚É‚æ‚éƒNƒGƒŠ + 自然識別å­ã«ã‚ˆã‚‹ã‚¯ã‚¨ãƒª - criteriaƒNƒGƒŠ‚ðŠÜ‚Þ‚½‚¢‚Ä‚¢‚̃NƒGƒŠ‚É‚Æ‚Á‚ÄA - ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Í‚ ‚Ü‚èŒø—¦‚ª‚æ‚­‚È‚¢‚Å‚·B - ‚È‚º‚È‚çAƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ª•p”É‚É–³Œø‚ɂȂ邽‚ß‚Å‚·B - ‚µ‚©‚µ‚È‚ª‚çAƒLƒƒƒbƒVƒ…‚𖳌ø‚É‚·‚éƒAƒ‹ƒSƒŠƒYƒ€‚ðÅ“K‰»‚Å‚«‚é - “Á•Ê‚ȃNƒGƒŠ‚ÌŽí—Þ‚ª‚P‚‚ ‚è‚Ü‚·B - XV‚³‚ê‚È‚¢Ž©‘RƒL[‚É‚æ‚錟õ‚Å‚·B - ‚¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍA‚±‚ÌŽí—ނ̃NƒGƒŠ‚ª•p”É‚ÉŒ»‚ê‚Ü‚·B - ‚±‚̂悤‚ÈŽg‚í‚ê•û‚Ì‚½‚ß‚ÉAcriteria API‚Í“Á•Ê‚È‘Îô‚ð’ñ‹Ÿ‚µ‚Ü‚·B + criteriaクエリをå«ã‚€ãŸã„ã¦ã„ã®ã‚¯ã‚¨ãƒªã«ã¨ã£ã¦ã€ + クエリキャッシュã¯ã‚ã¾ã‚ŠåŠ¹çŽ‡ãŒã‚ˆããªã„ã§ã™ã€‚ + ãªãœãªã‚‰ã€ã‚¯ã‚¨ãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥ãŒé »ç¹ã«ç„¡åŠ¹ã«ãªã‚‹ãŸã‚ã§ã™ã€‚ + ã—ã‹ã—ãªãŒã‚‰ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’無効ã«ã™ã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’最é©åŒ–ã§ãã‚‹ + 特別ãªã‚¯ã‚¨ãƒªã®ç¨®é¡žãŒï¼‘ã¤ã‚ã‚Šã¾ã™ã€‚ + æ›´æ–°ã•ã‚Œãªã„自然キーã«ã‚ˆã‚‹æ¤œç´¢ã§ã™ã€‚ + ã„ãã¤ã‹ã®ã‚¢ãƒ—リケーションã§ã¯ã€ã“ã®ç¨®é¡žã®ã‚¯ã‚¨ãƒªãŒé »ç¹ã«ç¾ã‚Œã¾ã™ã€‚ + ã“ã®ã‚ˆã†ãªä½¿ã‚れ方ã®ãŸã‚ã«ã€criteria APIã¯ç‰¹åˆ¥ãªå¯¾ç­–ã‚’æä¾›ã—ã¾ã™ã€‚ - ʼn‚ÉA<natural-id> ‚ðŽg‚Á‚ÄA - ƒGƒ“ƒeƒBƒeƒB‚ÌŽ©‘RƒL[‚ðƒ}ƒbƒv‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚µ‚ÄA“ñŽŸƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B + 最åˆã«ã€<natural-id> を使ã£ã¦ã€ + エンティティã®è‡ªç„¶ã‚­ãƒ¼ã‚’マップã—ã¦ãã ã•ã„。 + ãã—ã¦ã€äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’有効ã«ã—ã¾ã™ã€‚ @@ -423,17 +425,17 @@ session.createCriteria(Cat.class, "cat") ]]> - ’ˆÓF •ÏX‚³‚ê‚é Ž©‘RƒL[‚ðŽ‚ƒGƒ“ƒeƒBƒeƒB‚É - ‚±‚Ì‹@”\‚ðŽg‚¤‚Ì‚ÍAˆÓ}‚³‚ê‚Ä‚¢‚È‚¢Žg‚¢•û‚Å‚·B + 注æ„: 変更ã•ã‚Œã‚‹ 自然キーをæŒã¤ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã« + ã“ã®æ©Ÿèƒ½ã‚’使ã†ã®ã¯ã€æ„図ã•ã‚Œã¦ã„ãªã„使ã„æ–¹ã§ã™ã€‚ - ŽŸ‚ÉAHibernateƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B + 次ã«ã€Hibernateクエリキャッシュを有効ã«ã—ã¾ã™ã€‚ - ‚±‚ê‚ÅARestrictions.naturalId() ‚É‚æ‚èA - ‚æ‚èŒø—¦“I‚ȃLƒƒƒbƒVƒ…ƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg—p‚Å‚«‚Ü‚·B + ã“ã‚Œã§ã€Restrictions.naturalId() ã«ã‚ˆã‚Šã€ + より効率的ãªã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’使用ã§ãã¾ã™ã€‚ + + + HQL: The Hibernate Query Language - Hibernate‚ÍSQL‚É”ñí‚É‚æ‚­Ž—‚½(ˆÓ}“I‚ÉŽ—‚¹‚½)‹­—Í‚È–â‚¢‡‚킹Œ¾Œê‚ð”õ‚¦‚Ä‚¢‚Ü‚·B - ‚µ‚©‚µSQL‚ÉŽ—‚½\•¶‚ɘf‚킳‚ê‚È‚¢‚Å‚­‚¾‚³‚¢BHQL‚ÍŠ®‘S‚ɃIƒuƒWƒFƒNƒgŽwŒü‚Å‚ ‚èA - Œp³Aƒ|ƒŠƒ‚[ƒtƒBƒYƒ€AŠÖ˜A‚Æ‚¢‚Á‚½ŠT”O‚ð—‰ð‚µ‚Ü‚·B + Hibernateã¯SQLã«éžå¸¸ã«ã‚ˆãä¼¼ãŸ(æ„図的ã«ä¼¼ã›ãŸ)強力ãªå•ã„åˆã‚ã›è¨€èªžã‚’å‚™ãˆã¦ã„ã¾ã™ã€‚ + ã—ã‹ã—SQLã«ä¼¼ãŸæ§‹æ–‡ã«æƒ‘ã‚ã•ã‚Œãªã„ã§ãã ã•ã„。HQLã¯å®Œå…¨ã«ã‚ªãƒ–ジェクト指å‘ã§ã‚り〠+ 継承ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã€é–¢é€£ã¨ã„ã£ãŸæ¦‚念をç†è§£ã—ã¾ã™ã€‚ - ‘啶Žš‚Ƭ•¶Žš‚Ì‹æ•Ê + 大文字ã¨å°æ–‡å­—ã®åŒºåˆ¥ - ƒNƒGƒŠ‚ÍJava‚̃Nƒ‰ƒX–¼‚ƃvƒƒpƒeƒB–¼‚𜂢‚đ啶ŽšA¬•¶Žš‚ð‹æ•Ê‚µ‚Ü‚¹‚ñB - ]‚Á‚Ä SeLeCT ‚Í - sELEct ‚Æ“¯‚¶‚ÅA‚©‚ - SELECT ‚Æ‚à“¯‚¶‚Å‚·‚ª - net.sf.hibernate.eg.FOO ‚Í - net.sf.hibernate.eg.Foo ‚Ƃ͈ႢA‚©‚ - foo.barSet ‚Í - foo.BARSET ‚Æ‚àˆá‚¢‚Ü‚·B + クエリã¯Javaã®ã‚¯ãƒ©ã‚¹åã¨ãƒ—ロパティåを除ã„ã¦å¤§æ–‡å­—ã€å°æ–‡å­—を区別ã—ã¾ã›ã‚“。 + 従ã£ã¦ SeLeCT 㯠+ sELEct ã¨åŒã˜ã§ã€ã‹ã¤ + SELECT ã¨ã‚‚åŒã˜ã§ã™ãŒ + net.sf.hibernate.eg.FOO 㯠+ net.sf.hibernate.eg.Foo ã¨ã¯é•ã„ã€ã‹ã¤ + foo.barSet 㯠+ foo.BARSET ã¨ã‚‚é•ã„ã¾ã™ã€‚ - ‚±‚̃}ƒjƒ…ƒAƒ‹‚łͬ•¶Žš‚ÌHQLƒL[ƒ[ƒh‚ðŽg—p‚µ‚Ü‚·B - ‘啶Žš‚̃L[ƒ[ƒh‚̃NƒGƒŠ‚Ì•û‚ª“Ç‚Ý‚â‚·‚¢‚ÆŠ´‚¶‚郆[ƒU[‚à‚¢‚é‚ÆŽv‚¢‚Ü‚·B - ‚Å‚·‚ªAJavaƒR[ƒh“à‚É–„‚ßž‚܂ꂽ‚Æ‚«‚É‚ÍŒ©‚Â炢‚ÆŽv‚¢‚Ü‚·B + ã“ã®ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã§ã¯å°æ–‡å­—ã®HQLキーワードを使用ã—ã¾ã™ã€‚ + 大文字ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã®ã‚¯ã‚¨ãƒªã®æ–¹ãŒèª­ã¿ã‚„ã™ã„ã¨æ„Ÿã˜ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚ã„ã‚‹ã¨æ€ã„ã¾ã™ã€‚ + ã§ã™ãŒã€Javaコード内ã«åŸ‹ã‚è¾¼ã¾ã‚ŒãŸã¨ãã«ã¯è¦‹ã¥ã‚‰ã„ã¨æ€ã„ã¾ã™ã€‚ - fromß + from節 - ‚à‚Á‚Æ‚à’Pƒ‚ÈHibernateƒNƒGƒŠ‚ÍŽŸ‚ÌŒ`Ž®‚Å‚·B + ã‚‚ã£ã¨ã‚‚å˜ç´”ãªHibernateクエリã¯æ¬¡ã®å½¢å¼ã§ã™ã€‚ - ‚±‚ê‚Í’Pƒ‚É@eg.Cat@ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‚·‚×‚Ä•Ô‚µ‚Ü‚·B - •K‚¸‚µ‚àƒNƒ‰ƒX–¼‚ðCü‚·‚éiƒNƒ‰ƒX‚ɃpƒbƒP[ƒW–¼‚ð•t‚¯‚éj•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ‚Æ‚¢‚¤‚Ì‚àAauto-import ‚ªƒfƒtƒHƒ‹ƒg‚É‚È‚Á‚Ä‚¢‚é‚©‚ç‚Å‚·B - ‚»‚Ì‚½‚ß‚Ù‚Æ‚ñ‚Ç‚Ìê‡A‚±‚̂悤‚É‘‚­‚¾‚¯‚Å\•ª‚Å‚·B + ã“ã‚Œã¯å˜ç´”ã«ã€€eg.Cat クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’ã™ã¹ã¦è¿”ã—ã¾ã™ã€‚ + å¿…ãšã—もクラスåを修飾ã™ã‚‹ï¼ˆã‚¯ãƒ©ã‚¹ã«ãƒ‘ッケージåを付ã‘る)必è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã¨ã„ã†ã®ã‚‚ã€auto-import ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ãªã£ã¦ã„ã‚‹ã‹ã‚‰ã§ã™ã€‚ + ãã®ãŸã‚ã»ã¨ã‚“ã©ã®å ´åˆã€ã“ã®ã‚ˆã†ã«æ›¸ãã ã‘ã§å分ã§ã™ã€‚ - ‚Ù‚Æ‚ñ‚Ç‚ÌꇃNƒGƒŠ‚Ì‚Ù‚©‚Ì•”•ª‚Å@Cat@‚ðŽQÆ‚·‚é‚Ì‚ÅA•Ê–¼‚ðŠ„‚è“–‚Ä‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B + ã»ã¨ã‚“ã©ã®å ´åˆã‚¯ã‚¨ãƒªã®ã»ã‹ã®éƒ¨åˆ†ã§ã€€Cat をå‚ç…§ã™ã‚‹ã®ã§ã€åˆ¥åを割り当ã¦ã‚‹å¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ã€‚ - ‚±‚̃NƒGƒŠ‚Å‚Í Cat ƒCƒ“ƒXƒ^ƒ“ƒX‚É cat - ‚Æ‚¢‚¤•Ê–¼‚ð•t‚¯‚Ä‚¢‚Ü‚·B - ‚»‚Ì‚½‚ßAŒã‚Å‚±‚̃NƒGƒŠ“à‚ÅA‚±‚Ì•Ê–¼‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - as ƒL[ƒ[ƒh‚̓IƒvƒVƒ‡ƒ“‚Å‚·B‚‚܂肱‚̂悤‚É‘‚­‚±‚Æ‚à‚Å‚«‚Ü‚·F + ã“ã®ã‚¯ã‚¨ãƒªã§ã¯ Cat インスタンス㫠cat + ã¨ã„ã†åˆ¥åを付ã‘ã¦ã„ã¾ã™ã€‚ + ãã®ãŸã‚ã€å¾Œã§ã“ã®ã‚¯ã‚¨ãƒªå†…ã§ã€ã“ã®åˆ¥åを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + as キーワードã¯ã‚ªãƒ—ションã§ã™ã€‚ã¤ã¾ã‚Šã“ã®ã‚ˆã†ã«æ›¸ãã“ã¨ã‚‚ã§ãã¾ã™ï¼š - ’¼ÏA‚ ‚é‚¢‚̓NƒƒXŒ‹‡‚É‚æ‚Á‚Ä‘½”‚̃Nƒ‰ƒX‚ªoŒ»‚·‚邱‚Æ‚à‚ ‚è‚Ü‚·B + ç›´ç©ã€ã‚ã‚‹ã„ã¯ã‚¯ãƒ­ã‚¹çµåˆã«ã‚ˆã£ã¦å¤šæ•°ã®ã‚¯ãƒ©ã‚¹ãŒå‡ºç¾ã™ã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚ - ƒ[ƒJƒ‹•Ï”‚ÌJava‚̃l[ƒ~ƒ“ƒOŠî€‚ƈê’v‚µ‚½A - “ª•¶Žš‚ɬ•¶Žš‚ðŽg‚Á‚½ƒNƒGƒŠ‚Ì•Ê–¼‚ð•t‚¯‚邱‚Æ‚Í‚¢‚¢KŠµ‚Å‚·(—Ⴆ‚Î domesticCat )B + ローカル変数ã®Javaã®ãƒãƒ¼ãƒŸãƒ³ã‚°åŸºæº–ã¨ä¸€è‡´ã—ãŸã€ + 頭文字ã«å°æ–‡å­—を使ã£ãŸã‚¯ã‚¨ãƒªã®åˆ¥åを付ã‘ã‚‹ã“ã¨ã¯ã„ã„ç¿’æ…£ã§ã™(例ãˆã° domesticCat )。 - ŠÖ˜A‚ÆŒ‹‡ + 関連ã¨çµåˆ - ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ ‚é‚¢‚Í’lƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚É‚àAŒ‹‡ ‚ðŽg‚Á‚Ä•Ê–¼‚ðŠ„‚è“–‚Ă邱‚Æ‚ªo—ˆ‚Ü‚·B + 関連ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚ã‚‹ã„ã¯å€¤ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ã«ã‚‚ã€çµåˆ を使ã£ã¦åˆ¥åを割り当ã¦ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ - ƒTƒ|[ƒg‚µ‚Ä‚¢‚錋‡‚̃^ƒCƒv‚ÍANSI SQL‚Æ“¯‚¶‚Å‚·B + サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹çµåˆã®ã‚¿ã‚¤ãƒ—ã¯ANSI SQLã¨åŒã˜ã§ã™ã€‚ @@ -114,13 +116,13 @@ - full join (‚½‚¢‚Ä‚¢‚Ìꇎg‚¢‚Â炢) + full join (ãŸã„ã¦ã„ã®å ´åˆä½¿ã„ã¥ã‚‰ã„) - inner joinAleft outer joinAright outer join‚É‚ÍÈ—ªŒ`‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B + inner joinã€left outer joinã€right outer joinã«ã¯çœç•¥å½¢ã‚’使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - HQL‚Ì with ƒL[ƒ[ƒh‚ðŽg‚¤‚ÆAŒ‹‡ðŒ‚ð•t‚¯‰Á‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + HQLã® with キーワードを使ã†ã¨ã€çµåˆæ¡ä»¶ã‚’付ã‘加ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 10.0]]> - ‰Á‚¦‚ÄAuƒtƒFƒbƒ`vŒ‹‡‚ÍŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚ðeƒIƒuƒWƒFƒNƒg‚ƈê‚É1“x‚Ìselect‹å‚ʼnŠú‰»‚µ‚Ü‚·B - ‚±‚ê‚Í“Á‚ɃRƒŒƒNƒVƒ‡ƒ“‚ÌꇂɗL—p‚Å‚·B‚±‚ê‚ÍŽÀŽ¿ãAŠÖ˜A‚ƃRƒŒƒNƒVƒ‡ƒ“‚ɑ΂·‚éƒ}ƒbƒsƒ“ƒO’è‹`ƒtƒ@ƒCƒ‹‚ÌŠO•”Œ‹‡‚Ælazy‰Šú‰»‚Ì’è‹`‚ðã‘‚«‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B + 加ãˆã¦ã€ã€Œãƒ•ã‚§ãƒƒãƒã€çµåˆã¯é–¢é€£ã‚„値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’親オブジェクトã¨ä¸€ç·’ã«1度ã®selectå¥ã§åˆæœŸåŒ–ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ç‰¹ã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã«æœ‰ç”¨ã§ã™ã€‚ã“ã‚Œã¯å®Ÿè³ªä¸Šã€é–¢é€£ã¨ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã™ã‚‹ãƒžãƒƒãƒ”ング定義ファイルã®å¤–部çµåˆã¨lazyåˆæœŸåŒ–ã®å®šç¾©ã‚’上書ãã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - ‚É‚æ‚葽‚­‚Ìî•ñ‚ª‚ ‚è‚Ü‚·B + ã«ã‚ˆã‚Šå¤šãã®æƒ…å ±ãŒã‚ã‚Šã¾ã™ã€‚ - Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`‚ÍŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ª where ß(‚Ü‚½‚Í‘¼‚Ì‚Ç‚ñ‚Èß‚Å‚à) - ‚ÅŽg‚í‚ê‚Ä‚Í‚È‚ç‚È‚¢‚Ì‚ÅA’Êí•Ê–¼‚ðŠ„‚è“–‚Ä‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB‚Ü‚½ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Í–â‚¢‡‚킹Œ‹‰Ê‚Æ‚µ‚Ä - ’¼Ú•Ô‚³‚ê‚Ü‚¹‚ñB‘ã‚í‚è‚ÉeƒIƒuƒWƒFƒNƒg‚ð’Ê‚µ‚ăAƒNƒZƒX‚Å‚«‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚ðÄ‹A“I‚ÉŒ‹‡ƒtƒFƒbƒ`‚·‚éꇂ̂ÝA•Ê–¼‚ª•K—v‚É‚È‚è‚Ü‚·B + çµåˆã«ã‚ˆã‚‹ãƒ•ã‚§ãƒƒãƒã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクト㌠where 節(ã¾ãŸã¯ä»–ã®ã©ã‚“ãªç¯€ã§ã‚‚) + ã§ä½¿ã‚ã‚Œã¦ã¯ãªã‚‰ãªã„ã®ã§ã€é€šå¸¸åˆ¥åを割り当ã¦ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã›ã‚“。ã¾ãŸé–¢é€£ã‚ªãƒ–ジェクトã¯å•ã„åˆã‚ã›çµæžœã¨ã—㦠+ 直接返ã•ã‚Œã¾ã›ã‚“。代ã‚ã‚Šã«è¦ªã‚ªãƒ–ジェクトを通ã—ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ + コレクションをå†å¸°çš„ã«çµåˆãƒ•ã‚§ãƒƒãƒã™ã‚‹å ´åˆã®ã¿ã€åˆ¥åãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ - fetch \•¶‚Í iterate() - ‚ðŽg‚Á‚½ƒNƒGƒŠŒÄ‚Ño‚µ‚ÅŽg—p‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢ - iˆê•û‚Å scroll() ‚ÍŽg—p‚Å‚«‚Ü‚·jB + fetch 構文㯠iterate() + を使ã£ãŸã‚¯ã‚¨ãƒªå‘¼ã³å‡ºã—ã§ä½¿ç”¨ã§ããªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ + (一方㧠scroll() ã¯ä½¿ç”¨ã§ãã¾ã™ï¼‰ã€‚ - ‚Ü‚½A‚±‚ê‚ç‚Ì‘€ì‚ÍŒ‹‰Ê‚Ìs‚ÉŠî‚¢‚Ä‚¢‚邽‚ßA - fetch ‚Í setMaxResults() ‚â setFirstResult() - ‚ƈê‚ÉŽg—p‚·‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ’Êíeager‚ȃRƒŒƒNƒVƒ‡ƒ“ƒtƒFƒbƒ`‚ð‚·‚é‚Æd•¡‚ªo‚Ä‚µ‚Ü‚¤‚½‚ßA‚ ‚È‚½‚ªŠú‘Ò‚·‚é‚悤‚Ès”‚É‚Í‚È‚ç‚È‚¢‚Ì‚Å‚·B + ã¾ãŸã€ã“れらã®æ“作ã¯çµæžœã®è¡Œã«åŸºã¥ã„ã¦ã„ã‚‹ãŸã‚〠+ fetch 㯠setMaxResults() ã‚„ setFirstResult() + ã¨ä¸€ç·’ã«ä½¿ç”¨ã™ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + 通常eagerãªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ•ã‚§ãƒƒãƒã‚’ã™ã‚‹ã¨é‡è¤‡ãŒå‡ºã¦ã—ã¾ã†ãŸã‚ã€ã‚ãªãŸãŒæœŸå¾…ã™ã‚‹ã‚ˆã†ãªè¡Œæ•°ã«ã¯ãªã‚‰ãªã„ã®ã§ã™ã€‚ - ‚»‚µ‚Ä‚Ü‚½ fetch ‚ÍAƒAƒhƒzƒbƒN‚È with ðŒ‚ð - ˆê‚ÉŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚¹‚ñB - ˆê‚‚̃NƒGƒŠ‚Å•¡”‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŒ‹‡ƒtƒFƒbƒ`‚·‚邱‚Æ‚É‚æ‚蒼ςð쬂ł«‚é‚Ì‚ÅA‚±‚ÌꇒˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½A•¡”‚̃RƒŒƒNƒVƒ‡ƒ“‚ɑ΂·‚錋‡ƒtƒFƒbƒ`‚Íbagƒ}ƒbƒsƒ“ƒO‚ɑ΂µ‚Ä—\Šú‚¹‚ÊŒ‹‰Ê‚ð‚à‚½‚ç‚·‚±‚Æ‚ª‚ ‚é‚Ì‚ÅA - ‚±‚Ìꇂ̃NƒGƒŠ‚Ì쬂ɂ͒ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ÅŒã‚É ‘SŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ` ‚Æ - ‰EŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ` ‚Í—L—p‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + ãã—ã¦ã¾ãŸ fetch ã¯ã€ã‚¢ãƒ‰ãƒ›ãƒƒã‚¯ãª with æ¡ä»¶ã‚’ + 一緒ã«ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã›ã‚“。 + 一ã¤ã®ã‚¯ã‚¨ãƒªã§è¤‡æ•°ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’çµåˆãƒ•ã‚§ãƒƒãƒã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šç›´ç©ã‚’作æˆã§ãã‚‹ã®ã§ã€ã“ã®å ´åˆæ³¨æ„ã—ã¦ãã ã•ã„。 + ã¾ãŸã€è¤‡æ•°ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã™ã‚‹çµåˆãƒ•ã‚§ãƒƒãƒã¯bagマッピングã«å¯¾ã—ã¦äºˆæœŸã›ã¬çµæžœã‚’ã‚‚ãŸã‚‰ã™ã“ã¨ãŒã‚ã‚‹ã®ã§ã€ + ã“ã®å ´åˆã®ã‚¯ã‚¨ãƒªã®ä½œæˆã«ã¯æ³¨æ„ã—ã¦ãã ã•ã„。 + 最後㫠全外部çµåˆã«ã‚ˆã‚‹ãƒ•ã‚§ãƒƒãƒ 㨠+ å³å¤–部çµåˆã«ã‚ˆã‚‹ãƒ•ã‚§ãƒƒãƒ ã¯æœ‰ç”¨ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ‚à‚µƒvƒƒpƒeƒBƒŒƒxƒ‹‚Ì’x‰„ƒtƒFƒbƒ`‚ðŽg‚¤ê‡i“à•”“I‚ɃoƒCƒgƒR[ƒhˆ—‚ð‚·‚éê‡jA - fetch all properties ‚ðŽg‚¤‚±‚Æ‚Å - Hibernate‚É’x‰„ƒvƒƒpƒeƒB‚𑬂₩‚Éiʼn‚̃NƒGƒŠ‚ÅjƒtƒFƒbƒ`‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ã‚‚ã—プロパティレベルã®é…延フェッãƒã‚’使ã†å ´åˆï¼ˆå†…部的ã«ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰å‡¦ç†ã‚’ã™ã‚‹å ´åˆï¼‰ã€ + fetch all properties を使ã†ã“ã¨ã§ + Hibernateã«é…延プロパティを速やã‹ã«ï¼ˆæœ€åˆã®ã‚¯ã‚¨ãƒªã§ï¼‰ãƒ•ã‚§ãƒƒãƒã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -189,32 +191,32 @@ - Œ‹‡\•¶‚ÌŒ`Ž® + çµåˆæ§‹æ–‡ã®å½¢å¼ - HQL‚Í‚Q‚‚̊֘AŒ‹‡Œ`Ž®‚ðƒTƒ|[ƒg‚µ‚Ü‚·FˆÃ–Ù“I ‚Æ –¾Ž¦“IB + HQLã¯ï¼’ã¤ã®é–¢é€£çµåˆå½¢å¼ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ï¼šæš—黙的 㨠明示的。 - ‚±‚ê‚܂ł̃ZƒNƒVƒ‡ƒ“‚Å‚¨Œ©‚¹‚µ‚½Žg‚¢•û‚Í‚·‚×‚Ä –¾Ž¦“I‚È Œ`Ž®‚ÅA - fromß‚Å–¾Ž¦“I‚ÉjoinƒL[ƒ[ƒh‚ðŽg‚Á‚Ä‚¢‚Ü‚·B - ‚±‚ÌŒ`Ž®‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B + ã“ã‚Œã¾ã§ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ãŠè¦‹ã›ã—ãŸä½¿ã„æ–¹ã¯ã™ã¹ã¦ 明示的㪠形å¼ã§ã€ + from節ã§æ˜Žç¤ºçš„ã«joinキーワードを使ã£ã¦ã„ã¾ã™ã€‚ + ã“ã®å½¢å¼ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚ - ˆÃ–Ù“I ƒtƒH[ƒ€‚ÍAjoinƒL[ƒ[ƒh‚ðŽg‚¢‚Ü‚¹‚ñB‘ã‚í‚è‚ÉAŽQÆ‚·‚éŠÖ˜A‚É - ƒhƒbƒg•\‹L‚ðŽg‚¢‚Ü‚·BˆÃ–Ù“I Œ‹‡‚ÍA‚³‚Ü‚´‚Ü‚ÈHQL‚Éo‚Ä‚«‚Ü‚·B - ˆÃ–Ù“I Œ‹‡‚ÌŒ‹‰Ê‚ÍASQLƒXƒe[ƒgƒƒ“ƒg‚Ì“à•”Œ‹‡Œ‹‰Ê‚Å‚·B + 暗黙的 フォームã¯ã€joinキーワードを使ã„ã¾ã›ã‚“。代ã‚ã‚Šã«ã€å‚ç…§ã™ã‚‹é–¢é€£ã« + ドット表記を使ã„ã¾ã™ã€‚暗黙的 çµåˆã¯ã€ã•ã¾ã–ã¾ãªHQLã«å‡ºã¦ãã¾ã™ã€‚ + 暗黙的 çµåˆã®çµæžœã¯ã€SQLステートメントã®å†…部çµåˆçµæžœã§ã™ã€‚ - Selectß + Select節 - select ߂͈ȉº‚̂悤‚ɂǂ̃IƒuƒWƒFƒNƒg‚Æ‘®«‚ðƒNƒGƒŠƒŠƒUƒ‹ƒgƒZƒbƒg‚É•Ô‚·‚©‚ð‘I‘ð‚µ‚Ü‚·B: + select 節ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã©ã®ã‚ªãƒ–ジェクトã¨å±žæ€§ã‚’クエリリザルトセットã«è¿”ã™ã‹ã‚’é¸æŠžã—ã¾ã™ã€‚: - ã‹L‚̃NƒGƒŠ‚Í‘¼‚Ì Cat ‚Ì mate ‚ð‘I‘ð‚µ‚Ü‚·B - ŽÀÛ‚É‚ÍŽŸ‚̂悤‚ÉA‚æ‚èŠÈŒ‰‚É•\Œ»‚Å‚«‚Ü‚·B: + 上記ã®ã‚¯ã‚¨ãƒªã¯ä»–ã® Cat ã® mate ã‚’é¸æŠžã—ã¾ã™ã€‚ + 実際ã«ã¯æ¬¡ã®ã‚ˆã†ã«ã€ã‚ˆã‚Šç°¡æ½”ã«è¡¨ç¾ã§ãã¾ã™ã€‚: - ƒNƒGƒŠ‚̓Rƒ“ƒ|[ƒlƒ“ƒgŒ^‚̃vƒƒpƒeƒB‚ðŠÜ‚ÞA‚ ‚ç‚ä‚é’lŒ^‚̃vƒƒpƒeƒB‚à•Ô‚¹‚Ü‚·B: + クエリã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆåž‹ã®ãƒ—ロパティをå«ã‚€ã€ã‚らゆる値型ã®ãƒ—ロパティも返ã›ã¾ã™ã€‚: - ƒNƒGƒŠ‚Í•¡”‚̃IƒuƒWƒFƒNƒg‚Æ(‚Ü‚½‚Í)ƒvƒƒpƒeƒB‚ð Object[] Œ^‚Ì”z—ñ‚Æ‚µ‚Ä•Ô‚¹‚Ü‚·B + クエリã¯è¤‡æ•°ã®ã‚ªãƒ–ジェクトã¨(ã¾ãŸã¯)プロパティを Object[] åž‹ã®é…列ã¨ã—ã¦è¿”ã›ã¾ã™ã€‚ - ‚à‚µ‚­‚Í List ‚Æ‚µ‚ÄA + ã‚‚ã—ã㯠List ã¨ã—ã¦ã€ - ‚Ü‚½‚ÍAƒ^ƒCƒvƒZ[ƒt‚ÈJavaƒIƒuƒWƒFƒNƒg‚ð•Ô‚¹‚Ü‚·B + ã¾ãŸã¯ã€ã‚¿ã‚¤ãƒ—セーフãªJavaオブジェクトを返ã›ã¾ã™ã€‚ - ‚ ‚é‚¢‚Í Family ƒNƒ‰ƒX‚ª“K؂ȃRƒ“ƒXƒgƒ‰ƒNƒ^‚ðŽ‚Á‚Ä‚¢‚é‚Æ‚·‚é‚È‚ç‚ÎA + ã‚ã‚‹ã„㯠Family クラスãŒé©åˆ‡ãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’æŒã£ã¦ã„ã‚‹ã¨ã™ã‚‹ãªã‚‰ã°ã€ - selectß‚É as ‚ðŽg‚Á‚Ä•Ê–¼‚ð‚‚¯‚邱‚Æ‚à‚Å‚«‚Ü‚·B + select節㫠as を使ã£ã¦åˆ¥åã‚’ã¤ã‘ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - select new map ‚ƈê‚ÉŽg‚¤‚Æ‚«‚ÉÅ‚à–𗧂¿‚Ü‚·F + select new map ã¨ä¸€ç·’ã«ä½¿ã†ã¨ãã«æœ€ã‚‚役立ã¡ã¾ã™ï¼š - ‚±‚̃NƒGƒŠ‚Í•Ê–¼‚©‚çselect‚µ‚½’l‚Ö Map ‚ð•Ô‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã¯åˆ¥åã‹ã‚‰selectã—ãŸå€¤ã¸ Map ã‚’è¿”ã—ã¾ã™ã€‚ - W–ñŠÖ” + 集約関数 - HQL‚̃NƒGƒŠ‚̓vƒƒpƒeƒB‚ÌW–ñŠÖ”‚ÌŒ‹‰Ê‚à•Ô‚¹‚Ü‚·F + HQLã®ã‚¯ã‚¨ãƒªã¯ãƒ—ロパティã®é›†ç´„関数ã®çµæžœã‚‚è¿”ã›ã¾ã™ï¼š --> - ƒTƒ|[ƒg‚µ‚Ä‚¢‚éW–ñŠÖ”‚͈ȉº‚Ì‚à‚Ì‚Å‚·B + サãƒãƒ¼ãƒˆã—ã¦ã„る集約関数ã¯ä»¥ä¸‹ã®ã‚‚ã®ã§ã™ã€‚ @@ -331,7 +333,7 @@ from Cat cat group by cat]]> - selectß‚É‚¨‚¢‚ÄŽZp‘€ìA˜AŒ‹‚Ƴ”F‚³‚ꂽSQLŠÖ”‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B + select節ã«ãŠã„ã¦ç®—è¡“æ“作ã€é€£çµã¨æ‰¿èªã•ã‚ŒãŸSQL関数を使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ - SQL‚Æ“¯‚¶ˆÓ–¡‚ðŽ‚ distinct ‚Æ all ƒL[ƒ[ƒh‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B + SQLã¨åŒã˜æ„味をæŒã¤ distinct 㨠all キーワードを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ - ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȃNƒGƒŠ + ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªã‚¯ã‚¨ãƒª - ŽŸ‚̂悤‚ȃNƒGƒŠF + 次ã®ã‚ˆã†ãªã‚¯ã‚¨ãƒªï¼š - Cat ƒCƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚Å‚Í‚È‚­ADomesticCat - ‚̂悤‚ȃTƒuƒNƒ‰ƒX‚à•Ô‚³‚ê‚Ü‚·BHibernateƒNƒGƒŠ‚Í ‚Ç‚ñ‚È - JavaƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚à from ß‚É“ü‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ƒNƒGƒŠ‚Í‚»‚̃Nƒ‰ƒX‚ðŠg’£‚µ‚½A‚à‚µ‚­‚̓Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚½‘S‚Ẳi‘±ƒNƒ‰ƒX‚ð•Ô‚µ‚Ü‚·B - ŽŸ‚̃NƒGƒŠ‚͉i‘±ƒIƒuƒWƒFƒNƒg‚ð‚·‚×‚Ä•Ô‚µ‚Ü‚·: + Cat インスタンスã ã‘ã§ã¯ãªãã€DomesticCat + ã®ã‚ˆã†ãªã‚µãƒ–クラスも返ã•ã‚Œã¾ã™ã€‚Hibernateクエリ㯠ã©ã‚“㪠+ Javaクラスやインターフェイスも from 節ã«å…¥ã‚Œã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + クエリã¯ãã®ã‚¯ãƒ©ã‚¹ã‚’æ‹¡å¼µã—ãŸã€ã‚‚ã—ãã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’実装ã—ãŸå…¨ã¦ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ + 次ã®ã‚¯ã‚¨ãƒªã¯æ°¸ç¶šã‚ªãƒ–ジェクトをã™ã¹ã¦è¿”ã—ã¾ã™: - Named ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í—lX‚ȉi‘±ƒNƒ‰ƒX‚É‚æ‚Á‚ÄŽÀ‘•‚³‚ê‚Ü‚·B: + Named インターフェイスã¯æ§˜ã€…ãªæ°¸ç¶šã‚¯ãƒ©ã‚¹ã«ã‚ˆã£ã¦å®Ÿè£…ã•ã‚Œã¾ã™ã€‚: - ÅŒã‚Ì“ñ‚‚̃NƒGƒŠ‚ÍA“ñ‚ˆÈã‚ÌSQL SELECT ‚ð—v‹‚µ‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚Ì‚±‚Æ‚Í order by ß‚ªƒŠƒUƒ‹ƒgƒZƒbƒg‘S‘Ì‚ð³Šm‚É‚Í®—ñ‚µ‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚· - (‚³‚ç‚É‚»‚ê‚ÍAQuery.scroll() ‚ðŽg—p‚µ‚Ä‚±‚ê‚ç‚̃NƒGƒŠ‚ðŒÄ‚Ô‚±‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B)B + 最後ã®äºŒã¤ã®ã‚¯ã‚¨ãƒªã¯ã€äºŒã¤ä»¥ä¸Šã®SQL SELECT ã‚’è¦æ±‚ã—ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“ã®ã“ã¨ã¯ order by 節ãŒãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆå…¨ä½“を正確ã«ã¯æ•´åˆ—ã—ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ + (ã•ã‚‰ã«ãã‚Œã¯ã€Query.scroll() を使用ã—ã¦ã“れらã®ã‚¯ã‚¨ãƒªã‚’呼ã¶ã“ã¨ãŒã§ããªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚)。 - whereß + where節 - where ß‚Í•Ô‚³‚ê‚éƒCƒ“ƒXƒ^ƒ“ƒX‚̃ŠƒXƒg‚ði‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚à‚µ•Ê–¼‚ª‚È‚¢ê‡A–¼‘O‚ŃvƒƒpƒeƒB‚ðŽQÆ‚µ‚Ü‚·B + where 節ã¯è¿”ã•ã‚Œã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒªã‚¹ãƒˆã‚’絞るã“ã¨ãŒã§ãã¾ã™ã€‚ + ã‚‚ã—別åãŒãªã„å ´åˆã€åå‰ã§ãƒ—ロパティをå‚ç…§ã—ã¾ã™ã€‚ - ‚à‚µ•Ê–¼‚ª‚ ‚éê‡ACü–¼‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B + ã‚‚ã—別åãŒã‚ã‚‹å ´åˆã€ä¿®é£¾åを使ã£ã¦ãã ã•ã„。 - –¼‘O‚ª'Fritz'‚Æ‚¢‚¤ Cat ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B + åå‰ãŒ'Fritz'ã¨ã„ㆠCat ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ - ã‚ÌHQL‚ÍAFoo ‚Ì startDate ƒvƒƒpƒeƒB‚Æ“™‚µ‚¢ - date ƒvƒƒpƒeƒB‚ðŽ‚Á‚½ bar ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‘¶Ý‚·‚éA - ‚·‚×‚Ä‚Ì Foo ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B - ƒRƒ“ƒpƒEƒ“ƒhƒpƒXŽ®i—Ⴆ‚Îucat.mate.namevj‚Í where ß‚ð”ñí‚É‹­—Í‚É‚µ‚Ü‚·B’–ÚF + 上ã®HQLã¯ã€Foo ã® startDate プロパティã¨ç­‰ã—ã„ + date プロパティをæŒã£ãŸ bar インスタンスãŒå­˜åœ¨ã™ã‚‹ã€ + ã™ã¹ã¦ã® Foo インスタンスを返ã—ã¾ã™ã€‚ + コンパウンドパスå¼ï¼ˆä¾‹ãˆã°ã€Œcat.mate.nameã€ï¼‰ã¯ where 節をéžå¸¸ã«å¼·åŠ›ã«ã—ã¾ã™ã€‚注目: - ‚±‚̃NƒGƒŠ‚̓e[ƒuƒ‹Œ‹‡i“à•”Œ‹‡j‚ðŽ‚ÂSQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B - ‚»‚Ì‘ã‚í‚è‚Ɉȉº‚̂悤‚É‘‚­‚ÆA + ã“ã®ã‚¯ã‚¨ãƒªã¯ãƒ†ãƒ¼ãƒ–ルçµåˆï¼ˆå†…部çµåˆï¼‰ã‚’æŒã¤SQLクエリã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ + ãã®ä»£ã‚ã‚Šã«ä»¥ä¸‹ã®ã‚ˆã†ã«æ›¸ãã¨ã€ - ‚à‚µã‚̃NƒGƒŠ‚ð‹Lq‚µ‚½‚çƒNƒGƒŠ“à‚É4‚‚̃e[ƒuƒ‹Œ‹‡‚ð•K—v‚Æ‚·‚éSQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B + ã‚‚ã—上ã®ã‚¯ã‚¨ãƒªã‚’記述ã—ãŸã‚‰ã‚¯ã‚¨ãƒªå†…ã«4ã¤ã®ãƒ†ãƒ¼ãƒ–ルçµåˆã‚’å¿…è¦ã¨ã™ã‚‹SQLクエリã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ - = ‰‰ŽZŽq‚͈ȉº‚̂悤‚ÉAƒvƒƒpƒeƒB‚¾‚¯‚Å‚È‚­ƒCƒ“ƒXƒ^ƒ“ƒX‚ð”äŠr‚·‚邽‚ß‚É‚àŽg‚í‚ê‚Ü‚·BF + = 演算å­ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã€ãƒ—ロパティã ã‘ã§ãªãインスタンスを比較ã™ã‚‹ãŸã‚ã«ã‚‚使ã‚ã‚Œã¾ã™ã€‚: @@ -440,8 +442,8 @@ from Cat cat, Cat mate where cat.mate = mate]]> - id (¬•¶Žš)‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚èA - ƒIƒuƒWƒFƒNƒg‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚ðŽQÆ‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B(‚³‚ç‚ÉA‚»‚̃vƒƒpƒeƒB–¼‚ðŽg—p‚Å‚«‚Ü‚·B) + id (å°æ–‡å­—)ã¯ç‰¹åˆ¥ãªãƒ—ロパティã§ã‚り〠+ オブジェクトã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™ã€‚(ã•ã‚‰ã«ã€ãã®ãƒ—ロパティåを使用ã§ãã¾ã™ã€‚) from Cat as cat where cat.mate.id = 69]]> - 2”Ԗڂ̃NƒGƒŠ‚ÍŒø—¦“I‚Å‚·Bƒe[ƒuƒ‹Œ‹‡‚ª•K—v‚ ‚è‚Ü‚¹‚ñI + 2番目ã®ã‚¯ã‚¨ãƒªã¯åŠ¹çŽ‡çš„ã§ã™ã€‚テーブルçµåˆãŒå¿…è¦ã‚ã‚Šã¾ã›ã‚“ï¼ - ‚Ü‚½•¡‡Ž¯•ÊŽq‚̃vƒƒpƒeƒB‚àŽg—p‚Å‚«‚Ü‚·B‚±‚±‚Å Person ‚ª - country ‚Æ medicareNumber ‚©‚ç‚È‚é•¡‡Ž¯•ÊŽq‚ðŽ‚‚Ɖ¼’肵‚Ü‚·B + ã¾ãŸè¤‡åˆè­˜åˆ¥å­ã®ãƒ—ロパティも使用ã§ãã¾ã™ã€‚ã“ã“㧠Person ㌠+ country 㨠medicareNumber ã‹ã‚‰ãªã‚‹è¤‡åˆè­˜åˆ¥å­ã‚’æŒã¤ã¨ä»®å®šã—ã¾ã™ã€‚ - ‚à‚¤ˆê“xŒ¾‚¢‚Ü‚·‚ªA2”Ԗڂ̃NƒGƒŠ‚ɂ̓e[ƒuƒ‹Œ‹‡‚ª•K—v‚ ‚è‚Ü‚¹‚ñB + ã‚‚ã†ä¸€åº¦è¨€ã„ã¾ã™ãŒã€2番目ã®ã‚¯ã‚¨ãƒªã«ã¯ãƒ†ãƒ¼ãƒ–ルçµåˆãŒå¿…è¦ã‚ã‚Šã¾ã›ã‚“。 - “¯—l‚É class ‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚èA - ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚É‚¨‚¯‚éƒCƒ“ƒXƒ^ƒ“ƒX‚Ìdiscriminator’l‚ɃAƒNƒZƒX‚µ‚Ü‚·B - whereß‚É–„‚ßž‚܂ꂽJava‚̃Nƒ‰ƒX–¼‚Í‚»‚Ìdiscriminator’l‚É•ÏŠ·‚³‚ê‚Ü‚·B + åŒæ§˜ã« class ã¯ç‰¹åˆ¥ãªãƒ—ロパティã§ã‚り〠+ ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ãƒƒã‚¯ãªæ°¸ç¶šåŒ–ã«ãŠã‘るインスタンスã®discriminator値ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™ã€‚ + where節ã«åŸ‹ã‚è¾¼ã¾ã‚ŒãŸJavaã®ã‚¯ãƒ©ã‚¹åã¯ãã®discriminator値ã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ - ‚Ü‚½ƒRƒ“ƒ|[ƒlƒ“ƒg‚â•¡‡ƒ†[ƒUŒ^(‚Ü‚½‚»‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚È‚Ç)‚̃vƒƒpƒeƒB‚àŽw’è‚Å‚«‚Ü‚·B + ã¾ãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚„複åˆãƒ¦ãƒ¼ã‚¶åž‹(ã¾ãŸãã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãªã©)ã®ãƒ—ロパティも指定ã§ãã¾ã™ã€‚ - ‚µ‚©‚µŒˆ‚µ‚ÄiƒRƒ“ƒ|[ƒlƒ“ƒg‚̃vƒƒpƒeƒB‚Å‚Í‚È‚­jƒRƒ“ƒ|[ƒlƒ“ƒgŒ^‚̃vƒƒpƒeƒB‚ÅI—¹‚·‚éƒpƒXŽ®‚ðŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢B - —Ⴆ‚Î‚à‚µ store.owner ‚ª address - ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŽ‚ƒGƒ“ƒeƒBƒeƒB‚È‚ç‚Έȉº‚̂悤‚ÈŒ‹‰Ê‚Æ‚È‚è‚Ü‚·B + ã—ã‹ã—決ã—ã¦ï¼ˆã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ãƒ—ロパティã§ã¯ãªã)コンãƒãƒ¼ãƒãƒ³ãƒˆåž‹ã®ãƒ—ロパティã§çµ‚了ã™ã‚‹ãƒ‘スå¼ã‚’使ã‚ãªã„ã§ãã ã•ã„。 + 例ãˆã°ã‚‚ã— store.owner ㌠address + コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’æŒã¤ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãªã‚‰ã°ä»¥ä¸‹ã®ã‚ˆã†ãªçµæžœã¨ãªã‚Šã¾ã™ã€‚ - "any"Œ^‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚é id ‚Æ class ‚ðŽ‚¿A - ˆÈ‰º‚Ì•û–@‚ÅŒ‹‡‚ð•\Œ»‚·‚邱‚Æ‚ð‰Â”\‚É‚µ‚Ü‚·(AuditLog.item ‚Í - <any> ‚Ń}ƒbƒsƒ“ƒO‚³‚ꂽƒvƒƒpƒeƒB‚Å‚·)B + "any"åž‹ã¯ç‰¹åˆ¥ãªãƒ—ロパティã§ã‚ã‚‹ id 㨠class ã‚’æŒã¡ã€ + 以下ã®æ–¹æ³•ã§çµåˆã‚’表ç¾ã™ã‚‹ã“ã¨ã‚’å¯èƒ½ã«ã—ã¾ã™(AuditLog.item 㯠+ <any> ã§ãƒžãƒƒãƒ”ングã•ã‚ŒãŸãƒ—ロパティã§ã™)。 - log.item.class ‚Æ payment.class ‚ª - ã‹L‚̃NƒGƒŠ’†‚Å‘S‚­ˆÙ‚È‚éƒf[ƒ^ƒx[ƒXƒJƒ‰ƒ€‚Ì’l‚ðŽQÆ‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + log.item.class 㨠payment.class ㌠+ 上記ã®ã‚¯ã‚¨ãƒªä¸­ã§å…¨ãç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚«ãƒ©ãƒ ã®å€¤ã‚’å‚ç…§ã™ã‚‹ã¨ã„ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - Expressions Ž® + Expressions å¼ - SQL‚Ì where ß‚Å‹Lq‚·‚邱‚Æ‚ªo—ˆ‚鎮‚Ì‚Ù‚Æ‚ñ‚Ç‚ðHQL‚Å‚à‹Lq‚Å‚«‚Ü‚·B: + SQLã® where 節ã§è¨˜è¿°ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹å¼ã®ã»ã¨ã‚“ã©ã‚’HQLã§ã‚‚記述ã§ãã¾ã™ã€‚: - ŽZp‰‰ŽZŽqF+, -, *, / + 算術演算å­ï¼š+, -, *, / - 2€”äŠr‰‰ŽZŽqF=, >=, <=, <>, !=, like + 2項比較演算å­ï¼š=, >=, <=, <>, !=, like - ˜_—‰‰ŽZŽqFand, or, not + è«–ç†æ¼”ç®—å­ï¼šand, or, not - ƒOƒ‹[ƒv•ª‚¯‚ð•\‚·Š‡ŒÊF( ) + グループ分ã‘を表ã™æ‹¬å¼§ï¼š( ) @@ -547,13 +549,13 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> - "ƒVƒ“ƒvƒ‹"‚Ècase case ... when ... then ... else ... endA - "’Tõ“I"‚Ècase case when ... then ... else ... end + "シンプル"ãªcase case ... when ... then ... else ... end〠+ "探索的"ãªcase case when ... then ... else ... end - ƒXƒgƒŠƒ“ƒO‚̘AŒ‹ ...||... ‚Ü‚½‚Í concat(...,...) + ストリングã®é€£çµ ...||... ã¾ãŸã¯ concat(...,...) @@ -571,74 +573,74 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> - EJB-QL 3.0‚Å’è‹`‚³‚ê‚Ä‚¢‚éŠÖ”‚≉ŽZŽq: substring(), trim(), + EJB-QL 3.0ã§å®šç¾©ã•ã‚Œã¦ã„る関数や演算å­: substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length() - coalesce() ‚Æ nullif() + coalesce() 㨠nullif() - ”Žš‚⎞ŠÔ‚Ì’l‚ðString‚ɃRƒ“ƒo[ƒg‚·‚é str()j + 数字や時間ã®å€¤ã‚’Stringã«ã‚³ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ str()) - 2”Ԗڂ̈ø”‚ªHibernateŒ^‚Ì–¼‘O‚Å‚ ‚é cast(... as ...) ‚Æ - extract(... from ...)B - ‚½‚¾‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªANSI cast() ‚Æ extract() - ‚ðƒTƒ|[ƒg‚·‚éꇂɌÀ‚è‚Ü‚·B + 2番目ã®å¼•æ•°ãŒHibernateåž‹ã®åå‰ã§ã‚ã‚‹ cast(... as ...) 㨠+ extract(... from ...)。 + ãŸã ã—使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒANSI cast() 㨠extract() + をサãƒãƒ¼ãƒˆã™ã‚‹å ´åˆã«é™ã‚Šã¾ã™ã€‚ - Œ‹‡‚µ‚½ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì•Ê–¼‚É“K—p‚³‚ê‚éHQL‚Ì - index() ŠÖ”B + çµåˆã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ä»˜ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®åˆ¥åã«é©ç”¨ã•ã‚Œã‚‹HQLã® + index() 関数。 - ƒRƒŒƒNƒVƒ‡ƒ“’l‚̃pƒXŽ®‚ðŽæ‚éHQLŠÖ”F size(), minelement(), maxelement(), - minindex(), maxindex() B - some, all, exists, any, in ‚ðŽg‚Á‚ÄCü‚·‚邱‚Æ‚ª‚Å‚«‚é“Á•Ê‚È - elements() ‚Æ indices ŠÖ”‚ƈê‚ÉŽg‚¢‚Ü‚·B + コレクション値ã®ãƒ‘スå¼ã‚’å–ã‚‹HQL関数: size(), minelement(), maxelement(), + minindex(), maxindex() 。 + some, all, exists, any, in を使ã£ã¦ä¿®é£¾ã™ã‚‹ã“ã¨ãŒã§ãる特別㪠+ elements() 㨠indices 関数ã¨ä¸€ç·’ã«ä½¿ã„ã¾ã™ã€‚ sign(), trunc(), rtrim(), sin() - ‚̂悤‚ȃf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚·‚éSQLƒXƒJƒ‰ŠÖ”B + ã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹SQLスカラ関数。 - JDBCƒXƒ^ƒCƒ‹‚̈ʒuƒpƒ‰ƒ[ƒ^ ? + JDBCスタイルã®ä½ç½®ãƒ‘ラメータ ? - –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^: :name, :start_date, :x1 + åå‰ä»˜ãパラメータ: :name, :start_date, :x1 - SQLƒŠƒeƒ‰ƒ‹F'foo', 69, 6.66E+2, + SQLリテラル:'foo', 69, 6.66E+2, '1970-01-01 10:00:01.0' - Java‚Ì public static final ’è”Feg.Color.TABBY + Javaã® public static final 定数:eg.Color.TABBY - in ‚Æ between ‚͈ȉº‚̂悤‚ÉŽg—p‚Å‚«‚Ü‚·B: + in 㨠between ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ä½¿ç”¨ã§ãã¾ã™ã€‚: @@ -646,7 +648,7 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> - ‚Ü‚½A”Û’èŒ`‚Å‹Lq‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + ã¾ãŸã€å¦å®šå½¢ã§è¨˜è¿°ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ @@ -654,25 +656,25 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> - “¯—l‚É is null ‚â is not null ‚Ínull’l‚ðƒeƒXƒg‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B + åŒæ§˜ã« is null ã‚„ is not null ã¯null値をテストã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ - HibernateÝ’èƒtƒ@ƒCƒ‹‚ÅHQL query substitutions‚ð’è‹`‚·‚ê‚ÎAboolean’l‚ðŽ®‚Ì’†‚ÅŠÈ’P‚ÉŽg—p‚Å‚«‚ÜBF + Hibernate設定ファイルã§HQL query substitutionsを定義ã™ã‚Œã°ã€boolean値をå¼ã®ä¸­ã§ç°¡å˜ã«ä½¿ç”¨ã§ãã¾ã€‚: true 1, false 0]]> - ‚±‚¤‚·‚邱‚Ƃʼnº‹L‚ÌHQL‚ðSQL‚É•ÏŠ·‚·‚é‚Æ‚«‚É true , - false ƒL[ƒ[ƒh‚Í 1 , 0 ‚É’u‚«Š·‚¦‚ç‚ê‚Ü‚·B: + ã“ã†ã™ã‚‹ã“ã¨ã§ä¸‹è¨˜ã®HQLã‚’SQLã«å¤‰æ›ã™ã‚‹ã¨ãã« true , + false キーワード㯠1 , 0 ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚: - “Á•Ê‚ȃvƒƒpƒeƒB sizeA‚Ü‚½‚Í“Á•Ê‚ÈŠÖ” size() - ‚ðŽg‚Á‚ăRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚ðƒeƒXƒg‚Å‚«‚Ü‚·B: + 特別ãªãƒ—ロパティ sizeã€ã¾ãŸã¯ç‰¹åˆ¥ãªé–¢æ•° size() + を使ã£ã¦ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚µã‚¤ã‚ºã‚’テストã§ãã¾ã™ã€‚: 0]]> @@ -680,10 +682,10 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> 0]]> - ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚Å‚ÍAminindex ‚Æ maxindex - ŠÖ”‚ðŽg‚Á‚ÄAƒCƒ“ƒfƒbƒNƒX‚ÌŬ’l‚ÆÅ‘å’l‚ðŽQÆ‚Å‚«‚Ü‚·B - “¯—l‚ÉAminelement ‚Æ maxelement ‚ðŽg‚Á‚ÄA - Šî–{Œ^‚̃RƒŒƒNƒVƒ‡ƒ“—v‘f‚ÌŬ’l‚ÆÅ‘å’l‚ðŽQÆ‚Å‚«‚Ü‚·B + インデックス付ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€minindex 㨠maxindex + 関数を使ã£ã¦ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®æœ€å°å€¤ã¨æœ€å¤§å€¤ã‚’å‚ç…§ã§ãã¾ã™ã€‚ + åŒæ§˜ã«ã€minelement 㨠maxelement を使ã£ã¦ã€ + 基本型ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³è¦ç´ ã®æœ€å°å€¤ã¨æœ€å¤§å€¤ã‚’å‚ç…§ã§ãã¾ã™ã€‚ current_date]]> @@ -693,9 +695,9 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> 10000]]> - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚âƒCƒ“ƒfƒbƒNƒX‚̃Zƒbƒgielements ‚Æ indices - ŠÖ”jA‚Ü‚½‚Í•›–â‚¢‡‚킹iŒãqj‚ÌŒ‹‰Ê‚ªŽó‚¯Žæ‚ê‚é‚Æ‚«‚ÍA - SQLŠÖ” any, some, all, exists, in ‚ªƒTƒ|[ƒg‚³‚ê‚Ü‚·B + コレクションã®è¦ç´ ã‚„インデックスã®ã‚»ãƒƒãƒˆï¼ˆelements 㨠indices + 関数)ã€ã¾ãŸã¯å‰¯å•ã„åˆã‚ã›ï¼ˆå¾Œè¿°ï¼‰ã®çµæžœãŒå—ã‘å–れるã¨ãã¯ã€ + SQL関数 any, some, all, exists, in ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã™ã€‚ size, elements, indices, minindex, maxindex, minelement, - maxelement ‚ÍHibernate3‚Ìwhereß‚¾‚¯‚Å—˜—p‰Â”\‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + maxelement ã¯Hibernate3ã®where節ã ã‘ã§åˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“iarrays, lists, mapsj‚Ì—v‘f‚ÍA - ƒCƒ“ƒfƒbƒNƒX‚ÅŽQÆ‚Å‚«‚Ü‚·iwhereß“à‚Å‚Ì‚ÝjB + インデックス付ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆarrays, lists, maps)ã®è¦ç´ ã¯ã€ + インデックスã§å‚ç…§ã§ãã¾ã™ï¼ˆwhere節内ã§ã®ã¿ï¼‰ã€‚ @@ -734,14 +736,14 @@ where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]> - [] “à•”‚ÌŽ®‚ÍAŽZpŽ®‚Å‚à\‚¢‚Ü‚¹‚ñB + [] 内部ã®å¼ã¯ã€ç®—è¡“å¼ã§ã‚‚構ã„ã¾ã›ã‚“。 - ˆê‘Α½ŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ɑ΂µ‚Ä‚ÍAHQL‚Í‘g‚Ýž‚Ý‚Ì index() ŠÖ”‚à—pˆÓ‚µ‚Ä‚¢‚Ü‚·B + 一対多関連や値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ã«å¯¾ã—ã¦ã¯ã€HQLã¯çµ„ã¿è¾¼ã¿ã® index() 関数も用æ„ã—ã¦ã„ã¾ã™ã€‚ where index(item) < 5]]> - ƒx[ƒX‚Æ‚È‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒXƒJƒ‰[SQLŠÖ”‚ªŽg—p‚Å‚«‚Ü‚· + ベースã¨ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„るスカラーSQL関数ãŒä½¿ç”¨ã§ãã¾ã™ - ‚à‚µ‚Ü‚¾‘S‚Ä‚ð—‰ð‚µ‚Ä‚¢‚È‚¢‚È‚çA‰º‚̃NƒGƒŠ‚ðSQL‚łǂꂾ‚¯’·‚­A“ǂ݂Â炭o—ˆ‚é‚©l‚¦‚Ä‚­‚¾‚³‚¢B: + ã‚‚ã—ã¾ã å…¨ã¦ã‚’ç†è§£ã—ã¦ã„ãªã„ãªã‚‰ã€ä¸‹ã®ã‚¯ã‚¨ãƒªã‚’SQLã§ã©ã‚Œã ã‘é•·ãã€èª­ã¿ã¥ã‚‰ã出æ¥ã‚‹ã‹è€ƒãˆã¦ãã ã•ã„。: @@ -768,7 +770,7 @@ where prod.name = 'widget' and prod = all elements(cust.currentOrder.lineItems)]]> - ƒqƒ“ƒg: —Ⴆ‚΂±‚̂悤‚Éo—ˆ‚Ü‚·B + ヒント: 例ãˆã°ã“ã®ã‚ˆã†ã«å‡ºæ¥ã¾ã™ã€‚ - order byß + order by節 - ƒNƒGƒŠ‚ª•Ô‚·list‚ÍA•Ô‚³‚ê‚éƒNƒ‰ƒX‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì”CˆÓ‚Ì‘®«‚É‚æ‚Á‚Ä•À‚בւ¦‚ç‚ê‚Ü‚·BF + クエリãŒè¿”ã™listã¯ã€è¿”ã•ã‚Œã‚‹ã‚¯ãƒ©ã‚¹ã‚„コンãƒãƒ¼ãƒãƒ³ãƒˆã®ä»»æ„ã®å±žæ€§ã«ã‚ˆã£ã¦ä¸¦ã¹æ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚: - ƒIƒvƒVƒ‡ƒ“‚Ì asc ‚Æ desc ‚Í‚»‚ꂼ‚긇‚©~‡‚Ì®—ñ‚ðŽ¦‚µ‚Ü‚·B + オプション㮠asc 㨠desc ã¯ãã‚Œãžã‚Œæ˜‡é †ã‹é™é †ã®æ•´åˆ—を示ã—ã¾ã™ã€‚ - group byß + group by節 - W–ñ’l‚ð•Ô‚·ƒNƒGƒŠ‚ÍA•Ô‚³‚ê‚éƒNƒ‰ƒX‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì”CˆÓ‚̃vƒƒpƒeƒB‚É‚æ‚Á‚ăOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B: + 集約値を返ã™ã‚¯ã‚¨ãƒªã¯ã€è¿”ã•ã‚Œã‚‹ã‚¯ãƒ©ã‚¹ã‚„コンãƒãƒ¼ãƒãƒ³ãƒˆã®ä»»æ„ã®ãƒ—ロパティã«ã‚ˆã£ã¦ã‚°ãƒ«ãƒ¼ãƒ—化ã§ãã¾ã™ã€‚: - having ß‚àŽg‚¦‚Ü‚·B + having 節も使ãˆã¾ã™ã€‚ - ‚à‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚È‚çA - having ‚Æ order by ß‚ÅSQLŠÖ”‚ÆW–ñŠÖ”‚ªŽg‚¦‚Ü‚· - i—Ⴆ‚ÎMySQL‚É‚Í‚ ‚è‚Ü‚¹‚ñjB + ã‚‚ã—使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ãªã‚‰ã€ + having 㨠order by 節ã§SQL関数ã¨é›†ç´„関数ãŒä½¿ãˆã¾ã™ + (例ãˆã°MySQLã«ã¯ã‚ã‚Šã¾ã›ã‚“)。 100 order by count(kitten) asc, sum(kitten.weight) desc]]> - group by ß‚â order by ß‚É - ŽZpŽ®‚ðŠÜ‚Þ‚±‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + group by 節や order by 節㫠+ ç®—è¡“å¼ã‚’å«ã‚€ã“ã¨ãŒã§ããªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - •›–â‚¢‡‚킹 + 副å•ã„åˆã‚ã› - ƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚·‚éƒf[ƒ^ƒx[ƒX‚Ì‚½‚ßAHibernate‚Í•›–â‚¢‡‚킹‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - •›–â‚¢‡‚킹‚ÍŠ‡ŒÊ‚ň͂܂Ȃ¯‚ê‚΂Ȃè‚Ü‚¹‚ñiSQL‚ÌW–ñŠÖ”ŒÄ‚Ño‚µ‚É‚æ‚鎖‚ª‘½‚¢‚Å‚·jB - ŠÖ˜A•›–â‚¢‡‚킹(ŠO•”ƒNƒGƒŠ’†‚Ì•Ê–¼‚ðŽQÆ‚·‚é•›–â‚¢‡‚킹‚Ì‚±‚Æ)‚³‚¦‹–‰Â‚³‚ê‚Ü‚·B + サブセレクトをサãƒãƒ¼ãƒˆã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãŸã‚ã€Hibernateã¯å‰¯å•ã„åˆã‚ã›ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + 副å•ã„åˆã‚ã›ã¯æ‹¬å¼§ã§å›²ã¾ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“(SQLã®é›†ç´„関数呼ã³å‡ºã—ã«ã‚ˆã‚‹äº‹ãŒå¤šã„ã§ã™ï¼‰ã€‚ + 関連副å•ã„åˆã‚ã›(外部クエリ中ã®åˆ¥åã‚’å‚ç…§ã™ã‚‹å‰¯å•ã„åˆã‚ã›ã®ã“ã¨)ã•ãˆè¨±å¯ã•ã‚Œã¾ã™ã€‚ - HQL•›–â‚¢‡‚킹‚ÍAselect‚Ü‚½‚Íwhereß‚¾‚¯‚ÅŽg‚í‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + HQL副å•ã„åˆã‚ã›ã¯ã€selectã¾ãŸã¯where節ã ã‘ã§ä½¿ã‚れるã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - selectƒŠƒXƒg‚É•¡”‚ÌŽ®‚ðŽ‚•›–â‚¢‡‚킹‚É‚ÍAƒ^ƒvƒ‹‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B + selectリストã«è¤‡æ•°ã®å¼ã‚’æŒã¤å‰¯å•ã„åˆã‚ã›ã«ã¯ã€ã‚¿ãƒ—ルを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ - ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXiOracle‚âHSQL‚É‚Í‚ ‚è‚Ü‚¹‚ñj‚Å‚ÍA - ‘¼‚̃Rƒ“ƒeƒLƒXƒg‚Å‚àƒ^ƒvƒ‹‚ªŽg‚¦‚Ü‚·B - —Ⴆ‚ÎAƒNƒGƒŠƒRƒ“ƒ|[ƒlƒ“ƒg‚â•¡‡ƒ†[ƒUŒ^‚É‚¨‚¢‚Ä‚Å‚·B + ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ï¼ˆOracleã‚„HSQLã«ã¯ã‚ã‚Šã¾ã›ã‚“)ã§ã¯ã€ + ä»–ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã‚‚タプルãŒä½¿ãˆã¾ã™ã€‚ + 例ãˆã°ã€ã‚¯ã‚¨ãƒªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚„複åˆãƒ¦ãƒ¼ã‚¶åž‹ã«ãŠã„ã¦ã§ã™ã€‚ - “¯“™‚Å‚·‚ªA‚æ‚èç’·‚ȃNƒGƒŠ‚Å‚·F + åŒç­‰ã§ã™ãŒã€ã‚ˆã‚Šå†—é•·ãªã‚¯ã‚¨ãƒªã§ã™ï¼š - ‚±‚̂悤‚È‚±‚Æ‚ð‚µ‚½‚­‚È‚¢‚Ì‚É‚Í2‚‚̗—R‚ª‚ ‚è‚Ü‚·F - 1‚–ڂÍAƒf[ƒ^ƒx[ƒXƒvƒ‰ƒbƒgƒtƒH[ƒ€ŠÔ‚ÅŠ®‘S‚Ȍ݊·«‚Í‚È‚¢‚©‚ç‚Å‚·B - 2‚–ڂÍAƒNƒGƒŠ‚ªƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̃vƒƒpƒeƒB‚̇˜‚Ɉˑ¶‚·‚é‚©‚ç‚Å‚·B + ã“ã®ã‚ˆã†ãªã“ã¨ã‚’ã—ãŸããªã„ã®ã«ã¯2ã¤ã®ç†ç”±ãŒã‚ã‚Šã¾ã™ï¼š + 1ã¤ç›®ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ—ラットフォーム間ã§å®Œå…¨ãªäº’æ›æ€§ã¯ãªã„ã‹ã‚‰ã§ã™ã€‚ + 2ã¤ç›®ã¯ã€ã‚¯ã‚¨ãƒªãŒãƒžãƒƒãƒ”ングドキュメントã®ãƒ—ロパティã®é †åºã«ä¾å­˜ã™ã‚‹ã‹ã‚‰ã§ã™ã€‚ - HQL‚Ì—á + HQLã®ä¾‹ - HibernateƒNƒGƒŠ‚Í”ñí‚É‹­—Í‚Å•¡ŽG‚É‚Å‚«‚Ü‚·BŽÀÛAƒNƒGƒŠŒ¾Œê‚̈З͂ÍHibernate‚ÌŽå—v‚ȃZ[ƒ‹ƒXƒ|ƒCƒ“ƒg‚̈ê‚‚ł·B - ‚±‚±‚Éŋ߂̃vƒƒWƒFƒNƒg‚ÅŽg—p‚µ‚½ƒNƒGƒŠ‚Æ”ñí‚É‚æ‚­Ž—‚½—Ⴊ‚ ‚è‚Ü‚·B - ‚Ù‚Æ‚ñ‚ǂ̃NƒGƒŠ‚Í‚±‚ê‚ç‚Ì—á‚æ‚èŠÈ’P‚É‹Lq‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢! + Hibernateクエリã¯éžå¸¸ã«å¼·åŠ›ã§è¤‡é›‘ã«ã§ãã¾ã™ã€‚実際ã€ã‚¯ã‚¨ãƒªè¨€èªžã®å¨åŠ›ã¯Hibernateã®ä¸»è¦ãªã‚»ãƒ¼ãƒ«ã‚¹ãƒã‚¤ãƒ³ãƒˆã®ä¸€ã¤ã§ã™ã€‚ + ã“ã“ã«æœ€è¿‘ã®ãƒ—ロジェクトã§ä½¿ç”¨ã—ãŸã‚¯ã‚¨ãƒªã¨éžå¸¸ã«ã‚ˆãä¼¼ãŸä¾‹ãŒã‚ã‚Šã¾ã™ã€‚ + ã»ã¨ã‚“ã©ã®ã‚¯ã‚¨ãƒªã¯ã“れらã®ä¾‹ã‚ˆã‚Šç°¡å˜ã«è¨˜è¿°ã§ãã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„! - ˆÈ‰º‚̃NƒGƒŠ‚Í“Á’è‚̌ڋq‚Æ—^‚¦‚ç‚ꂽŬ‚̇Œv’l‚ɑ΂·‚é–¢•¥‚¢’•¶‚Ì’•¶IDA - ¤•i‚Ì”A’•¶‚̇Œv‚ð‡Œv’l‚Å®—ñ‚µ‚Ä•Ô‚µ‚Ü‚·B - ‰¿Ši‚ðŒˆ’è‚·‚éÛAŒ»Ý‚̃Jƒ^ƒƒO‚ðŽg‚¢‚Ü‚·BŒ‹‰Ê‚Æ‚µ‚Ä•Ô‚³‚ê‚éSQLƒNƒGƒŠ‚Í + 以下ã®ã‚¯ã‚¨ãƒªã¯ç‰¹å®šã®é¡§å®¢ã¨ä¸Žãˆã‚‰ã‚ŒãŸæœ€å°ã®åˆè¨ˆå€¤ã«å¯¾ã™ã‚‹æœªæ‰•ã„注文ã®æ³¨æ–‡ID〠+ 商å“ã®æ•°ã€æ³¨æ–‡ã®åˆè¨ˆã‚’åˆè¨ˆå€¤ã§æ•´åˆ—ã—ã¦è¿”ã—ã¾ã™ã€‚ + 価格を決定ã™ã‚‹éš›ã€ç¾åœ¨ã®ã‚«ã‚¿ãƒ­ã‚°ã‚’使ã„ã¾ã™ã€‚çµæžœã¨ã—ã¦è¿”ã•ã‚Œã‚‹SQLクエリ㯠ORDER, ORDER_LINE, PRODUCT, - CATALOG ‚¨‚æ‚Ñ PRICE ƒe[ƒuƒ‹‚ɑ΂µ4‚Â‚Ì“à•”Œ‹‡‚Æ - (ŠÖ˜A‚µ‚È‚¢)•›–â‚¢‡‚킹‚ðŽ‚¿‚Ü‚·B + CATALOG ãŠã‚ˆã³ PRICE テーブルã«å¯¾ã—4ã¤ã®å†…部çµåˆã¨ + (関連ã—ãªã„)副å•ã„åˆã‚ã›ã‚’æŒã¡ã¾ã™ã€‚ :minAmount order by sum(price.amount) desc]]> - ‰½‚Ä‹‘å‚ȃNƒGƒŠ‚È‚Ì‚Å‚µ‚傤! •’iŽ„‚Í•›–â‚¢‡‚킹‚ð‚ ‚Ü‚èŽg‚¢‚Ü‚¹‚ñB‚µ‚½‚ª‚Á‚ÄŽ„‚̃NƒGƒŠ‚ÍŽÀۂɂ͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B: + 何ã¦å·¨å¤§ãªã‚¯ã‚¨ãƒªãªã®ã§ã—ょã†! 普段ç§ã¯å‰¯å•ã„åˆã‚ã›ã‚’ã‚ã¾ã‚Šä½¿ã„ã¾ã›ã‚“。ã—ãŸãŒã£ã¦ç§ã®ã‚¯ã‚¨ãƒªã¯å®Ÿéš›ã«ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚: :minAmount order by sum(price.amount) desc]]> - ŽŸ‚̃NƒGƒŠ‚ÍŠeƒXƒe[ƒ^ƒX‚ÌŽx•¥‚¢”‚𔂦‚Ü‚·B‚½‚¾‚µ‚·‚ׂĂ̎x•¥‚¢‚ªŒ»Ý‚Ì—˜—pŽÒ‚É‚æ‚é - ÅV‚̃Xƒe[ƒ^ƒX•ÏX‚Å‚ ‚é AWAITING_APPROVAL ‚Å‚ ‚éꇂ𜂫‚Ü‚·B - ‚±‚̃NƒGƒŠ‚Í2‚Â‚Ì“à•”Œ‹‡‚Æ PAYMENT, PAYMENT_STATUS ‚¨‚æ‚Ñ - PAYMENT_STATUS_CHANGE ƒe[ƒuƒ‹‚ɑ΂·‚éŠÖ˜A•›–â‚¢‡‚킹‚ð”õ‚¦‚½SQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B + 次ã®ã‚¯ã‚¨ãƒªã¯å„ステータスã®æ”¯æ‰•ã„æ•°ã‚’æ•°ãˆã¾ã™ã€‚ãŸã ã—ã™ã¹ã¦ã®æ”¯æ‰•ã„ãŒç¾åœ¨ã®åˆ©ç”¨è€…ã«ã‚ˆã‚‹ + 最新ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹å¤‰æ›´ã§ã‚ã‚‹ AWAITING_APPROVAL ã§ã‚ã‚‹å ´åˆã‚’除ãã¾ã™ã€‚ + ã“ã®ã‚¯ã‚¨ãƒªã¯2ã¤ã®å†…部çµåˆã¨ PAYMENT, PAYMENT_STATUS ãŠã‚ˆã³ + PAYMENT_STATUS_CHANGE テーブルã«å¯¾ã™ã‚‹é–¢é€£å‰¯å•ã„åˆã‚ã›ã‚’å‚™ãˆãŸSQLクエリã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ - ‚à‚µŽ„‚ªset‚Ì‘ã‚í‚è‚Élist‚Æ‚µ‚Ä statusChanges ƒRƒŒƒNƒVƒ‡ƒ“‚ð - ƒ}ƒbƒsƒ“ƒO‚µ‚½‚È‚ç‚ÎA‚Í‚é‚©‚ÉŠÈ’P‚ɃNƒGƒŠ‚ð‹Lq‚Å‚«‚é‚Å‚µ‚傤B + ã‚‚ã—ç§ãŒsetã®ä»£ã‚ã‚Šã«listã¨ã—㦠statusChanges コレクションを + マッピングã—ãŸãªã‚‰ã°ã€ã¯ã‚‹ã‹ã«ç°¡å˜ã«ã‚¯ã‚¨ãƒªã‚’記述ã§ãã‚‹ã§ã—ょã†ã€‚ - ŽŸ‚̃NƒGƒŠ‚ÍŒ»Ý‚̃†[ƒU‚ªŠ‘®‚·‚é‘gD‚ɑ΂·‚éƒAƒJƒEƒ“ƒg‚¨‚æ‚Ñ–¢•¥‚¢‚ÌŽx•¥‚¢‚ð - ‚·‚ׂĕԂ·MS SQL Server - ‚Ì isNull() ŠÖ”‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B - ‚±‚̃NƒGƒŠ‚Í3‚Â‚Ì“à•”Œ‹‡‚Æ1‚‚̊O•”Œ‹‡ A - ‚»‚µ‚Ä ACCOUNT, PAYMENT, PAYMENT_STATUS, - ACCOUNT_TYPE, ORGANIZATION ‚¨‚æ‚Ñ - ORG_USER ƒe[ƒuƒ‹‚ɑ΂·‚é•›–â‚¢‡‚킹Ž‚Á‚½SQL‚É•ÏŠ·‚³‚ê‚Ü‚·B + 次ã®ã‚¯ã‚¨ãƒªã¯ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãŒæ‰€å±žã™ã‚‹çµ„ç¹”ã«å¯¾ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŠã‚ˆã³æœªæ‰•ã„ã®æ”¯æ‰•ã„ã‚’ + ã™ã¹ã¦è¿”ã™MS SQL Server + ã® isNull() 関数を使用ã—ã¦ã„ã¾ã™ã€‚ + ã“ã®ã‚¯ã‚¨ãƒªã¯3ã¤ã®å†…部çµåˆã¨1ã¤ã®å¤–部çµåˆ 〠+ ãã—㦠ACCOUNT, PAYMENT, PAYMENT_STATUS, + ACCOUNT_TYPE, ORGANIZATION ãŠã‚ˆã³ + ORG_USER テーブルã«å¯¾ã™ã‚‹å‰¯å•ã„åˆã‚ã›æŒã£ãŸSQLã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ - ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒX‚ɂ‚¢‚Ä‚ÍA(ŠÖ˜A‚³‚¹‚ç‚ꂽ)•›–â‚¢‡‚킹‚ÌŽg—p‚ð”ð‚¯‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B + ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¤ã„ã¦ã¯ã€(関連ã•ã›ã‚‰ã‚ŒãŸ)副å•ã„åˆã‚ã›ã®ä½¿ç”¨ã‚’é¿ã‘ã‚‹å¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ã€‚ - ‘å—Ê‚ÌUPDATE‚ÆDELETE + 大é‡ã®UPDATEã¨DELETE - HQL‚Í¡‚Í update ‚Æ deleteAinsert ... select ... - ƒXƒe[ƒgƒƒ“ƒg‚ðHQL‚É“ü‚ê‚邱‚Æ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - ‚ÉÚׂª‚ ‚è‚Ü‚·B + HQLã¯ä»Šã¯ update 㨠deleteã€insert ... select ... + ステートメントをHQLã«å…¥ã‚Œã‚‹ã“ã¨ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + ã«è©³ç´°ãŒã‚ã‚Šã¾ã™ã€‚ @@ -1053,13 +1055,13 @@ order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>Tips & Tricks - ŽÀÛ‚ÉŒ‹‰Ê‚ð•Ô‚³‚È‚­‚Ä‚àƒNƒGƒŠ‚ÌŒ‹‰Ê”‚𔂦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B: + 実際ã«çµæžœã‚’è¿”ã•ãªãã¦ã‚‚クエリã®çµæžœæ•°ã‚’æ•°ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚: - ƒRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚É‚æ‚茋‰Ê‚ð•À‚בւ¦‚邽‚߂ɂ͈ȉº‚̃NƒGƒŠ‚ðŽg—p‚µ‚Ü‚·B: + コレクションã®ã‚µã‚¤ã‚ºã«ã‚ˆã‚Šçµæžœã‚’並ã¹æ›¿ãˆã‚‹ãŸã‚ã«ã¯ä»¥ä¸‹ã®ã‚¯ã‚¨ãƒªã‚’使用ã—ã¾ã™ã€‚: - Žg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚·‚éê‡AƒNƒGƒŠ‚Ìwhere߂ŃTƒCƒY‚É‚æ‚é‘I‘ððŒ‚ðÝ’è‚Å‚«‚Ü‚·: + 使用ã—ã¦ã„るデータベースãŒã‚µãƒ–セレクトをサãƒãƒ¼ãƒˆã™ã‚‹å ´åˆã€ã‚¯ã‚¨ãƒªã®where節ã§ã‚µã‚¤ã‚ºã«ã‚ˆã‚‹é¸æŠžæ¡ä»¶ã‚’設定ã§ãã¾ã™: = 1]]> - Žg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚µ‚È‚¢ê‡‚ÍAŽŸ‚̃NƒGƒŠ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢: + 使用ã—ã¦ã„るデータベースãŒã‚µãƒ–セレクトをサãƒãƒ¼ãƒˆã—ãªã„å ´åˆã¯ã€æ¬¡ã®ã‚¯ã‚¨ãƒªã‚’使用ã—ã¦ãã ã•ã„: = 1]]> - “à•”Œ‹‡‚ð‚µ‚Ä‚¢‚邹‚¢‚Åã‚Ì‰ðŒˆ–@‚ªmessage‚ÌŒ”‚ª - ƒ[ƒ‚Ì User ‚ð•Ô‚·‚±‚Æ‚ª‚Å‚«‚È‚¢‚È‚ç‚ÎAˆÈ‰º‚ÌŒ`Ž®‚ªŽg‚¦‚Ü‚·B + 内部çµåˆã‚’ã—ã¦ã„ã‚‹ã›ã„ã§ä¸Šã®è§£æ±ºæ³•ãŒmessageã®ä»¶æ•°ãŒ + ゼロ㮠User ã‚’è¿”ã™ã“ã¨ãŒã§ããªã„ãªã‚‰ã°ã€ä»¥ä¸‹ã®å½¢å¼ãŒä½¿ãˆã¾ã™ã€‚ - JavaBean‚̃vƒƒpƒeƒB‚ÍA–¼‘O•t‚«‚̃NƒGƒŠƒpƒ‰ƒ[ƒ^‚ÉŒ‹‚т‚¯‚邱‚Æ‚ªo—ˆ‚Ü‚·BF + JavaBeanã®ãƒ—ロパティã¯ã€åå‰ä»˜ãã®ã‚¯ã‚¨ãƒªãƒ‘ラメータã«çµã³ã¤ã‘ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚: - ƒRƒŒƒNƒVƒ‡ƒ“‚̓tƒBƒ‹ƒ^•t‚« Query ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg—p‚·‚邱‚ƂŃy[ƒW‚ð‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B: + コレクションã¯ãƒ•ã‚£ãƒ«ã‚¿ä»˜ã Query インターフェイスを使用ã™ã‚‹ã“ã¨ã§ãƒšãƒ¼ã‚¸ã‚’ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚: - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̓NƒGƒŠƒtƒBƒ‹ƒ^‚ðŽg‚Á‚ÄA•À‚בւ¦‚âƒOƒ‹[ƒv•ª‚¯‚ªo—ˆ‚Ü‚·B: + コレクションã®è¦ç´ ã¯ã‚¯ã‚¨ãƒªãƒ•ã‚£ãƒ«ã‚¿ã‚’使ã£ã¦ã€ä¸¦ã¹æ›¿ãˆã‚„グループ分ã‘ãŒå‡ºæ¥ã¾ã™ã€‚: - ƒRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚¹‚¸‚ɃRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B: + コレクションをåˆæœŸåŒ–ã›ãšã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚µã‚¤ã‚ºã‚’å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚: diff --git a/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml b/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml index 179e677400..b9a4f266d6 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml @@ -1,41 +1,43 @@ - + + + - ƒlƒCƒeƒBƒuSQL + ãƒã‚¤ãƒ†ã‚£ãƒ–SQL - ƒf[ƒ^ƒx[ƒX‚̃lƒCƒeƒBƒuSQL•ûŒ¾‚ðŽg‚Á‚ăNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ƒNƒGƒŠƒqƒ“ƒg‚âOracle‚Ì CONNECT ƒL[ƒ[ƒh‚̂悤‚ÉA - ƒf[ƒ^ƒx[ƒX“ÆŽ©‚Ì‹@”\‚ð—˜—p‚µ‚½‚¢‚Æ‚«‚ÉŽg‚¦‚Ü‚·B - SQL/JDBC‚ð’¼ÚŽg—p‚µ‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çHibernate‚ւ̈Ús‚à—eˆÕ‚É‚µ‚Ä‚¢‚Ü‚·B + データベースã®ãƒã‚¤ãƒ†ã‚£ãƒ–SQL方言を使ã£ã¦ã‚¯ã‚¨ãƒªã‚’表ç¾ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + クエリヒントやOracleã® CONNECT キーワードã®ã‚ˆã†ã«ã€ + データベース独自ã®æ©Ÿèƒ½ã‚’利用ã—ãŸã„ã¨ãã«ä½¿ãˆã¾ã™ã€‚ + SQL/JDBCを直接使用ã—ã¦ã„るアプリケーションã‹ã‚‰Hibernateã¸ã®ç§»è¡Œã‚‚容易ã«ã—ã¦ã„ã¾ã™ã€‚ - Hibernate3‚Å‚ÍA¶¬AXVAíœA“Ç‚Ýž‚݈—‚̂悤‚È‚·‚×‚Ä‚Ì - SQLiƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŠÜ‚Þj‚ðŽè‘‚«‚Å‚«‚Ü‚·B + Hibernate3ã§ã¯ã€ç”Ÿæˆã€æ›´æ–°ã€å‰Šé™¤ã€èª­ã¿è¾¼ã¿å‡¦ç†ã®ã‚ˆã†ãªã™ã¹ã¦ã® + SQL(ストアドプロシージャをå«ã‚€ï¼‰ã‚’手書ãã§ãã¾ã™ã€‚ - <literal>SQLQuery</literal> ‚ÌŽg—p + <literal>SQLQuery</literal> ã®ä½¿ç”¨ - ƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚ÌŽÀs‚Í SQLQuery - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ð’Ê‚µ‚ħŒä‚µ‚Ü‚·B - SQLQuery ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í - Session.createSQLQuery() ‚ðŒÄ‚Ño‚µ‚Ď擾‚µ‚Ü‚·B - ‚±‚ÌAPI‚ðŽg‚Á‚Ä–â‚¢‡‚킹‚·‚é•û–@‚ðˆÈ‰º‚Åà–¾‚µ‚Ü‚·B + ãƒã‚¤ãƒ†ã‚£ãƒ–ãªSQLクエリã®å®Ÿè¡Œã¯ SQLQuery + インターフェイスを通ã—ã¦åˆ¶å¾¡ã—ã¾ã™ã€‚ + SQLQuery インターフェイス㯠+ Session.createSQLQuery() を呼ã³å‡ºã—ã¦å–å¾—ã—ã¾ã™ã€‚ + ã“ã®APIを使ã£ã¦å•ã„åˆã‚ã›ã™ã‚‹æ–¹æ³•ã‚’以下ã§èª¬æ˜Žã—ã¾ã™ã€‚ - ƒXƒJƒ‰[‚̃NƒGƒŠ + スカラーã®ã‚¯ã‚¨ãƒª - Å‚àŠî–{“I‚ÈSQLƒNƒGƒŠ‚̓XƒJƒ‰[i’lj‚̃ŠƒXƒg‚𓾂邱‚Æ‚Å‚·B + 最も基本的ãªSQLクエリã¯ã‚¹ã‚«ãƒ©ãƒ¼ï¼ˆå€¤ï¼‰ã®ãƒªã‚¹ãƒˆã‚’å¾—ã‚‹ã“ã¨ã§ã™ã€‚ - ‚±‚ê‚ç‚Í‚Ç‚¿‚ç‚àACATSƒe[ƒuƒ‹‚ÌŠeƒJƒ‰ƒ€‚̃XƒJƒ‰[’l‚ðŠÜ‚Þ - Object”z—ñiObject[]j‚̃ŠƒXƒg‚ð•Ô‚µ‚Ü‚·B - •Ô‚·ƒXƒJƒ‰[’l‚ÌŽÀۂ̇”Ô‚ÆŒ^‚ð„’è‚·‚邽‚ß‚ÉA - Hibernate‚ÍResultSetMetadata‚ðŽg—p‚µ‚Ü‚·B + ã“れらã¯ã©ã¡ã‚‰ã‚‚ã€CATSテーブルã®å„カラムã®ã‚¹ã‚«ãƒ©ãƒ¼å€¤ã‚’å«ã‚€ + Objecté…列(Object[])ã®ãƒªã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚ + è¿”ã™ã‚¹ã‚«ãƒ©ãƒ¼å€¤ã®å®Ÿéš›ã®é †ç•ªã¨åž‹ã‚’推定ã™ã‚‹ãŸã‚ã«ã€ + Hibernateã¯ResultSetMetadataを使用ã—ã¾ã™ã€‚ - ResultSetMetadata ‚ðŽg—p‚·‚éƒI[ƒo[ƒwƒbƒh‚ð”ð‚¯‚é‚½‚ßA - ‚à‚µ‚­‚Í’P‚ɉ½‚ª•Ô‚³‚ê‚é‚©–¾Šm‚É‚·‚邽‚ßAaddScalar() - ‚ðŽg‚¦‚Ü‚·B + ResultSetMetadata を使用ã™ã‚‹ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ã‚’é¿ã‘ã‚‹ãŸã‚〠+ ã‚‚ã—ãã¯å˜ã«ä½•ãŒè¿”ã•ã‚Œã‚‹ã‹æ˜Žç¢ºã«ã™ã‚‹ãŸã‚ã€addScalar() + を使ãˆã¾ã™ã€‚ - ‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ - SQLƒNƒGƒŠ•¶Žš—ñ + SQLクエリ文字列 - •Ô‚³‚ê‚éƒJƒ‰ƒ€‚ÆŒ^ + è¿”ã•ã‚Œã‚‹ã‚«ãƒ©ãƒ ã¨åž‹ - ‚±‚ê‚Í‚Ü‚¾Object”z—ñ‚ð•Ô‚µ‚Ü‚·‚ªA - ResultSetMetdata ‚ðŽg—p‚µ‚Ü‚¹‚ñB - ‚½‚¾‚µA‚»‚Ì‘ã‚í‚è‚ÉŠî‘b‚É‚ ‚郊ƒUƒ‹ƒgƒZƒbƒg‚©‚ç - IDANAMEABIRTHDATE ƒJƒ‰ƒ€‚ð‚»‚ê‚¼‚ê - LongAStringAShort ‚Æ‚µ‚Ä–¾Ž¦“I‚Ɏ擾‚µ‚Ü‚·B - ‚±‚ê‚Í‚R‚‚̃Jƒ‰ƒ€‚ð•Ô‚·‚Ì‚Ý‚Å‚ ‚邱‚Æ‚àˆÓ–¡‚µ‚Ü‚·B - ‚½‚Æ‚¦AƒNƒGƒŠ‚ª * ‚ðŽg—p‚µA - —ñ‹“‚µ‚½‚R‚‚æ‚葽‚­‚̃Jƒ‰ƒ€‚ð•Ô‚¹‚é‚Æ‚µ‚Ä‚à‚Å‚·B + ã“ã‚Œã¯ã¾ã Objecté…列を返ã—ã¾ã™ãŒã€ + ResultSetMetdata を使用ã—ã¾ã›ã‚“。 + ãŸã ã—ã€ãã®ä»£ã‚ã‚Šã«åŸºç¤Žã«ã‚るリザルトセットã‹ã‚‰ + IDã€NAMEã€BIRTHDATE カラムをãã‚Œãžã‚Œ + Longã€Stringã€Short ã¨ã—ã¦æ˜Žç¤ºçš„ã«å–å¾—ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ï¼“ã¤ã®ã‚«ãƒ©ãƒ ã‚’è¿”ã™ã®ã¿ã§ã‚ã‚‹ã“ã¨ã‚‚æ„味ã—ã¾ã™ã€‚ + ãŸã¨ãˆã€ã‚¯ã‚¨ãƒªãŒ * を使用ã—〠+ 列挙ã—ãŸï¼“ã¤ã‚ˆã‚Šå¤šãã®ã‚«ãƒ©ãƒ ã‚’è¿”ã›ã‚‹ã¨ã—ã¦ã‚‚ã§ã™ã€‚ - ƒXƒJƒ‰[‚ÌŒ^î•ñ‚ðÈ‚­‚±‚Æ‚à‚Å‚«‚Ü‚·B + スカラーã®åž‹æƒ…報をçœãã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - ‚±‚ê‚Í–{Ž¿“I‚É‘O‚Æ“¯‚¶ƒNƒGƒŠ‚Å‚·‚ªAA - NAME ‚Æ BIRTHDATE ‚ÌŒ^‚ðŒˆ‚ß‚é‚½‚ß‚É ResultSetMetaData - ‚ðŽg—p‚µ‚Ü‚·Bˆê•ûAID ‚ÌŒ^‚Í–¾Ž¦“I‚ÉŽw’肳‚ê‚Ä‚¢‚Ü‚·B + ã“ã‚Œã¯æœ¬è³ªçš„ã«å‰ã¨åŒã˜ã‚¯ã‚¨ãƒªã§ã™ãŒã€ã€ + NAME 㨠BIRTHDATE ã®åž‹ã‚’決ã‚ã‚‹ãŸã‚ã« ResultSetMetaData + を使用ã—ã¾ã™ã€‚一方ã€ID ã®åž‹ã¯æ˜Žç¤ºçš„ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ - ResultSetMetaData ‚©‚ç•Ô‚³‚ê‚é java.sql.Types ‚ð Hibernate ‚ÌŒ^‚É - ƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ÍADialect ‚ª§Œä‚µ‚Ü‚·B - –¾Ž¦‚³‚ꂽŒ^‚ªƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚È‚¢‚©AŒ‹‰Ê‚ÌŒ^‚ªŠú‘Ò‚µ‚½‚à‚̂ƈقȂéê‡A - Dialect ‚Ì registerHibernateType ‚ðŒÄ‚Ño‚µA - ƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B + ResultSetMetaData ã‹ã‚‰è¿”ã•ã‚Œã‚‹ java.sql.Types ã‚’ Hibernate ã®åž‹ã« + マッピングã™ã‚‹ã“ã¨ã¯ã€Dialect ãŒåˆ¶å¾¡ã—ã¾ã™ã€‚ + 明示ã•ã‚ŒãŸåž‹ãŒãƒžãƒƒãƒ”ングã•ã‚Œã¦ã„ãªã„ã‹ã€çµæžœã®åž‹ãŒæœŸå¾…ã—ãŸã‚‚ã®ã¨ç•°ãªã‚‹å ´åˆã€ + Dialect ã® registerHibernateType を呼ã³å‡ºã—〠+ カスタマイズã§ãã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒB‚̃NƒGƒŠ + エンティティã®ã‚¯ã‚¨ãƒª - ‚±‚±‚܂ł̃NƒGƒŠ‚ÍA‚·‚ׂăXƒJƒ‰[’l‚ð•Ô‚·‚à‚Ì‚Å‚µ‚½B - Šî–{“I‚ÉAƒŠƒUƒ‹ƒgƒZƒbƒg‚©‚çu–¢‰ÁHv‚Ì’l‚ð•Ô‚µ‚Ü‚·B - ˆÈ~‚Å‚ÍAaddEntity() ‚É‚æ‚èAƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚©‚ç - ƒGƒ“ƒeƒBƒeƒBƒIƒuƒWƒFƒNƒg‚ðŽæ“¾‚·‚é•û–@‚ðŽ¦‚µ‚Ü‚·B + ã“ã“ã¾ã§ã®ã‚¯ã‚¨ãƒªã¯ã€ã™ã¹ã¦ã‚¹ã‚«ãƒ©ãƒ¼å€¤ã‚’è¿”ã™ã‚‚ã®ã§ã—ãŸã€‚ + 基本的ã«ã€ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‹ã‚‰ã€ŒæœªåŠ å·¥ã€ã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚ + 以é™ã§ã¯ã€addEntity() ã«ã‚ˆã‚Šã€ãƒã‚¤ãƒ†ã‚£ãƒ–SQLクエリã‹ã‚‰ + エンティティオブジェクトをå–å¾—ã™ã‚‹æ–¹æ³•ã‚’示ã—ã¾ã™ã€‚ - ‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ - SQLƒNƒGƒŠ•¶Žš—ñ + SQLクエリ文字列 - ƒNƒGƒŠ‚ª•Ô‚·ƒGƒ“ƒeƒBƒeƒB‚ÆSQLƒe[ƒuƒ‹‚Ì•Ê–¼ + クエリãŒè¿”ã™ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨SQLテーブルã®åˆ¥å - Cat‚ªID, NAME, BIRTHDATE‚̃Jƒ‰ƒ€‚ðŽg‚Á‚ăNƒ‰ƒX‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚éê‡A - ã‹L‚̃NƒGƒŠ‚Í‚Ç‚¿‚ç‚àA—v‘f‚ªCatƒGƒ“ƒeƒBƒeƒB‚Å‚ ‚郊ƒXƒg‚ð•Ô‚µ‚Ü‚·B + CatãŒID, NAME, BIRTHDATEã®ã‚«ãƒ©ãƒ ã‚’使ã£ã¦ã‚¯ãƒ©ã‚¹ã«ãƒžãƒƒãƒ”ングã•ã‚Œã‚‹å ´åˆã€ + 上記ã®ã‚¯ã‚¨ãƒªã¯ã©ã¡ã‚‰ã‚‚ã€è¦ç´ ãŒCatエンティティã§ã‚るリストを返ã—ã¾ã™ã€‚ - ƒGƒ“ƒeƒBƒeƒB‚ð•Ê‚̃Gƒ“ƒeƒBƒeƒB‚É ‘½‘Îˆê ‚Åƒ}ƒbƒsƒ“ƒO‚µ‚Ä‚¢‚éꇂÍA - ƒlƒCƒeƒBƒuƒNƒGƒŠ‚ðŽÀs‚·‚éÛ‚ÉA‚±‚̕ʂ̃Gƒ“ƒeƒBƒeƒB‚ð•Ô‚·‚±‚Æ‚à—v‹‚µ‚Ü‚·B - ‚³‚à‚È‚¯‚ê‚ÎAƒf[ƒ^ƒx[ƒXŒÅ—L‚Ìucolumn not found(ƒJƒ‰ƒ€‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ)vƒGƒ‰[‚ª”­¶‚µ‚Ü‚·B - * •\‹L‚ðŽg—p‚µ‚½Û‚ÍA’ljÁ‚̃Jƒ‰ƒ€‚ªŽ©“®“I‚É•Ô‚³‚ê‚Ü‚·‚ªA - ŽŸ‚Ì—á‚̂悤‚ÉADog ‚É ‘½‘Îˆê ‚Å‚ ‚邱‚Æ‚ð - –¾Ž¦‚·‚邱‚Æ‚ðŽ„‚½‚¿‚ÍD‚Ý‚Ü‚·B + エンティティを別ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã« 多対一 ã§ãƒžãƒƒãƒ”ングã—ã¦ã„ã‚‹å ´åˆã¯ã€ + ãƒã‚¤ãƒ†ã‚£ãƒ–クエリを実行ã™ã‚‹éš›ã«ã€ã“ã®åˆ¥ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’è¿”ã™ã“ã¨ã‚‚è¦æ±‚ã—ã¾ã™ã€‚ + ã•ã‚‚ãªã‘ã‚Œã°ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å›ºæœ‰ã®ã€Œcolumn not found(カラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“)ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã™ã€‚ + * 表記を使用ã—ãŸéš›ã¯ã€è¿½åŠ ã®ã‚«ãƒ©ãƒ ãŒè‡ªå‹•çš„ã«è¿”ã•ã‚Œã¾ã™ãŒã€ + 次ã®ä¾‹ã®ã‚ˆã†ã«ã€Dog 㫠多対一 ã§ã‚ã‚‹ã“ã¨ã‚’ + 明示ã™ã‚‹ã“ã¨ã‚’ç§ãŸã¡ã¯å¥½ã¿ã¾ã™ã€‚ - ‚±‚ê‚É‚æ‚è cat.getDog() ‚ª³‚µ‚­‹@”\‚µ‚Ü‚·B + ã“ã‚Œã«ã‚ˆã‚Š cat.getDog() ãŒæ­£ã—ã機能ã—ã¾ã™ã€‚ - ŠÖ˜A‚ƃRƒŒƒNƒVƒ‡ƒ“‚Ì‘€ì + 関連ã¨ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æ“作 - ƒvƒƒLƒV‚ð‰Šú‰»‚·‚邽‚ß‚Ì—]•ª‚Ȉ—‚ð”ð‚¯‚é‚½‚ßA - Dog ‚Ì’†‚Å‘¦ŽžŒ‹‡‚Å‚«‚Ü‚·B - ‚±‚ê‚Í addJoin() ƒƒ\ƒbƒh‚É‚æ‚ès‚¢‚Ü‚·B - ŠÖ˜A‚à‚µ‚­‚̓RƒŒƒNƒVƒ‡ƒ“‚ÉŒ‹‡‚Å‚«‚Ü‚·B + プロキシをåˆæœŸåŒ–ã™ã‚‹ãŸã‚ã®ä½™åˆ†ãªå‡¦ç†ã‚’é¿ã‘ã‚‹ãŸã‚〠+ Dog ã®ä¸­ã§å³æ™‚çµåˆã§ãã¾ã™ã€‚ + ã“れ㯠addJoin() メソッドã«ã‚ˆã‚Šè¡Œã„ã¾ã™ã€‚ + 関連もã—ãã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«çµåˆã§ãã¾ã™ã€‚ - ‚±‚Ì—á‚Ì’†‚ÅA•Ô‚³‚ê‚é Cat ‚ÍA - ƒf[ƒ^ƒx[ƒX‚Ö‚Ì—]•ªˆ—‚È‚µ‚ÅA - Š®‘S‚ɉŠú‰»‚³‚ꂽ dog ƒvƒƒpƒeƒB‚ðŽ‚¿‚Ü‚·B - Œ‹‡‘Îۂ̃vƒƒpƒeƒB‚ւ̃pƒX‚ðŽw’è‚Å‚«‚é‚悤‚ÉA - •Ê–¼iucatvj‚ð’ljÁ‚µ‚½‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‘¦ŽžŒ‹‡‚à“¯‚¶‚悤‚É‚Å‚«‚Ü‚·B - ‚½‚Æ‚¦‚ÎACat ‚ªˆê‘Α½‚Å Dog - ‚ðŽ‚Á‚Ä‚¢‚½ê‡AŽŸ‚̂悤‚É‚È‚è‚Ü‚·B + ã“ã®ä¾‹ã®ä¸­ã§ã€è¿”ã•ã‚Œã‚‹ Cat ã¯ã€ + データベースã¸ã®ä½™åˆ†å‡¦ç†ãªã—ã§ã€ + 完全ã«åˆæœŸåŒ–ã•ã‚ŒãŸ dog プロパティをæŒã¡ã¾ã™ã€‚ + çµåˆå¯¾è±¡ã®ãƒ—ロパティã¸ã®ãƒ‘スを指定ã§ãるよã†ã«ã€ + 別å(「catã€ï¼‰ã‚’追加ã—ãŸã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + コレクションã®å³æ™‚çµåˆã‚‚åŒã˜ã‚ˆã†ã«ã§ãã¾ã™ã€‚ + ãŸã¨ãˆã°ã€Cat ãŒä¸€å¯¾å¤šã§ Dog + ã‚’æŒã£ã¦ã„ãŸå ´åˆã€æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ - Œ»Ý‚Ì‚Æ‚±‚ëA - Hibernate‚ÅŽg‚¢‚â‚·‚­‚·‚邽‚ß‚ÌSQLƒNƒGƒŠ‚ÌŠg’£‚È‚µ‚ÉA - ƒlƒCƒeƒBƒuƒNƒGƒŠ‚ʼn½‚©‚ð‰Â”\‚É‚·‚éŒÀŠE‚É—ˆ‚Ä‚¢‚Ü‚·B - “¯‚¶Œ^‚̃Gƒ“ƒeƒBƒeƒB‚ð•¡”•Ô‚·Û‚âAƒfƒtƒHƒ‹ƒg‚Ì•Ê–¼‚â—ñ–¼‚Å\•ª‚Å‚Í‚È‚¢ê‡‚ÉA - –â‘è‚Í‹N‚±‚èŽn‚ß‚Ü‚·B + ç¾åœ¨ã®ã¨ã“ã‚〠+ Hibernateã§ä½¿ã„ã‚„ã™ãã™ã‚‹ãŸã‚ã®SQLクエリã®æ‹¡å¼µãªã—ã«ã€ + ãƒã‚¤ãƒ†ã‚£ãƒ–クエリã§ä½•ã‹ã‚’å¯èƒ½ã«ã™ã‚‹é™ç•Œã«æ¥ã¦ã„ã¾ã™ã€‚ + åŒã˜åž‹ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’複数返ã™éš›ã‚„ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®åˆ¥åや列åã§å分ã§ã¯ãªã„å ´åˆã«ã€ + å•é¡Œã¯èµ·ã“り始ã‚ã¾ã™ã€‚ - •¡”ƒGƒ“ƒeƒBƒeƒB‚̎擾 + 複数エンティティã®å–å¾— - ‚±‚±‚Ü‚Å‚ÍAƒŠƒUƒ‹ƒgƒZƒbƒg‚̃Jƒ‰ƒ€–¼‚ÍA - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÅŽw’肳‚ꂽƒJƒ‰ƒ€–¼‚Æ“¯‚¶‚Å‚ ‚é‚Ɖ¼’肵‚Ä‚¢‚Ü‚µ‚½B - •¡”‚̃e[ƒuƒ‹‚ª“¯‚¶ƒJƒ‰ƒ€–¼‚ðŽ‚Âꇂª‚ ‚邽‚ßA - •¡”ƒe[ƒuƒ‹‚ðŒ‹‡‚·‚éSQLƒNƒGƒŠ‚Å–â‘è‚Æ‚È‚éꇂª‚ ‚è‚Ü‚·B + ã“ã“ã¾ã§ã¯ã€ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã®ã‚«ãƒ©ãƒ åã¯ã€ + マッピングファイルã§æŒ‡å®šã•ã‚ŒãŸã‚«ãƒ©ãƒ åã¨åŒã˜ã§ã‚ã‚‹ã¨ä»®å®šã—ã¦ã„ã¾ã—ãŸã€‚ + 複数ã®ãƒ†ãƒ¼ãƒ–ルãŒåŒã˜ã‚«ãƒ©ãƒ åã‚’æŒã¤å ´åˆãŒã‚ã‚‹ãŸã‚〠+ 複数テーブルをçµåˆã™ã‚‹SQLクエリã§å•é¡Œã¨ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ - ‰º‹L‚̂悤‚ÈiŽ¸”s‚µ‚»‚¤‚ÈjƒNƒGƒŠ‚Å‚ÍA - ƒJƒ‰ƒ€•Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“icolumn alias injectionj‚ª•K—v‚Å‚·B + 下記ã®ã‚ˆã†ãªï¼ˆå¤±æ•—ã—ãã†ãªï¼‰ã‚¯ã‚¨ãƒªã§ã¯ã€ + カラム別åインジェクション(column alias injection)ãŒå¿…è¦ã§ã™ã€‚ - ‚±‚̃NƒGƒŠ‚̈Ó}‚ÍA - ‚Ps‚²‚Æ‚É‚Q‚‚ÌCatƒCƒ“ƒXƒ^ƒ“ƒXA‚‚܂è”L‚Æ‚»‚Ì•êe‚ð•Ô‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - “¯‚¶ƒJƒ‰ƒ€–¼‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚É‚æ‚è–¼‘O‚ªÕ“Ë‚·‚邽‚ßA‚±‚̃NƒGƒŠ‚ÍŽ¸”s‚µ‚Ü‚·B - ƒx[ƒ^ƒx[ƒX‚É‚æ‚Á‚Ä‚ÍA•Ô‚³‚ê‚éƒJƒ‰ƒ€‚Ì•Ê–¼‚ª "c.ID"A"c.NAME" ‚È‚Ç‚ÌŒ`Ž®‚Å‚ ‚èA - ƒ}ƒbƒsƒ“ƒO‚ÅŽw’肳‚ꂽƒJƒ‰ƒ€i"ID" ‚Æ "NAME"j‚Æ“™‚µ‚­‚È‚¢‚½‚ßAŽ¸”s‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã®æ„図ã¯ã€ + 1行ã”ã¨ã«ï¼’ã¤ã®Catインスタンスã€ã¤ã¾ã‚ŠçŒ«ã¨ãã®æ¯è¦ªã‚’è¿”ã™ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + åŒã˜ã‚«ãƒ©ãƒ åã«ãƒžãƒƒãƒ”ングã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šåå‰ãŒè¡çªã™ã‚‹ãŸã‚ã€ã“ã®ã‚¯ã‚¨ãƒªã¯å¤±æ•—ã—ã¾ã™ã€‚ + ベータベースã«ã‚ˆã£ã¦ã¯ã€è¿”ã•ã‚Œã‚‹ã‚«ãƒ©ãƒ ã®åˆ¥å㌠"c.ID"ã€"c.NAME" ãªã©ã®å½¢å¼ã§ã‚り〠+ マッピングã§æŒ‡å®šã•ã‚ŒãŸã‚«ãƒ©ãƒ ï¼ˆ"ID" 㨠"NAME")ã¨ç­‰ã—ããªã„ãŸã‚ã€å¤±æ•—ã—ã¾ã™ã€‚ - ‰º‹L‚ÌŒ`Ž®‚ÍAƒJƒ‰ƒ€–¼‚ªd•¡‚µ‚Ä‚à‘åä•v‚Å‚·B + 下記ã®å½¢å¼ã¯ã€ã‚«ãƒ©ãƒ åãŒé‡è¤‡ã—ã¦ã‚‚大丈夫ã§ã™ã€‚ - ‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ - SQLƒNƒGƒŠ•¶Žš—ñ - iHibernate‚ªƒJƒ‰ƒ€‚Ì•Ê–¼‚ð‘}“ü‚·‚邽‚߂̃vƒŒ[ƒXƒzƒ‹ƒ_‚ðŠÜ‚Þj + SQLクエリ文字列 + (HibernateãŒã‚«ãƒ©ãƒ ã®åˆ¥åを挿入ã™ã‚‹ãŸã‚ã®ãƒ—レースホルダをå«ã‚€ï¼‰ - ƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚éƒGƒ“ƒeƒBƒeƒB + クエリã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ - ã‹L‚ÅŽg—p‚µ‚Ä‚¢‚é {cat.*} ‚Æ {mother.*} ‚Æ‚¢‚¤•\‹L‚ÍA - u‚·‚ׂẴvƒƒpƒeƒBv‚ð•\‚·È—ªŒ`‚Å‚·B - ‘ã‚í‚è‚ÉA–¾Ž¦“I‚ɃJƒ‰ƒ€‚ð—ñ‹“‚µ‚Ä‚à‚æ‚¢‚Å‚·‚ªA - ‚»‚ÌꇂÍAHibernate‚ÉŠeƒvƒƒpƒeƒB‚ɑΉž‚·‚éSQLƒJƒ‰ƒ€‚Ì•Ê–¼‚ð‘}“ü‚³‚¹‚é‚ׂ«‚Å‚µ‚傤B - ƒJƒ‰ƒ€‚Ì•Ê–¼‚Ì‚½‚߂̃vƒŒ[ƒXƒzƒ‹ƒ_‚ÍAƒe[ƒuƒ‹‚Ì•Ê–¼‚É‚æ‚Á‚ÄCü‚³‚ꂽƒvƒƒpƒeƒB–¼‚Å‚·B - ‰º‹L‚Ì—á‚Å‚ÍA•Ê‚̃e[ƒuƒ‹ cat_log ‚©‚ç - ƒ}ƒbƒsƒ“ƒOƒƒ^ƒf[ƒ^‚Å’è‹`‚³‚ꂽ Cat ‚Æ‚»‚Ì•êe‚𕜌³‚µ‚Ü‚·B - ‚à‚µD‚Þ‚È‚çAwhereß‚Ì’†‚Å‚àAƒvƒƒpƒeƒB‚Ì•Ê–¼‚ðŽg‚¦‚Ü‚·B + 上記ã§ä½¿ç”¨ã—ã¦ã„ã‚‹ {cat.*} 㨠{mother.*} ã¨ã„ã†è¡¨è¨˜ã¯ã€ + 「ã™ã¹ã¦ã®ãƒ—ロパティã€ã‚’表ã™çœç•¥å½¢ã§ã™ã€‚ + 代ã‚ã‚Šã«ã€æ˜Žç¤ºçš„ã«ã‚«ãƒ©ãƒ ã‚’列挙ã—ã¦ã‚‚よã„ã§ã™ãŒã€ + ãã®å ´åˆã¯ã€Hibernateã«å„プロパティã«å¯¾å¿œã™ã‚‹SQLカラムã®åˆ¥åを挿入ã•ã›ã‚‹ã¹ãã§ã—ょã†ã€‚ + カラムã®åˆ¥åã®ãŸã‚ã®ãƒ—レースホルダã¯ã€ãƒ†ãƒ¼ãƒ–ルã®åˆ¥åã«ã‚ˆã£ã¦ä¿®é£¾ã•ã‚ŒãŸãƒ—ロパティåã§ã™ã€‚ + 下記ã®ä¾‹ã§ã¯ã€åˆ¥ã®ãƒ†ãƒ¼ãƒ–ル cat_log ã‹ã‚‰ + マッピングメタデータã§å®šç¾©ã•ã‚ŒãŸ Cat ã¨ãã®æ¯è¦ªã‚’復元ã—ã¾ã™ã€‚ + ã‚‚ã—好むãªã‚‰ã€where節ã®ä¸­ã§ã‚‚ã€ãƒ—ロパティã®åˆ¥åを使ãˆã¾ã™ã€‚ - •Ê–¼‚ƃvƒƒpƒeƒB‚̃Šƒtƒ@ƒŒƒ“ƒX + 別åã¨ãƒ—ロパティã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ - ‘½‚­‚Ìê‡Aã‹L‚̂悤‚È•Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“‚ª•K—v‚Å‚·B - ‚½‚¾‚µA•¡‡ƒvƒƒpƒeƒBAŒp³Ž¯•ÊŽqAƒRƒŒƒNƒVƒ‡ƒ“‚Ȃǂ̂悤‚È - ‚æ‚è•¡ŽG‚ȃ}ƒbƒsƒ“ƒO‚ÆŠÖ˜A‚·‚éƒNƒGƒŠ‚ª‚È‚¯‚ê‚΂ł·B - ‚ ‚é“Á’è‚Ì•Ê–¼‚ðŽg—p‚·‚邱‚Æ‚É‚æ‚èAHibernate‚Í“KØ‚È•Ê–¼‚ð‘}“ü‚Å‚«‚Ü‚·B + 多ãã®å ´åˆã€ä¸Šè¨˜ã®ã‚ˆã†ãªåˆ¥åインジェクションãŒå¿…è¦ã§ã™ã€‚ + ãŸã ã—ã€è¤‡åˆãƒ—ロパティã€ç¶™æ‰¿è­˜åˆ¥å­ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãªã©ã®ã‚ˆã†ãª + より複雑ãªãƒžãƒƒãƒ”ングã¨é–¢é€£ã™ã‚‹ã‚¯ã‚¨ãƒªãŒãªã‘ã‚Œã°ã§ã™ã€‚ + ã‚る特定ã®åˆ¥åを使用ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€Hibernateã¯é©åˆ‡ãªåˆ¥åを挿入ã§ãã¾ã™ã€‚ - •Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“‚Æ‚µ‚ÄŽg—p‚Å‚«‚é‚à‚Ì‚ð‰º•\‚ÉŽ¦‚µ‚Ü‚·B - ’ˆÓF‰º•\‚Ì•Ê–¼‚͈ê—á‚Å‚·B - ‚»‚ꂼ‚ê‚Ì•Ê–¼‚͈êˆÓ‚Å‚ ‚èAŽg—p‚·‚éÛ‚É‚Í‚¨‚»‚ç‚­ˆÙ‚È‚é–¼‘O‚ðŽ‚¿‚Ü‚·B + 別åインジェクションã¨ã—ã¦ä½¿ç”¨ã§ãã‚‹ã‚‚ã®ã‚’下表ã«ç¤ºã—ã¾ã™ã€‚ + 注æ„:下表ã®åˆ¥åã¯ä¸€ä¾‹ã§ã™ã€‚ + ãã‚Œãžã‚Œã®åˆ¥åã¯ä¸€æ„ã§ã‚ã‚Šã€ä½¿ç”¨ã™ã‚‹éš›ã«ã¯ãŠãらãç•°ãªã‚‹åå‰ã‚’æŒã¡ã¾ã™ã€‚
- •Ê–¼‚É‘}“ü‚·‚é–¼‘O + 別åã«æŒ¿å…¥ã™ã‚‹åå‰ @@ -249,60 +251,60 @@ List loggedCats = sess.createSQLQuery(sql) - à–¾ - \•¶ - —á + 説明 + 構文 + 例 - ’Pƒ‚ȃvƒƒpƒeƒB + å˜ç´”ãªãƒ—ロパティ {[aliasname].[propertyname]} A_NAME as {item.name} - •¡‡ƒvƒƒpƒeƒB + 複åˆãƒ—ロパティ {[aliasname].[componentname].[propertyname]} CURRENCY as {item.amount.currency}, VALUE as {item.amount.value} - ƒGƒ“ƒeƒBƒeƒB‚̃Nƒ‰ƒX‚ðŽ¯•Ê‚·‚é’l + エンティティã®ã‚¯ãƒ©ã‚¹ã‚’識別ã™ã‚‹å€¤ {[aliasname].class} DISC as {item.class} - ƒGƒ“ƒeƒBƒeƒB‚Ì‘SƒvƒƒpƒeƒB + エンティティã®å…¨ãƒ—ロパティ {[aliasname].*} {item.*} - ƒRƒŒƒNƒVƒ‡ƒ“‚̃L[ + コレクションã®ã‚­ãƒ¼ {[aliasname].key} ORGID as {coll.key} - ƒRƒŒƒNƒVƒ‡ƒ“‚ÌID + コレクションã®ID {[aliasname].id} EMPID as {coll.id} - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f + コレクションã®è¦ç´  {[aliasname].element} XID as {coll.element} - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̃vƒƒpƒeƒB + コレクションã®è¦ç´ ã®ãƒ—ロパティ {[aliasname].element.[propertyname]} NAME as {coll.element.name} - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚Ì‘SƒvƒƒpƒeƒB + コレクションã®è¦ç´ ã®å…¨ãƒ—ロパティ {[aliasname].element.*} {coll.element.*} - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‘SƒvƒƒpƒeƒB + コレクションã®å…¨ãƒ—ロパティ {[aliasname].*} {coll.*} @@ -313,43 +315,43 @@ List loggedCats = sess.createSQLQuery(sql) - ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚̎擾 + 管ç†ã•ã‚Œã¦ã„ãªã„エンティティã®å–å¾— - ƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚É ResultTransformer ‚ð“K—p‚Å‚«‚Ü‚·B - ‰º‹L‚̂悤‚ÉA—Ⴆ‚ÎAŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚ð•Ô‚µ‚Ü‚·B + ãƒã‚¤ãƒ†ã‚£ãƒ–SQLクエリ㫠ResultTransformer ã‚’é©ç”¨ã§ãã¾ã™ã€‚ + 下記ã®ã‚ˆã†ã«ã€ä¾‹ãˆã°ã€ç®¡ç†ã•ã‚Œã¦ã„ãªã„エンティティを返ã—ã¾ã™ã€‚ - ‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + ã“ã®ã‚¯ã‚¨ãƒªã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ - SQLƒNƒGƒŠ•¶Žš—ñ + SQLクエリ文字列 - Œ‹‰Ê‚ð•ÏŠ·‚µ‚½‚à‚Ì + çµæžœã‚’変æ›ã—ãŸã‚‚ã® - ã‹L‚̃NƒGƒŠ‚ÍAƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µANAME ‚Æ BIRTHDATE ‚Ì’l‚ð - ‘Ήž‚·‚éƒvƒƒpƒeƒB‚à‚µ‚­‚̓tƒB[ƒ‹ƒh‚É‘}“ü‚µ‚½ CatDTO - ‚̃ŠƒXƒg‚ð•Ô‚µ‚Ü‚·B + 上記ã®ã‚¯ã‚¨ãƒªã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã—ã€NAME 㨠BIRTHDATE ã®å€¤ã‚’ + 対応ã™ã‚‹ãƒ—ロパティもã—ãã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«æŒ¿å…¥ã—㟠CatDTO + ã®ãƒªã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚ - Œp³‚̧Œä + 継承ã®åˆ¶å¾¡ - Œp³‚̈ꕔ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚ð–â‚¢‡‚킹‚éƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚ÍA - ƒx[ƒX‚̃Nƒ‰ƒX‚Æ‚»‚Ì‚·‚ׂẴTƒuƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚·‚ׂĂðŠÜ‚Ü‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 継承ã®ä¸€éƒ¨ã¨ã—ã¦ãƒžãƒƒãƒ”ングã•ã‚ŒãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’å•ã„åˆã‚ã›ã‚‹ãƒã‚¤ãƒ†ã‚£ãƒ–SQLクエリã¯ã€ + ベースã®ã‚¯ãƒ©ã‚¹ã¨ãã®ã™ã¹ã¦ã®ã‚µãƒ–クラスã®ãƒ—ロパティã™ã¹ã¦ã‚’å«ã¾ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ƒpƒ‰ƒ[ƒ^ + パラメータ - ƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚ÍAˆÈ‰º‚̂悤‚ÉA - –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^i:namej‚Æ“¯—l‚Ɉʒuƒpƒ‰ƒ[ƒ^‚ðƒTƒ|[ƒg‚µ‚Ü‚·B + ãƒã‚¤ãƒ†ã‚£ãƒ–SQLクエリã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã€ + åå‰ä»˜ãパラメータ(:name)ã¨åŒæ§˜ã«ä½ç½®ãƒ‘ラメータをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ - –¼‘O•t‚«SQLƒNƒGƒŠ + åå‰ä»˜ãSQLクエリ - –¼‘O•t‚«SQLƒNƒGƒŠ‚̓}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Å’è‹`‚·‚邱‚Æ‚ª‚Å‚«A - –¼‘O•t‚«HQLƒNƒGƒŠ‚Æ‘S‚­“¯‚¶•û–@‚ŌĂԂ±‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚Ìê‡AaddEntity() ‚ðŒÄ‚Ño‚·•K—v‚Í ‚È‚¢ ‚Å‚·B + åå‰ä»˜ãSQLクエリã¯ãƒžãƒƒãƒ”ングドキュメントã§å®šç¾©ã™ã‚‹ã“ã¨ãŒã§ã〠+ åå‰ä»˜ãHQLクエリã¨å…¨ãåŒã˜æ–¹æ³•ã§å‘¼ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã®å ´åˆã€addEntity() を呼ã³å‡ºã™å¿…è¦ã¯ ãªã„ ã§ã™ã€‚ @@ -381,9 +383,9 @@ List pusList = query.setString("name", "Pus%").list(); ]]> - ŠÖ˜A‚ðŒ‹‡‚·‚邽‚߂ƃRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚·‚éƒNƒGƒŠ‚ð’è‹`‚·‚邽‚ß‚ÉA‚»‚ꂼ‚ê - <return-join> ‚Æ <load-collection> - —v‘f‚ðŽg‚¢‚Ü‚·B + 関連をçµåˆã™ã‚‹ãŸã‚ã¨ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’åˆæœŸåŒ–ã™ã‚‹ã‚¯ã‚¨ãƒªã‚’定義ã™ã‚‹ãŸã‚ã«ã€ãã‚Œãžã‚Œ + <return-join> 㨠<load-collection> + è¦ç´ ã‚’使ã„ã¾ã™ã€‚ @@ -401,9 +403,9 @@ List pusList = query.setString("name", "Pus%").list(); ]]>]]> - –¼‘O•t‚«SQLƒNƒGƒŠ‚̓XƒJƒ‰’l‚ð•Ô‚·‚±‚Æ‚à‚Å‚«‚Ü‚·B - <return-scalar> —v‘f‚ðŽg‚Á‚ÄA - —ñ‚Ì•Ê–¼‚ÆHibernate‚ÌŒ^‚ð錾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + åå‰ä»˜ãSQLクエリã¯ã‚¹ã‚«ãƒ©å€¤ã‚’è¿”ã™ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + <return-scalar> è¦ç´ ã‚’使ã£ã¦ã€ + 列ã®åˆ¥åã¨Hibernateã®åž‹ã‚’宣言ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -414,10 +416,10 @@ List pusList = query.setString("name", "Pus%").list(); ]]>]]> - ƒŠƒUƒ‹ƒgƒZƒbƒg‚̃}ƒbƒsƒ“ƒOî•ñ‚ð <resultset> - ‚ÉŠOo‚µ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - •¡”‚Ì–¼‘O•t‚«ƒNƒGƒŠ‚ÅÄ—˜—p‚µ‚½‚èAsetResultSetMapping() - API‚ð’Ê‚µ‚ÄÄ—˜—p‚µ‚½‚è‚Å‚«‚Ü‚·B + リザルトセットã®ãƒžãƒƒãƒ”ング情報を <resultset> + ã«å¤–出ã—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + 複数ã®åå‰ä»˜ãクエリã§å†åˆ©ç”¨ã—ãŸã‚Šã€setResultSetMapping() + APIを通ã—ã¦å†åˆ©ç”¨ã—ãŸã‚Šã§ãã¾ã™ã€‚ @@ -439,8 +441,8 @@ List pusList = query.setString("name", "Pus%").list(); ]]>]]> - ‘ã‚í‚è‚ÉAhbmƒtƒ@ƒCƒ‹“à‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚̃}ƒbƒsƒ“ƒOî•ñ‚ð - ’¼ÚJavaƒR[ƒh‚Ì’†‚ÅŽg—p‚Å‚«‚Ü‚·B + 代ã‚ã‚Šã«ã€hbmファイル内ã®ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã®ãƒžãƒƒãƒ”ング情報を + 直接Javaコードã®ä¸­ã§ä½¿ç”¨ã§ãã¾ã™ã€‚ - —ñ‚Æ—ñ‚Ì•Ê–¼‚𖾎¦“I‚ÉŽw’è‚·‚邽‚ß‚É return-property ‚ðŽg‚¤ + 列ã¨åˆ—ã®åˆ¥åを明示的ã«æŒ‡å®šã™ã‚‹ãŸã‚ã« return-property を使ㆠ- •Ê–¼‚ð‘}“ü‚·‚邽‚ß‚É {} \•¶‚ðŽg‚¤‘ã‚í‚è‚ÉA - <return-property> ‚ðŽg‚¢A - ‚Ç‚Ì—ñ‚Ì•Ê–¼‚ðŽg‚¤‚Ì‚©‚𖾎¦‚Å‚«‚Ü‚·B + 別åを挿入ã™ã‚‹ãŸã‚ã« {} 構文を使ã†ä»£ã‚ã‚Šã«ã€ + <return-property> を使ã„〠+ ã©ã®åˆ—ã®åˆ¥åを使ã†ã®ã‹ã‚’明示ã§ãã¾ã™ã€‚ @@ -468,9 +470,9 @@ List pusList = query.setString("name", "Pus%").list(); ]]> ]]> - <return-property> ‚Í•¡”‚Ì—ñ‚àˆµ‚¦‚Ü‚·B - ‚±‚ê‚ÍA•¡”—ñ‚̃vƒƒpƒeƒB‚ð‚«‚ßׂ©‚­§Œä‚Å‚«‚È‚¢‚Æ‚¢‚¤A - {} \•¶‚̧ŒÀ‚ð‰ðŒˆ‚µ‚Ü‚·B + <return-property> ã¯è¤‡æ•°ã®åˆ—も扱ãˆã¾ã™ã€‚ + ã“ã‚Œã¯ã€è¤‡æ•°åˆ—ã®ãƒ—ロパティをãã‚ç´°ã‹ã制御ã§ããªã„ã¨ã„ã†ã€ + {} 構文ã®åˆ¶é™ã‚’解決ã—ã¾ã™ã€‚ @@ -488,24 +490,24 @@ List pusList = query.setString("name", "Pus%").list(); ]]>]]> - ‚±‚Ì—á‚Å‚ÍA‘}“ü‚Ì‚½‚ß‚Ì {} \•¶‚Æ‚¢‚Á‚µ‚å‚ÉA - <return-property> ‚ðŽg‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - —ñ‚ƃvƒƒpƒeƒB‚ð‚ǂ̂悤‚ÉŽQÆ‚·‚é‚©‚ð‘I‚ׂ܂·B + ã“ã®ä¾‹ã§ã¯ã€æŒ¿å…¥ã®ãŸã‚ã® {} 構文ã¨ã„ã£ã—ょã«ã€ + <return-property> を使ã£ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + 列ã¨ãƒ—ロパティをã©ã®ã‚ˆã†ã«å‚ç…§ã™ã‚‹ã‹ã‚’é¸ã¹ã¾ã™ã€‚ - ƒ}ƒbƒsƒ“ƒO‚É discriminator ‚ªŠÜ‚Ü‚ê‚Ä‚¢‚éê‡A - discriminator ‚Ì—ñ‚ðŽw’è‚·‚邽‚ß‚ÉA<return-discriminator> - ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + マッピング㫠discriminator ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€ + discriminator ã®åˆ—を指定ã™ã‚‹ãŸã‚ã«ã€<return-discriminator> + を使ã‚ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - –â‚¢‡‚킹‚·‚邽‚߂ɃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤ + å•ã„åˆã‚ã›ã™ã‚‹ãŸã‚ã«ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャを使ㆠ- Hibernate‚̓o[ƒWƒ‡ƒ“3‚©‚çAƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ƃXƒgƒAƒhŠÖ”Œo—R‚Ì–â‚¢‡‚킹‚ª - ƒTƒ|[ƒg‚³‚ê‚Ü‚µ‚½B - ˆÈ~‚Ì•¶‘‚Ì‘½‚­‚ÍA—¼•û‚É“–‚Ä‚Í‚Ü‚è‚Ü‚·B - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚âƒXƒgƒAƒhŠÖ”‚ðHibernate‚ÅŽg‚¤‚½‚ß‚É‚ÍA - 1”Ô–Ú‚Ìo—̓pƒ‰ƒ[ƒ^‚Æ‚µ‚ăŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Oracle 9i‚à‚µ‚­‚Í‚»‚êˆÈã‚̃o[ƒWƒ‡ƒ“j‚̃XƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Ì—á‚ðˆÈ‰º‚ÉŽ¦‚µ‚Ü‚·B + Hibernateã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³3ã‹ã‚‰ã€ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャã¨ã‚¹ãƒˆã‚¢ãƒ‰é–¢æ•°çµŒç”±ã®å•ã„åˆã‚ã›ãŒ + サãƒãƒ¼ãƒˆã•ã‚Œã¾ã—ãŸã€‚ + 以é™ã®æ–‡æ›¸ã®å¤šãã¯ã€ä¸¡æ–¹ã«å½“ã¦ã¯ã¾ã‚Šã¾ã™ã€‚ + ストアドプロシージャやストアド関数をHibernateã§ä½¿ã†ãŸã‚ã«ã¯ã€ + 1番目ã®å‡ºåŠ›ãƒ‘ラメータã¨ã—ã¦ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’è¿”ã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Oracle 9(もã—ãã¯ãれ以上ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã®ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャã®ä¾‹ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚ - Hibernate‚Å‚±‚̃NƒGƒŠ‚ðŽg‚¤‚½‚ß‚É‚ÍA - –¼‘O•t‚«ƒNƒGƒŠ‚Ń}ƒbƒsƒ“ƒO‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + Hibernateã§ã“ã®ã‚¯ã‚¨ãƒªã‚’使ã†ãŸã‚ã«ã¯ã€ + åå‰ä»˜ãクエリã§ãƒžãƒƒãƒ”ングã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ @@ -539,57 +541,57 @@ BEGIN { ? = call selectAllEmployments() } ]]> - ’ˆÓF¡‚Ì‚Æ‚±‚ëAƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̓XƒJƒ‰‚ƃGƒ“ƒeƒBƒeƒB‚ð•Ô‚·‚Ì‚Ý‚Å‚·B - <return-join> ‚Æ <load-collection> - ‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB + 注æ„:今ã®ã¨ã“ã‚ã€ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャã¯ã‚¹ã‚«ãƒ©ã¨ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’è¿”ã™ã®ã¿ã§ã™ã€‚ + <return-join> 㨠<load-collection> + ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤ã‚ł̃‹[ƒ‹‚ƧŒÀ + ストアドプロシージャを使ã†ä¸Šã§ã®ãƒ«ãƒ¼ãƒ«ã¨åˆ¶é™ - Hibernate‚ŃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚âŠÖ”‚ðŽg‚¤‚½‚ß‚É‚ÍA - ‚»‚̃vƒƒV[ƒWƒƒ‚Í‚¢‚­‚‚©‚̃‹[ƒ‹‚É€‹’‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - ƒ‹[ƒ‹‚É€‹’‚µ‚Ä‚¢‚È‚¢ƒvƒƒV[ƒWƒƒ‚ÍAHibernate‚ÅŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ‚»‚ê‚Å‚àA€‹’‚µ‚Ä‚¢‚È‚¢ƒvƒƒV[ƒWƒƒ‚ðŽg‚¢‚½‚¢‚Ì‚Å‚ ‚ê‚ÎA - session.connection() ‚ð’Ê‚¶‚ÄŽÀs‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ƒ‹[ƒ‹‚̓f[ƒ^ƒx[ƒX‚²‚ƂɈقȂè‚Ü‚·B - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̃Zƒ}ƒ“ƒeƒBƒbƒNƒX‚ƃVƒ“ƒ^ƒbƒNƒX‚ÍA - ƒf[ƒ^ƒx[ƒXƒxƒ“ƒ_‚²‚ƂɈقȂ邽‚ß‚Å‚·B + Hibernateã§ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャや関数を使ã†ãŸã‚ã«ã¯ã€ + ãã®ãƒ—ロシージャã¯ã„ãã¤ã‹ã®ãƒ«ãƒ¼ãƒ«ã«æº–æ‹ ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ルールã«æº–æ‹ ã—ã¦ã„ãªã„プロシージャã¯ã€Hibernateã§ä½¿ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + ãã‚Œã§ã‚‚ã€æº–æ‹ ã—ã¦ã„ãªã„プロシージャを使ã„ãŸã„ã®ã§ã‚ã‚Œã°ã€ + session.connection() を通ã˜ã¦å®Ÿè¡Œã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ルールã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã”ã¨ã«ç•°ãªã‚Šã¾ã™ã€‚ + ストアドプロシージャã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã¨ã‚·ãƒ³ã‚¿ãƒƒã‚¯ã‚¹ã¯ã€ + データベースベンダã”ã¨ã«ç•°ãªã‚‹ãŸã‚ã§ã™ã€‚ - setFirstResult()/setMaxResults() ‚ðŽg‚Á‚ÄA - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒƒNƒGƒŠ‚ðƒy[ƒW•ª‚¯‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB + setFirstResult()/setMaxResults() を使ã£ã¦ã€ + ストアドプロシージャクエリをページ分ã‘ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - „§‚·‚éŒÄ‚Ño‚µ•û‚ÍA•W€‚Å‚ ‚éSQL92‚É]‚¤‚±‚Æ‚Å‚·B - { ? = call functionName(<parameters>) } ‚â - { ? = call procedureName(<parameters>) } ‚Å‚·B - ƒlƒCƒeƒBƒu‚ȌĂÑo‚µ\•¶‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB + 推奨ã™ã‚‹å‘¼ã³å‡ºã—æ–¹ã¯ã€æ¨™æº–ã§ã‚ã‚‹SQL92ã«å¾“ã†ã“ã¨ã§ã™ã€‚ + { ? = call functionName(<parameters>) } ã‚„ + { ? = call procedureName(<parameters>) } ã§ã™ã€‚ + ãƒã‚¤ãƒ†ã‚£ãƒ–ãªå‘¼ã³å‡ºã—構文ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 - Oracle‚ɂ͉º‹L‚̃‹[ƒ‹‚ª“K—p‚³‚ê‚Ü‚·B + Oracleã«ã¯ä¸‹è¨˜ã®ãƒ«ãƒ¼ãƒ«ãŒé©ç”¨ã•ã‚Œã¾ã™ã€‚ - ŠÖ”‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ƒvƒƒV[ƒWƒƒ‚Ì‘æˆêˆø”‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚·‚½‚ßA - OUT ‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Oracle 9‚Æ10‚Å‚ÍASYS_REFCURSOR ‚ðŽg‚¤‚±‚Æ‚É‚æ‚Á‚Ä‚Å‚«‚Ü‚·B - Oracle‚Å‚Í REF CURSOR Œ^‚ð’è‹`‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - Oracle‚Ì•¶Œ£‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 関数ã¯ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’è¿”ã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + プロシージャã®ç¬¬ä¸€å¼•æ•°ã¯ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’è¿”ã™ãŸã‚〠+ OUT ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Oracle 9ã¨10ã§ã¯ã€SYS_REFCURSOR を使ã†ã“ã¨ã«ã‚ˆã£ã¦ã§ãã¾ã™ã€‚ + Oracleã§ã¯ REF CURSOR 型を定義ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Oracleã®æ–‡çŒ®ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - Sybase‚ÆMS SQLƒT[ƒo[‚É“K—p‚³‚ê‚郋[ƒ‹‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + Sybaseã¨MS SQLサーãƒãƒ¼ã«é©ç”¨ã•ã‚Œã‚‹ãƒ«ãƒ¼ãƒ«ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ - ƒvƒƒV[ƒWƒƒ‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ƒT[ƒo[‚Í•¡”‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚ÆXVƒJƒEƒ“ƒg‚ð•Ô‚µ‚Ü‚·‚ªA - Hibernate‚Í1‚–ڂ̃ŠƒUƒ‹ƒgƒZƒbƒg‚¾‚¯‚ð•Ô‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚»‚Ì‘¼‚Í‚·‚ׂĎ̂Ăç‚ê‚Ü‚·B + プロシージャã¯ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’è¿”ã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + サーãƒãƒ¼ã¯è¤‡æ•°ã®ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã¨æ›´æ–°ã‚«ã‚¦ãƒ³ãƒˆã‚’è¿”ã—ã¾ã™ãŒã€ + Hibernateã¯1ã¤ç›®ã®ãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã ã‘ã‚’è¿”ã™ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ãã®ä»–ã¯ã™ã¹ã¦æ¨ã¦ã‚‰ã‚Œã¾ã™ã€‚ - ƒvƒƒV[ƒWƒƒ‚Ì’†‚Å SET NOCOUNT ON ‚ð—LŒø‚É‚Å‚«‚ê‚ÎA - ‚¨‚»‚ç‚­Œø—¦‚ª‚æ‚­‚È‚é‚Å‚µ‚傤B - ‚µ‚©‚µA‚±‚ê‚Í•K—vðŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + プロシージャã®ä¸­ã§ SET NOCOUNT ON を有効ã«ã§ãã‚Œã°ã€ + ãŠãらã効率ãŒã‚ˆããªã‚‹ã§ã—ょã†ã€‚ + ã—ã‹ã—ã€ã“ã‚Œã¯å¿…è¦æ¡ä»¶ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 @@ -597,15 +599,15 @@ BEGIN - ì¬AXVA휂̂½‚߂̃JƒXƒ^ƒ€SQL + 作æˆã€æ›´æ–°ã€å‰Šé™¤ã®ãŸã‚ã®ã‚«ã‚¹ã‚¿ãƒ SQL - Hibernate3‚Íì¬AXVA휈—‚Ì‚½‚߂̃JƒXƒ^ƒ€SQL•¶‚ðŽg—p‚Å‚«‚Ü‚·B - ƒNƒ‰ƒX‚ƃRƒŒƒNƒVƒ‡ƒ“‚̉i‘±‰»‹@\‚ÍAƒRƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“Žž‚ɶ¬‚³‚ꂽ•¶Žš—ñ - iinsertsqlAdeletesqlAupdatesql‚È‚Çj‚̃Zƒbƒg‚ð‚·‚Å‚É•ÛŽ‚µ‚Ä‚¢‚Ü‚·B - ‚±‚ê‚ç‚Ì•¶Žš—ñ‚æ‚èA - <sql-insert>A - <sql-delete>A - <sql-update> ‚Æ‚¢‚¤ƒ}ƒbƒsƒ“ƒOƒ^ƒO‚ª—D悳‚ê‚Ü‚·B + Hibernate3ã¯ä½œæˆã€æ›´æ–°ã€å‰Šé™¤å‡¦ç†ã®ãŸã‚ã®ã‚«ã‚¹ã‚¿ãƒ SQL文を使用ã§ãã¾ã™ã€‚ + クラスã¨ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æ°¸ç¶šåŒ–機構ã¯ã€ã‚³ãƒ³ãƒ•ã‚£ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³æ™‚ã«ç”Ÿæˆã•ã‚ŒãŸæ–‡å­—列 + (insertsqlã€deletesqlã€updatesqlãªã©ï¼‰ã®ã‚»ãƒƒãƒˆã‚’ã™ã§ã«ä¿æŒã—ã¦ã„ã¾ã™ã€‚ + ã“れらã®æ–‡å­—列より〠+ <sql-insert>〠+ <sql-delete>〠+ <sql-update> ã¨ã„ã†ãƒžãƒƒãƒ”ングタグãŒå„ªå…ˆã•ã‚Œã¾ã™ã€‚ @@ -617,11 +619,11 @@ BEGIN DELETE FROM PERSON WHERE ID=? ]]> - SQL‚ð’¼Úƒf[ƒ^ƒx[ƒX‚ÅŽÀs‚·‚邽‚ßAD‚Ý‚Ì•ûŒ¾‚ðŽ©—R‚ÉŽg—p‚Å‚«‚Ü‚·B - ƒf[ƒ^ƒx[ƒX“ÆŽ©‚ÌSQL‚ðŽg‚¦‚ÎA“–‘Rƒ}ƒbƒsƒ“ƒO‚̃|[ƒ^ƒrƒŠƒeƒB‚ª‰º‚ª‚è‚Ü‚·B + SQLを直接データベースã§å®Ÿè¡Œã™ã‚‹ãŸã‚ã€å¥½ã¿ã®æ–¹è¨€ã‚’自由ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ + データベース独自ã®SQLを使ãˆã°ã€å½“然マッピングã®ãƒãƒ¼ã‚¿ãƒ“リティãŒä¸‹ãŒã‚Šã¾ã™ã€‚ - callable ‘®«‚ðƒZƒbƒg‚·‚ê‚ÎA - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg—p‚Å‚«‚Ü‚·B + callable 属性をセットã™ã‚Œã°ã€ + ストアドプロシージャを使用ã§ãã¾ã™ã€‚ @@ -633,21 +635,21 @@ BEGIN {? = call updatePerson (?, ?)} ]]> - ¡‚Ì‚Æ‚±‚ëAˆÊ’uƒpƒ‰ƒ[ƒ^‚̇”Ô‚Í‚Æ‚Ä‚àd—v‚Å‚·B - ‚·‚È‚í‚¿AHibernate‚ªŠú‘Ò‚·‚釘‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + 今ã®ã¨ã“ã‚ã€ä½ç½®ãƒ‘ラメータã®é †ç•ªã¯ã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚ + ã™ãªã‚ã¡ã€HibernateãŒæœŸå¾…ã™ã‚‹é †åºã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - org.hiberante.persister.entity ƒŒƒxƒ‹‚̃fƒoƒbƒOƒƒO‚ð - —LŒø‚É‚·‚邱‚Æ‚É‚æ‚Á‚ÄAŠú‘Ò‚³‚ê‚釔ԂðŠm‚©‚ß‚ç‚ê‚Ü‚·B - ‚±‚̃Œƒxƒ‹‚ð—LŒø‚É‚·‚邱‚Æ‚É‚æ‚èAƒGƒ“ƒeƒBƒeƒB‚Ìì¬AXVA휂ȂǂŠ- Žg—p‚³‚ê‚éÓI‚ÈSQL‚ªo—Í‚³‚ê‚Ü‚·B - iŠú‘Ò‚³‚ê‚釘‚ðŠm”F‚·‚邽‚ß‚É‚ÍAHibernate‚ª¶¬‚·‚éÓI‚ÈSQL‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚é - ƒJƒXƒ^ƒ€SQL‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚È‚¢‚±‚Æ‚ð–Y‚ê‚È‚¢‚Å‚­‚¾‚³‚¢Bj + org.hiberante.persister.entity レベルã®ãƒ‡ãƒãƒƒã‚°ãƒ­ã‚°ã‚’ + 有効ã«ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€æœŸå¾…ã•ã‚Œã‚‹é †ç•ªã‚’確ã‹ã‚られã¾ã™ã€‚ + ã“ã®ãƒ¬ãƒ™ãƒ«ã‚’有効ã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ä½œæˆã€æ›´æ–°ã€å‰Šé™¤ãªã©ã§ + 使用ã•ã‚Œã‚‹é™çš„ãªSQLãŒå‡ºåŠ›ã•ã‚Œã¾ã™ã€‚ + (期待ã•ã‚Œã‚‹é †åºã‚’確èªã™ã‚‹ãŸã‚ã«ã¯ã€HibernateãŒç”Ÿæˆã™ã‚‹é™çš„ãªSQLをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ + カスタムSQLをマッピングファイルã«å«ã‚ãªã„ã“ã¨ã‚’忘れãªã„ã§ãã ã•ã„。) - ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Í‘}“ü/XV/휂³‚ꂽs”‚ð•Ô‚·•K—v‚ª‚ ‚è‚Ü‚· - i“Ç‚Ýž‚Ý‚ÌꇂÍA•Ô‚³‚È‚¢‚æ‚è‚Í•Ô‚·•û‚ª‚æ‚¢‚Å‚·jB - ŽÀsŽž‚ÉHibernate‚ªSQL•¶‚̬Œ÷‚ðƒ`ƒFƒbƒN‚·‚é‚©‚ç‚Å‚·B - Hibernate‚ÍACUDˆ—‚Ì‚½‚ß‚Ì”’l‚Ìo—̓pƒ‰ƒ[ƒ^‚Æ‚µ‚ÄA - SQL•¶‚Ìʼn‚̃pƒ‰ƒ[ƒ^‚ð‚¢‚Â‚à‹L˜^‚µ‚Ü‚·B + ストアドプロシージャã¯æŒ¿å…¥/æ›´æ–°/削除ã•ã‚ŒãŸè¡Œæ•°ã‚’è¿”ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ + (読ã¿è¾¼ã¿ã®å ´åˆã¯ã€è¿”ã•ãªã„よりã¯è¿”ã™æ–¹ãŒã‚ˆã„ã§ã™ï¼‰ã€‚ + 実行時ã«HibernateãŒSQLæ–‡ã®æˆåŠŸã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‹ã‚‰ã§ã™ã€‚ + Hibernateã¯ã€CUD処ç†ã®ãŸã‚ã®æ•°å€¤ã®å‡ºåŠ›ãƒ‘ラメータã¨ã—ã¦ã€ + SQLæ–‡ã®æœ€åˆã®ãƒ‘ラメータをã„ã¤ã‚‚記録ã—ã¾ã™ã€‚ - ƒ[ƒh‚Ì‚½‚߂̃JƒXƒ^ƒ€SQL + ロードã®ãŸã‚ã®ã‚«ã‚¹ã‚¿ãƒ SQL - ƒGƒ“ƒeƒBƒeƒB‚ð“Ç‚Ýž‚Þ‚½‚ß‚Ì“ÆŽ©‚ÌSQLi‚à‚µ‚­‚ÍHQLjƒNƒGƒŠ‚à錾‚Å‚«‚Ü‚·B + エンティティを読ã¿è¾¼ã‚€ãŸã‚ã®ç‹¬è‡ªã®SQL(もã—ãã¯HQL)クエリも宣言ã§ãã¾ã™ã€‚ @@ -677,8 +679,8 @@ END updatePerson;]]> FOR UPDATE ]]> - ‚±‚ê‚ÍA‚Ü‚³‚ÉiˆÈ‘O‹c˜_‚µ‚½j–¼‘O•t‚«ƒNƒGƒŠ‚Ì錾‚Å‚·B - ‚±‚Ì–¼‘O•t‚«ƒNƒGƒŠ‚ðƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚©‚çŽQÆ‚Å‚«‚Ü‚·B + ã“ã‚Œã¯ã€ã¾ã•ã«ï¼ˆä»¥å‰è­°è«–ã—ãŸï¼‰åå‰ä»˜ãクエリã®å®£è¨€ã§ã™ã€‚ + ã“ã®åå‰ä»˜ãクエリをクラスã®ãƒžãƒƒãƒ”ングã‹ã‚‰å‚ç…§ã§ãã¾ã™ã€‚ @@ -689,9 +691,9 @@ END updatePerson;]]> ]]> - ‚±‚ê‚̓XƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Å‚³‚¦‚à“®ì‚µ‚Ü‚·B + ã“ã‚Œã¯ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ロシージャã§ã•ãˆã‚‚動作ã—ã¾ã™ã€‚ - ŽŸ‚̂悤‚ÉAƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ[ƒh‚·‚邽‚߂̃NƒGƒŠ‚³‚¦’è‹`‚µ‚Ä‚æ‚¢‚Å‚·B + 次ã®ã‚ˆã†ã«ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ロードã™ã‚‹ãŸã‚ã®ã‚¯ã‚¨ãƒªã•ãˆå®šç¾©ã—ã¦ã‚ˆã„ã§ã™ã€‚ @@ -707,8 +709,8 @@ END updatePerson;]]> ORDER BY STARTDATE ASC, EMPLOYEE ASC ]]> - ŽŸ‚̂悤‚ÉAŒ‹‡ƒtƒFƒbƒ`‚É‚æ‚èƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ[ƒh‚·‚é - ƒGƒ“ƒeƒBƒeƒBƒ[ƒ_[‚ð’è‹`‚Å‚«‚Ü‚·B + 次ã®ã‚ˆã†ã«ã€çµåˆãƒ•ã‚§ãƒƒãƒã«ã‚ˆã‚Šã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ロードã™ã‚‹ + エンティティローダーを定義ã§ãã¾ã™ã€‚ @@ -721,4 +723,4 @@ END updatePerson;]]> ]]> - \ No newline at end of file + diff --git a/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml b/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml index ab2ea5f489..3267925d93 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml @@ -1,81 +1,83 @@ - + + + - ƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤ + オブジェクトを扱ㆠ- Hibernate ‚ÍŠ®‘S‚ȃIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOƒ\ƒŠƒ…[ƒVƒ‡ƒ“‚Å‚ ‚èA - ƒf[ƒ^ƒx[ƒXŠÇ—ƒVƒXƒeƒ€‚ÌÚׂðŠJ”­ŽÒ‚©‚ç‰B•Á‚·‚邾‚¯‚Å‚È‚­A ƒIƒuƒWƒFƒNƒg‚Ì ó‘ÔŠÇ— ‚às‚¢‚Ü‚·B - ‚±‚ê‚ÍAJDBC/SQL‰i‘±‘w‚Æ“¯‚¶‚悤‚ÈSQL •¶ ‚ÌŠÇ—‚Ƃ͈قȂèA - JavaƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¯‚é‰i‘±‰»‚ɑ΂·‚éA‚Æ‚Ä‚àŽ©‘R‚ȃIƒuƒWƒFƒNƒgŽwŒü‚Ìl‚¦•û‚ð’ñ‹Ÿ‚µ‚Ü‚·B + Hibernate ã¯å®Œå…¨ãªã‚ªãƒ–ジェクト/リレーショナルマッピングソリューションã§ã‚り〠+ データベース管ç†ã‚·ã‚¹ãƒ†ãƒ ã®è©³ç´°ã‚’開発者ã‹ã‚‰éš è”½ã™ã‚‹ã ã‘ã§ãªãã€ ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã® çŠ¶æ…‹ç®¡ç† ã‚‚è¡Œã„ã¾ã™ã€‚ + ã“ã‚Œã¯ã€JDBC/SQL永続層ã¨åŒã˜ã‚ˆã†ãªSQL æ–‡ ã®ç®¡ç†ã¨ã¯ç•°ãªã‚Šã€ + Javaアプリケーションã«ãŠã‘る永続化ã«å¯¾ã™ã‚‹ã€ã¨ã¦ã‚‚自然ãªã‚ªãƒ–ジェクト指å‘ã®è€ƒãˆæ–¹ã‚’æä¾›ã—ã¾ã™ã€‚ - Œ¾‚¢‚©‚¦‚ê‚ÎAHibernate‚ð—p‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚ÍAƒIƒuƒWƒFƒNƒg‚Ì ó‘Ô ‚ɂ‚¢‚Ä‚Í - í‚Ɉӎ¯‚·‚ׂ«‚Å‚ ‚èASQL•¶‚ÌŽÀs‚ɂ‚¢‚Ä‚Í•K‚¸‚µ‚à‚»‚¤‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ‚±‚Ì•”•ª‚ÍA’ÊíAHibernate‚ªˆ—‚µAƒVƒXƒeƒ€‚̃pƒtƒH[ƒ}ƒ“ƒX‚ðƒ`ƒ…[ƒjƒ“ƒO‚·‚é‚Æ‚«‚É‚¾‚¯A –â‘è‚É‚È‚Á‚Ä‚«‚Ü‚·B + 言ã„ã‹ãˆã‚Œã°ã€Hibernateを用ã„るアプリケーション開発者ã¯ã€ã‚ªãƒ–ジェクト㮠状態 ã«ã¤ã„ã¦ã¯ + 常ã«æ„è­˜ã™ã¹ãã§ã‚ã‚Šã€SQLæ–‡ã®å®Ÿè¡Œã«ã¤ã„ã¦ã¯å¿…ãšã—ã‚‚ãã†ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã“ã®éƒ¨åˆ†ã¯ã€é€šå¸¸ã€HibernateãŒå‡¦ç†ã—ã€ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ‘フォーマンスをãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ã™ã‚‹ã¨ãã«ã ã‘〠å•é¡Œã«ãªã£ã¦ãã¾ã™ã€‚ - Hibernate‚É‚¨‚¯‚éƒIƒuƒWƒFƒNƒg‚Ìó‘Ô + Hibernateã«ãŠã‘るオブジェクトã®çŠ¶æ…‹ - Hibernate‚ÍŽŸ‚̂悤‚ȃIƒuƒWƒFƒNƒg‚Ìó‘Ô‚ð’è‹`‚µAƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B + Hibernateã¯æ¬¡ã®ã‚ˆã†ãªã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã‚’定義ã—ã€ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ - ˆêŽž“I(Transient) - new - ‰‰ŽZŽq‚ðŽg‚Á‚Ä ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚¾‚¯‚ÅA Hibernate‚Ì Session - ‚ÉŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚È‚¢ƒIƒuƒWƒFƒNƒg‚ÍA ˆêŽž“I(transient)‚Å‚·B - ‚»‚ê‚ÍAƒf[ƒ^ƒx[ƒX‚ɉi‘±“I‚È•\Œ»‚ðŽ‚½‚¸AŽ¯•ÊŽq‚Æ‚È‚é’l‚ÍŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚Ü‚¹‚ñB - ˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚»‚ÌŽQÆ‚ð‚Ç‚±‚É‚à•ÛŽ‚µ‚È‚¢ê‡‚ÉA ƒKƒx[ƒWƒRƒŒƒNƒ^‚É‚æ‚Á‚Ä”jŠü‚³‚ê‚Ü‚·B - ƒIƒuƒWƒFƒNƒg‚ð‰i‘±“I(persistent)‚Èó‘Ô‚É‚·‚邽‚ß‚É‚ÍAHibernate‚Ì - Session ‚ðŽg‚¢‚Ü‚µ‚傤B - i‚±‚Ìó‘Ô‘JˆÚ‚É•K—v‚Æ‚È‚éSQL•¶‚Ì”­s‚ÍAHibernate‚É”C‚¹‚Ü‚µ‚傤Bj + 一時的(Transient) - new + 演算å­ã‚’使ã£ã¦ インスタンス化ã•ã‚ŒãŸã ã‘ã§ã€ Hibernateã® Session + ã«é–¢é€£ä»˜ã‘られã¦ã„ãªã„オブジェクトã¯ã€ 一時的(transient)ã§ã™ã€‚ + ãã‚Œã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ°¸ç¶šçš„ãªè¡¨ç¾ã‚’æŒãŸãšã€è­˜åˆ¥å­ã¨ãªã‚‹å€¤ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。 + 一時的ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ã‚¢ãƒ—リケーションãŒãã®å‚照をã©ã“ã«ã‚‚ä¿æŒã—ãªã„å ´åˆã«ã€ ガベージコレクタã«ã‚ˆã£ã¦ç ´æ£„ã•ã‚Œã¾ã™ã€‚ + オブジェクトを永続的(persistent)ãªçŠ¶æ…‹ã«ã™ã‚‹ãŸã‚ã«ã¯ã€Hibernateã® + Session を使ã„ã¾ã—ょã†ã€‚ + (ã“ã®çŠ¶æ…‹é·ç§»ã«å¿…è¦ã¨ãªã‚‹SQLæ–‡ã®ç™ºè¡Œã¯ã€Hibernateã«ä»»ã›ã¾ã—ょã†ã€‚) - ‰i‘±“I(Persistent) - - ‰i‘±“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚̓f[ƒ^ƒx[ƒX‚É ‰i‘±“I‚È•\Œ»‚ðŽ‚¿AŽ¯•ÊŽq‚Æ‚È‚é’l‚ðŽ‚Á‚Ä‚¢‚Ü‚·B - ‚»‚ê‚ÍAƒZ[ƒu‚³‚ꂽ‚èAƒ[ƒh‚³‚ꂽ‚è‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA - ’è‹`ã‚ÍA Session ‚̃XƒR[ƒv‚Ì’†‚É‘¶Ý‚µ‚Ä‚¢‚Ü‚·B - Hibernate‚ÍAì‹Æ’PˆÊiUnit of workj‚ªŠ®—¹‚µ‚½‚Æ‚«‚ÉA ‰i‘±ó‘Ԃ̃IƒuƒWƒFƒNƒg‚ɉÁ‚¦‚ç‚ꂽ•ÏX‚ðŒŸo‚µA - ƒIƒuƒWƒFƒNƒg‚Ìó‘Ԃƃf[ƒ^ƒx[ƒX‚𓯊ú‚µ‚Ü‚·B ƒIƒuƒWƒFƒNƒg‚ðˆêŽž“I(transient)‚É‚·‚é‚Æ‚«‚ÍAŠJ”­ŽÒ‚ÍAŽèì‹Æ‚Å - UPDATE •¶‚â DELETE - •¶‚ðŽÀs‚µ‚Ü‚¹‚ñB + 永続的(Persistent) - + 永続的ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã« 永続的ãªè¡¨ç¾ã‚’æŒã¡ã€è­˜åˆ¥å­ã¨ãªã‚‹å€¤ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + ãã‚Œã¯ã€ã‚»ãƒ¼ãƒ–ã•ã‚ŒãŸã‚Šã€ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸã‚Šã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€ + 定義上ã¯ã€ Session ã®ã‚¹ã‚³ãƒ¼ãƒ—ã®ä¸­ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ + Hibernateã¯ã€ä½œæ¥­å˜ä½ï¼ˆUnit of work)ãŒå®Œäº†ã—ãŸã¨ãã«ã€ 永続状態ã®ã‚ªãƒ–ジェクトã«åŠ ãˆã‚‰ã‚ŒãŸå¤‰æ›´ã‚’検出ã—〠+ オブジェクトã®çŠ¶æ…‹ã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæœŸã—ã¾ã™ã€‚ オブジェクトを一時的(transient)ã«ã™ã‚‹ã¨ãã¯ã€é–‹ç™ºè€…ã¯ã€æ‰‹ä½œæ¥­ã§ + UPDATE 文や DELETE + 文を実行ã—ã¾ã›ã‚“。 - •ª—£(Detached) - •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‚ÍA‰i‘±‰»‚³‚ê‚Ä‚¢‚邪A - ‚»‚ê‚ÆŠÖ˜A•t‚¢‚Ä‚¢‚½ Session ‚ªƒNƒ[ƒY‚³‚ê‚Ä‚¢‚éƒIƒuƒWƒFƒNƒg‚Ì‚±‚Æ‚Å‚·B - ‚»‚̃IƒuƒWƒFƒNƒg‚Ö‚ÌŽQÆ‚ÍAˆË‘R‚Æ‚µ‚Ä—LŒø‚Å‚·B - ‚»‚µ‚ÄA‚à‚¿‚ë‚ñA•ª—£‚³‚ꂽó‘Ô‚É‚ ‚éƒIƒuƒWƒFƒNƒg‚ÍAC³‚·‚邱‚Æ‚³‚¦‚Å‚«‚Ü‚·B - •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA‚à‚¤ˆê“x‰i‘±‰»‚µ‚½‚¢i‚»‚µ‚ÄA‚·‚ׂĂ̕ÏX‚ð‰i‘±‰»‚µ‚½‚¢j‚Æ‚«‚ÉA V‚µ‚¢ - Session ‚ÉĒljÁ‚Å‚«‚Ü‚·B - ‚±‚Ì‹@”\‚ÍAƒ†[ƒU‚ªl‚¦‚鎞ŠÔ‚ð•K—v‚Æ‚·‚é‚悤‚ÈA’·ŠúŠÔ‚É‹y‚Ôì‹Æ’PˆÊ‚ɑ΂·‚é ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚ð‰Â”\‚É‚µ‚Ü‚·B - ‰äX‚ÍA‚±‚ê‚ð ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iapplication - transactionsj ‚ƌĂñ‚Å‚¢‚Ü‚·B ‚·‚È‚í‚¿Aƒ†[ƒU‚©‚猩‚½ì‹Æ’PˆÊ‚¾‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + 分離(Detached) - 分離ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã¯ã€æ°¸ç¶šåŒ–ã•ã‚Œã¦ã„ã‚‹ãŒã€ + ãã‚Œã¨é–¢é€£ä»˜ã„ã¦ã„㟠Session ãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚Œã¦ã„るオブジェクトã®ã“ã¨ã§ã™ã€‚ + ãã®ã‚ªãƒ–ジェクトã¸ã®å‚ç…§ã¯ã€ä¾ç„¶ã¨ã—ã¦æœ‰åŠ¹ã§ã™ã€‚ + ãã—ã¦ã€ã‚‚ã¡ã‚ã‚“ã€åˆ†é›¢ã•ã‚ŒãŸçŠ¶æ…‹ã«ã‚るオブジェクトã¯ã€ä¿®æ­£ã™ã‚‹ã“ã¨ã•ãˆã§ãã¾ã™ã€‚ + 分離ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ã‚‚ã†ä¸€åº¦æ°¸ç¶šåŒ–ã—ãŸã„(ãã—ã¦ã€ã™ã¹ã¦ã®å¤‰æ›´ã‚’永続化ã—ãŸã„)ã¨ãã«ã€ æ–°ã—ã„ + Session ã«å†è¿½åŠ ã§ãã¾ã™ã€‚ + ã“ã®æ©Ÿèƒ½ã¯ã€ãƒ¦ãƒ¼ã‚¶ãŒè€ƒãˆã‚‹æ™‚é–“ã‚’å¿…è¦ã¨ã™ã‚‹ã‚ˆã†ãªã€é•·æœŸé–“ã«åŠã¶ä½œæ¥­å˜ä½ã«å¯¾ã™ã‚‹ プログラミングモデルをå¯èƒ½ã«ã—ã¾ã™ã€‚ + 我々ã¯ã€ã“れを アプリケーションã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆapplication + transactions) ã¨å‘¼ã‚“ã§ã„ã¾ã™ã€‚ ã™ãªã‚ã¡ã€ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰è¦‹ãŸä½œæ¥­å˜ä½ã ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - ‚±‚ê‚©‚çAó‘Ô‚Æó‘Ô‘JˆÚi‚»‚µ‚ÄA‘JˆÚ‚Ì‚«‚Á‚©‚¯‚Æ‚È‚éHibernate‚̃ƒ\ƒbƒhj‚ɂ‚¢‚Ä AÚׂÉq‚ׂ܂·B + ã“ã‚Œã‹ã‚‰ã€çŠ¶æ…‹ã¨çŠ¶æ…‹é·ç§»ï¼ˆãã—ã¦ã€é·ç§»ã®ãã£ã‹ã‘ã¨ãªã‚‹Hibernateã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼‰ã«ã¤ã„㦠ã€è©³ç´°ã«è¿°ã¹ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ð‰i‘±ó‘Ô‚É‚·‚é + オブジェクトを永続状態ã«ã™ã‚‹ - V‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA Hibernate‚Å‚Í - ˆêŽž“I(transient) ‚ÆŒ©‚È‚³‚ê‚Ü‚·B - ˆÈ‰º‚̂悤‚ÉAƒZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A‚¯‚邱‚Æ‚ÅAˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ð - ‰i‘±ó‘Ô(persistent) ‚É‚Å‚«‚Ü‚·B + æ–°ã—ãインスタンス化ã•ã‚ŒãŸæ°¸ç¶šã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ Hibernateã§ã¯ + 一時的(transient) ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ + 以下ã®ã‚ˆã†ã«ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¨é–¢é€£ã¥ã‘ã‚‹ã“ã¨ã§ã€ä¸€æ™‚çš„ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’ + 永続状態(persistent) ã«ã§ãã¾ã™ã€‚ @@ -86,18 +88,18 @@ fritz.setName("Fritz"); Long generatedId = (Long) sess.save(fritz);]]> - Cat ƒNƒ‰ƒX‚ÌŽ¯•ÊŽq‚ªŽ©“®¶¬‚³‚ê‚é‚Ì‚Å‚ ‚ê‚ÎA - save() ‚ªŒÄ‚΂ê‚é‚Æ‚«‚ÉA Ž¯•ÊŽq‚ª¶¬‚³‚êA cat - ƒCƒ“ƒXƒ^ƒ“ƒX‚ÉŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B Cat - ‚ÌŽ¯•ÊŽq‚ª‘¼‚©‚犄‚è“–‚Ä‚ç‚ê‚éi assigned Ž¯•ÊŽq‚ðŽ‚Âj‚©A•¡‡ƒL[‚Å‚ ‚é‚È‚çA - save() ‚ðŒÄ‚Ño‚·‘O‚ÉAŽ¯•ÊŽq‚ðŠ„‚è“–‚Ä‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - save() ‚Ì‘ã‚í‚è‚ÉAEJB3 ‚̉Šúƒhƒ‰ƒtƒg‚Å’è‹`‚³‚ꂽ - persist() ‚ðŽg‚¤‚±‚Æ‚à‰Â”\‚Å‚·B + Cat クラスã®è­˜åˆ¥å­ãŒè‡ªå‹•ç”Ÿæˆã•ã‚Œã‚‹ã®ã§ã‚ã‚Œã°ã€ + save() ãŒå‘¼ã°ã‚Œã‚‹ã¨ãã«ã€ 識別å­ãŒç”Ÿæˆã•ã‚Œã€ cat + インスタンスã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚ Cat + ã®è­˜åˆ¥å­ãŒä»–ã‹ã‚‰å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã‚‹ï¼ˆ assigned 識別å­ã‚’æŒã¤ï¼‰ã‹ã€è¤‡åˆã‚­ãƒ¼ã§ã‚ã‚‹ãªã‚‰ã€ + save() を呼ã³å‡ºã™å‰ã«ã€è­˜åˆ¥å­ã‚’割り当ã¦ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + save() ã®ä»£ã‚ã‚Šã«ã€EJB3 ã®åˆæœŸãƒ‰ãƒ©ãƒ•ãƒˆã§å®šç¾©ã•ã‚ŒãŸ + persist() を使ã†ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ - ‘ã‚í‚è‚ÉAŽ¯•ÊŽq‚ðˆø”‚É‚Æ‚é save() - ƒƒ\ƒbƒh‚ðŽg‚Á‚ÄA Ž¯•ÊŽq‚ðŠ„‚è“–‚Ă邱‚Æ‚à‚Å‚«‚Ü‚·B + 代ã‚ã‚Šã«ã€è­˜åˆ¥å­ã‚’引数ã«ã¨ã‚‹ save() + メソッドを使ã£ã¦ã€ 識別å­ã‚’割り当ã¦ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ @@ -110,29 +112,29 @@ pk.addKitten(fritz); sess.save( pk, new Long(1234) );]]> - ‰i‘±‰»‚·‚éƒIƒuƒWƒFƒNƒg‚ªŠÖ˜AƒIƒuƒWƒFƒNƒg‚ðŽ‚Á‚Ä‚¢‚éê‡ i—Ⴆ‚ÎA‘O‚Ì—á‚É‚¨‚¯‚é - kittens ƒRƒŒƒNƒVƒ‡ƒ“‚̂悤‚ÉjA ŠO•”ƒL[ƒJƒ‰ƒ€‚ÉA NOT - NULL §–ñ‚ð‚‚¯‚È‚¢ŒÀ‚è‚ÍA ‚±‚ê‚ç‚̈ê˜A‚̃IƒuƒWƒFƒNƒg‚ð‚Ç‚ñ‚ȇ”Ԃʼni‘±‰»‚µ‚Ä‚à‚©‚Ü‚¢‚Ü‚¹‚ñB - ŠO•”ƒL[§–ñ‚ðˆá”½‚·‚é‹°‚ê‚Í‚ ‚è‚Ü‚¹‚ñB ‚µ‚©‚µA NOT NULL - §–ñ‚ª‚ ‚éê‡AŠÔˆá‚Á‚½‡”ԂŃIƒuƒWƒFƒNƒg‚ð save() ‚µ‚Ä‚µ‚Ü‚¤‚ÆA - §–ñ‚Ɉᔽ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + 永続化ã™ã‚‹ã‚ªãƒ–ジェクトãŒé–¢é€£ã‚ªãƒ–ジェクトをæŒã£ã¦ã„ã‚‹å ´åˆ ï¼ˆä¾‹ãˆã°ã€å‰ã®ä¾‹ã«ãŠã‘ã‚‹ + kittens コレクションã®ã‚ˆã†ã«ï¼‰ã€ 外部キーカラムã«ã€ NOT + NULL 制約をã¤ã‘ãªã„é™ã‚Šã¯ã€ ã“れらã®ä¸€é€£ã®ã‚ªãƒ–ジェクトをã©ã‚“ãªé †ç•ªã§æ°¸ç¶šåŒ–ã—ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“。 + 外部キー制約をé•åã™ã‚‹æã‚Œã¯ã‚ã‚Šã¾ã›ã‚“。 ã—ã‹ã—〠NOT NULL + 制約ãŒã‚ã‚‹å ´åˆã€é–“é•ã£ãŸé †ç•ªã§ã‚ªãƒ–ジェクトを save() ã—ã¦ã—ã¾ã†ã¨ã€ + 制約ã«é•åã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - ŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ðŽ©“®“I‚É•Û‘¶‚·‚éA Hibernate‚Ì ‘JˆÚ“I‚ȉi‘±‰»(transitive - persistence) ‹@”\‚ð Žg‚¤‚‚à‚è‚È‚ç‚ÎA‚»‚̂悤‚ÈÚׂð‹C‚É‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ‚»‚µ‚ÄA NOT NULL §–ñ‚̈ᔽ‚·‚ç‹N‚±‚è‚Ü‚¹‚ñB - Hibernate‚ª‚·‚ׂĖʓ|‚ð‚Ý‚Ä‚­‚ê‚Ü‚·B‘JˆÚ“I‚ȉi‘±‰»‚ÍA‚±‚Ì͂̌㔼‚É‘‚©‚ê‚Ä‚¢‚Ü‚·B + 関連ã™ã‚‹ã‚ªãƒ–ジェクトを自動的ã«ä¿å­˜ã™ã‚‹ã€ Hibernateã® é·ç§»çš„ãªæ°¸ç¶šåŒ–(transitive + persistence) 機能を 使ã†ã¤ã‚‚ã‚Šãªã‚‰ã°ã€ãã®ã‚ˆã†ãªè©³ç´°ã‚’æ°—ã«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ãã—ã¦ã€ NOT NULL 制約ã®é•åã™ã‚‰èµ·ã“ã‚Šã¾ã›ã‚“。 + HibernateãŒã™ã¹ã¦é¢å€’ã‚’ã¿ã¦ãã‚Œã¾ã™ã€‚é·ç§»çš„ãªæ°¸ç¶šåŒ–ã¯ã€ã“ã®ç« ã®å¾ŒåŠã«æ›¸ã‹ã‚Œã¦ã„ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚̃[ƒh + オブジェクトã®ãƒ­ãƒ¼ãƒ‰ - ‰i‘±‰»‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ÌŽ¯•ÊŽq‚ª‚ ‚ç‚©‚¶‚ß•ª‚©‚Á‚Ä‚¢‚é‚È‚çA Session ‚Ì - load() ƒƒ\ƒbƒh‚ðŽg‚Á‚ÄA•œŒ³‚Å‚«‚Ü‚·B load() - ‚ÍAClass ƒIƒuƒWƒFƒNƒg‚ðˆø”‚É‚Æ‚èA ‚»‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðV‚½‚ɶ¬‚µAó‘Ô‚ðƒ[ƒh‚µ‚Ü‚·B - ‚»‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ìó‘Ô‚ÍA‰i‘±(persistent)ó‘Ô‚Å‚·B + 永続化ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®è­˜åˆ¥å­ãŒã‚らã‹ã˜ã‚分ã‹ã£ã¦ã„ã‚‹ãªã‚‰ã€ Session ã® + load() メソッドを使ã£ã¦ã€å¾©å…ƒã§ãã¾ã™ã€‚ load() + ã¯ã€Class オブジェクトを引数ã«ã¨ã‚Šã€ ãã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ–°ãŸã«ç”Ÿæˆã—ã€çŠ¶æ…‹ã‚’ロードã—ã¾ã™ã€‚ + ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®çŠ¶æ…‹ã¯ã€æ°¸ç¶š(persistent)状態ã§ã™ã€‚ @@ -142,7 +144,7 @@ sess.save( pk, new Long(1234) );]]> long id = 1234; DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]> - ‚ ‚é‚¢‚ÍAˆÈ‰º‚̂悤‚ÉAŠù‘¶‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Éó‘Ô‚ðƒ[ƒh‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + ã‚ã‚‹ã„ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã€æ—¢å­˜ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«çŠ¶æ…‹ã‚’ロードã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - DB‚ÉŠY“–‚·‚és‚ª–³‚¢ê‡A load() ‚͉ñ•œ•s‰Â”\‚È—áŠO‚ð “Š‚°‚邱‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B - ‚»‚̃Nƒ‰ƒX‚ªƒvƒƒLƒV‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚éê‡A load() - ‚͉Šú‰»‚³‚ê‚Ä‚¢‚È‚¢ƒvƒƒLƒV‚ð•Ô‚µAƒvƒƒLƒV‚̃ƒ\ƒbƒh‚ªŒÄ‚΂ê‚é‚Ü‚ÅŽÀÛ‚É‚Í ƒf[ƒ^ƒx[ƒX‚ɃAƒNƒZƒX‚µ‚Ü‚¹‚ñB - ‚à‚µAŽÀۂɃf[ƒ^ƒx[ƒX‚©‚çƒ[ƒh‚¹‚¸‚ÉAƒIƒuƒWƒFƒNƒg‚ɑ΂·‚éŠÖ˜A‚ðì‚肽‚¢ê‡A ‚±‚ÌU‚é•‘‚¢‚Í‚Æ‚Ä‚à–𗧂¿‚Ü‚·B - batch-size ‚ªƒNƒ‰ƒXƒ}ƒbƒsƒ“ƒO‚É’è‹`‚³‚ê‚Ä‚¢‚é‚È‚ç‚ÎA - •¡”‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðˆêŠ‡‚Ń[ƒh‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B + DBã«è©²å½“ã™ã‚‹è¡ŒãŒç„¡ã„å ´åˆã€ load() ã¯å›žå¾©ä¸å¯èƒ½ãªä¾‹å¤–ã‚’ 投ã’ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†ã€‚ + ãã®ã‚¯ãƒ©ã‚¹ãŒãƒ—ロキシを使ã£ã¦ãƒžãƒƒãƒ”ングã•ã‚Œã¦ã„ã‚‹å ´åˆã€ load() + ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„プロキシを返ã—ã€ãƒ—ロキシã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã°ã‚Œã‚‹ã¾ã§å®Ÿéš›ã«ã¯ データベースã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã›ã‚“。 + ã‚‚ã—ã€å®Ÿéš›ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãƒ­ãƒ¼ãƒ‰ã›ãšã«ã€ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹é–¢é€£ã‚’作りãŸã„å ´åˆã€ ã“ã®æŒ¯ã‚‹èˆžã„ã¯ã¨ã¦ã‚‚役立ã¡ã¾ã™ã€‚ + batch-size ãŒã‚¯ãƒ©ã‚¹ãƒžãƒƒãƒ”ングã«å®šç¾©ã•ã‚Œã¦ã„ã‚‹ãªã‚‰ã°ã€ + 複数ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’一括ã§ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ - ŠY“–‚·‚és‚ª‘¶Ý‚·‚邱‚Æ‚ðŠmM‚Å‚«‚È‚¢ê‡‚ÍA get() ƒƒ\ƒbƒh‚ðŽg‚¤‚ׂ«‚Å‚·B - ‚»‚ê‚ÍAƒf[ƒ^ƒx[ƒX‚É‚·‚®‚ɃAƒNƒZƒX‚µAŠY“–‚·‚és‚ª–³‚¢ê‡‚Ínull‚ð•Ô‚µ‚Ü‚·B + 該当ã™ã‚‹è¡ŒãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã‚’確信ã§ããªã„å ´åˆã¯ã€ get() メソッドを使ã†ã¹ãã§ã™ã€‚ + ãã‚Œã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã™ãã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã€è©²å½“ã™ã‚‹è¡ŒãŒç„¡ã„å ´åˆã¯nullã‚’è¿”ã—ã¾ã™ã€‚ - LockMode ‚ðŽg‚¦‚ÎA - SELECT ... FOR UPDATE‚Æ‚¢‚¤SQL‚ð Žg‚Á‚ăIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ÚׂÈî•ñ‚ÍAAPIƒhƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + LockMode を使ãˆã°ã€ + SELECT ... FOR UPDATEã¨ã„ã†SQLã‚’ 使ã£ã¦ã‚ªãƒ–ジェクトをロードã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + 詳細ãªæƒ…å ±ã¯ã€APIドキュメントをå‚ç…§ã—ã¦ãã ã•ã„。 - ŠÖ˜A‚ɑ΂·‚éƒJƒXƒP[ƒh•û–@‚Æ‚µ‚Ä - lock ‚â all ‚ð - Žw’肵‚È‚¢ŒÀ‚èAŠÖ˜A‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚âŠÜ‚Ü‚ê‚éƒRƒŒƒNƒVƒ‡ƒ“‚Í FOR UPDATE ‚Å•œŒ³ - ‚³‚ê‚È‚¢ ‚±‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B + 関連ã«å¯¾ã™ã‚‹ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰æ–¹æ³•ã¨ã—㦠+ lock ã‚„ all ã‚’ + 指定ã—ãªã„é™ã‚Šã€é–¢é€£ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚„å«ã¾ã‚Œã‚‹ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ FOR UPDATE ã§å¾©å…ƒ + ã•ã‚Œãªã„ ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†ã€‚ - refresh() ƒƒ\ƒbƒh‚ðŽg‚¤‚±‚Æ‚ÅA‚Ç‚ñ‚È‚Æ‚«‚Å‚àAƒIƒuƒWƒFƒNƒg‚â‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ð - ƒŠƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B ƒf[ƒ^ƒx[ƒX‚̃gƒŠƒK‚ªƒe[ƒuƒ‹‚ðXV‚µ‚½Û‚ÉA - ‚»‚̃e[ƒuƒ‹‚ɑΉž‚·‚éƒIƒuƒWƒFƒNƒg‚̃vƒƒpƒeƒB‚𓯊ú‚·‚éê‡A‚±‚̃ƒ\ƒbƒh‚ª–ð‚É—§‚¿‚Ü‚·B + refresh() メソッドを使ã†ã“ã¨ã§ã€ã©ã‚“ãªã¨ãã§ã‚‚ã€ã‚ªãƒ–ジェクトやãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ + リロードã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ データベースã®ãƒˆãƒªã‚¬ãŒãƒ†ãƒ¼ãƒ–ルを更新ã—ãŸéš›ã«ã€ + ãã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾å¿œã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒ—ロパティをåŒæœŸã™ã‚‹å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå½¹ã«ç«‹ã¡ã¾ã™ã€‚ - ‘åØ‚È–â‘è‚ÍA‚¢‚Â‚àŽŸ‚Ì“_‚ÉŠÖ‚·‚é‚à‚Ì‚Å‚·B‚»‚ê‚ÍAHibernate‚ªƒf[ƒ^ƒx[ƒX‚©‚çA - ‚Ç‚Ì‚­‚ç‚¢‚̗ʂ𕜌³‚·‚é‚Ì‚©‚ÆA‚Ç‚Ì‚­‚ç‚¢‚Ì”‚ÌSQL‚Ì SELECT •¶‚ªŽg‚í‚ê‚é‚Ì‚©‚Å‚·B - ‚±‚ê‚ÍA ƒtƒFƒbƒ`‚Ìí—ª ‚É‚æ‚è‚Ü‚·B‚±‚ê‚ɂ‚¢‚Ä‚ÍA ‚Åà–¾‚µ‚Ä‚¢‚Ü‚·B + 大切ãªå•é¡Œã¯ã€ã„ã¤ã‚‚次ã®ç‚¹ã«é–¢ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ãã‚Œã¯ã€HibernateãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ã€ + ã©ã®ãらã„ã®é‡ã‚’復元ã™ã‚‹ã®ã‹ã¨ã€ã©ã®ãらã„ã®æ•°ã®SQLã® SELECT æ–‡ãŒä½¿ã‚れるã®ã‹ã§ã™ã€‚ + ã“ã‚Œã¯ã€ フェッãƒã®æˆ¦ç•¥ ã«ã‚ˆã‚Šã¾ã™ã€‚ã“ã‚Œã«ã¤ã„ã¦ã¯ã€ ã§èª¬æ˜Žã—ã¦ã„ã¾ã™ã€‚ - ƒNƒGƒŠ + クエリ - ’T‚µ‚½‚¢ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª•ª‚©‚ç‚È‚¢ê‡‚ÍAƒNƒGƒŠ‚ª•K—v‚É‚È‚è‚Ü‚·B - Hibernate‚ÍŽg‚¢‚â‚·‚­‚Ä‹­—͂ȃIƒuƒWƒFƒNƒgŽwŒü‚̃NƒGƒŠŒ¾Œê (HQL)‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - ƒvƒƒOƒ‰ƒ€‚É‚æ‚Á‚ăNƒGƒŠ‚ªì¬‚Å‚«‚é‚悤‚ÉAHibernate‚Íô—û‚³‚ꂽCriteria‚ÆExampleƒNƒGƒŠ‹@”\(QBC‚ÆQBEj‚ð - ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BResultSet‚ðƒIƒuƒWƒFƒNƒg‚É•ÏŠ·‚·‚éHibernate‚̃IƒvƒVƒ‡ƒ“‹@”\‚ðŽg‚¤‚±‚Æ‚ÅA - ƒf[ƒ^ƒx[ƒX‚̃lƒCƒeƒBƒu‚ÈSQL‚ŃNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + 探ã—ãŸã„オブジェクトã®è­˜åˆ¥å­ãŒåˆ†ã‹ã‚‰ãªã„å ´åˆã¯ã€ã‚¯ã‚¨ãƒªãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + Hibernateã¯ä½¿ã„ã‚„ã™ãã¦å¼·åŠ›ãªã‚ªãƒ–ジェクト指å‘ã®ã‚¯ã‚¨ãƒªè¨€èªž (HQL)をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + プログラムã«ã‚ˆã£ã¦ã‚¯ã‚¨ãƒªãŒä½œæˆã§ãるよã†ã«ã€Hibernateã¯æ´—ç·´ã•ã‚ŒãŸCriteriaã¨Exampleクエリ機能(QBCã¨QBE)を + サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ResultSetをオブジェクトã«å¤‰æ›ã™ã‚‹Hibernateã®ã‚ªãƒ—ション機能を使ã†ã“ã¨ã§ã€ + データベースã®ãƒã‚¤ãƒ†ã‚£ãƒ–ãªSQLã§ã‚¯ã‚¨ãƒªã‚’表ç¾ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - ƒNƒGƒŠ‚ÌŽÀs + クエリã®å®Ÿè¡Œ - HQL‚âƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚ÍA org.hibernate.Query - ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ü‚·B ‚±‚̃Cƒ“ƒ^ƒtƒF[ƒX‚ÍAƒpƒ‰ƒ[ƒ^ƒoƒCƒ“ƒfƒBƒ“ƒO‚âResultSet‚̃nƒ“ƒhƒŠƒ“ƒO‚â - ƒNƒGƒŠ‚ÌŽÀs‚ðs‚¤ƒƒ\ƒbƒh‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B ’ÊíA Query ‚ÍAˆÈ‰º‚ÉŽ¦‚·‚悤‚ÉA - ‚»‚ÌŽž“_‚Ì Session ‚ðŽg‚Á‚Ď擾‚µ‚Ü‚·B + HQLã‚„ãƒã‚¤ãƒ†ã‚£ãƒ–ãªSQLクエリã¯ã€ org.hibernate.Query + ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã—ã¦è¡¨ç¾ã•ã‚Œã¾ã™ã€‚ ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€ãƒ‘ラメータãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚„ResultSetã®ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚„ + クエリã®å®Ÿè¡Œã‚’è¡Œã†ãƒ¡ã‚½ãƒƒãƒ‰ã‚’用æ„ã—ã¦ã„ã¾ã™ã€‚ 通常〠Query ã¯ã€ä»¥ä¸‹ã«ç¤ºã™ã‚ˆã†ã«ã€ + ãã®æ™‚点㮠Session を使ã£ã¦å–å¾—ã—ã¾ã™ã€‚ - ƒNƒGƒŠ‚ÍA•’ÊA list() ‚ðŒÄ‚Ño‚·‚±‚Æ‚É‚æ‚Á‚ÄŽÀs‚³‚ê‚Ü‚·B - ƒNƒGƒŠ‚ÌŒ‹‰Ê‚ÍAƒƒ‚ƒŠã‚É‚ ‚éƒRƒŒƒNƒVƒ‡ƒ“‚É‚·‚ׂă[ƒh‚³‚ê‚Ü‚·B - ƒNƒGƒŠ‚É‚æ‚Á‚Ä•œŒ³‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA‰i‘±ó‘Ô‚Å‚·B - ‚à‚µAƒNƒGƒŠ‚ª‚½‚Á‚½1ŒÂ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚Æ•ª‚©‚Á‚Ä‚¢‚é‚È‚çA - uniqueResult() ƒƒ\ƒbƒh‚ªŽè‚ÁŽæ‚è‘‚¢•û–@‚Å‚·B - ‘¦ŽžƒtƒFƒbƒ`‚ð—˜—p‚µ‚½ƒNƒGƒŠ‚Ìê‡A‚ӂ‚¤A“¾‚ç‚ꂽƒRƒŒƒNƒVƒ‡ƒ“‚É‚ÍA - ƒ‹[ƒg‚̃IƒuƒWƒFƒNƒg‚ªd•¡‚µ‚ÄŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚· - i‚µ‚©‚µAƒ‹[ƒg‚ªŽ‚ƒRƒŒƒNƒVƒ‡ƒ“‚͉Šú‰»(ƒ[ƒhj‚³‚ê‚Ä‚¢‚Ü‚·jB - ‚±‚Ìd•¡‚Í Set ‚ðŽg‚Á‚ÄŽæ‚蜂­‚±‚Æ‚ª‚Å‚«‚Ü‚·B + クエリã¯ã€æ™®é€šã€ list() を呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã£ã¦å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ + クエリã®çµæžœã¯ã€ãƒ¡ãƒ¢ãƒªä¸Šã«ã‚るコレクションã«ã™ã¹ã¦ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã™ã€‚ + クエリã«ã‚ˆã£ã¦å¾©å…ƒã•ã‚ŒãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€æ°¸ç¶šçŠ¶æ…‹ã§ã™ã€‚ + ã‚‚ã—ã€ã‚¯ã‚¨ãƒªãŒãŸã£ãŸ1個ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã™ã¨åˆ†ã‹ã£ã¦ã„ã‚‹ãªã‚‰ã€ + uniqueResult() メソッドãŒæ‰‹ã£å–ã‚Šæ—©ã„方法ã§ã™ã€‚ + å³æ™‚フェッãƒã‚’利用ã—ãŸã‚¯ã‚¨ãƒªã®å ´åˆã€ãµã¤ã†ã€å¾—られãŸã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯ã€ + ルートã®ã‚ªãƒ–ジェクトãŒé‡è¤‡ã—ã¦å«ã¾ã‚Œã¦ã„ã¾ã™ + (ã—ã‹ã—ã€ãƒ«ãƒ¼ãƒˆãŒæŒã¤ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯åˆæœŸåŒ–(ロード)ã•ã‚Œã¦ã„ã¾ã™ï¼‰ã€‚ + ã“ã®é‡è¤‡ã¯ Set を使ã£ã¦å–り除ãã“ã¨ãŒã§ãã¾ã™ã€‚ - Œ‹‰Ê‚ðƒCƒeƒŒ[ƒg‚·‚é + çµæžœã‚’イテレートã™ã‚‹ - ŽžXA iterate() ƒƒ\ƒbƒh‚ðŽg‚Á‚ăNƒGƒŠ‚ðŽÀs‚·‚邱‚Æ‚ÅA - ‚æ‚è—Ç‚¢ƒpƒtƒH[ƒ}ƒ“ƒX‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B ‚±‚ê‚ÍA’ÊíAƒNƒGƒŠ‚É‚æ‚Á‚Ä“¾‚ç‚ꂽŽÀۂ̃Gƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA - ‚·‚łɃZƒbƒVƒ‡ƒ“‚Ü‚½‚Í“ñŽŸƒLƒƒƒbƒVƒ…‚É‘¶Ý‚·‚邱‚Æ‚ªŠú‘Ò‚Å‚«‚éꇂ¾‚¯‚Å‚·B - ‚»‚ê‚炪A‚Ü‚¾ƒLƒƒƒbƒVƒ…‚³‚ê‚Ä‚¢‚È‚¢‚È‚çA iterate() ‚ÍA - list() ‚æ‚è‚à’x‚­AŠÈ’P‚ȃNƒGƒŠ‚ɑ΂µ‚Ä‚à‘½‚­‚̃f[ƒ^ƒx[ƒXƒAƒNƒZƒX‚ð - •K—v‚Æ‚µ‚Ü‚·B‚»‚̃AƒNƒZƒX‚Æ‚ÍAŽ¯•ÊŽq‚¾‚¯‚ðŽæ“¾‚·‚邽‚ß‚Ìʼn‚Ìselect‚P‰ñ‚ÆA - ŽÀۂ̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‰Šú‰»‚·‚邽‚߂Ɍォ‚çs‚¤n‰ñ‚Ìselect‚Ì‚±‚Æ‚Å‚·B + 時々〠iterate() メソッドを使ã£ã¦ã‚¯ã‚¨ãƒªã‚’実行ã™ã‚‹ã“ã¨ã§ã€ + より良ã„パフォーマンスを得るã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã‚Œã¯ã€é€šå¸¸ã€ã‚¯ã‚¨ãƒªã«ã‚ˆã£ã¦å¾—られãŸå®Ÿéš›ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã€ + ã™ã§ã«ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¾ãŸã¯äºŒæ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å­˜åœ¨ã™ã‚‹ã“ã¨ãŒæœŸå¾…ã§ãã‚‹å ´åˆã ã‘ã§ã™ã€‚ + ãれらãŒã€ã¾ã ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚Œã¦ã„ãªã„ãªã‚‰ã€ iterate() ã¯ã€ + list() よりもé…ãã€ç°¡å˜ãªã‚¯ã‚¨ãƒªã«å¯¾ã—ã¦ã‚‚多ãã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¢ã‚¯ã‚»ã‚¹ã‚’ + å¿…è¦ã¨ã—ã¾ã™ã€‚ãã®ã‚¢ã‚¯ã‚»ã‚¹ã¨ã¯ã€è­˜åˆ¥å­ã ã‘ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®æœ€åˆã®select1回ã¨ã€ + 実際ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’åˆæœŸåŒ–ã™ã‚‹ãŸã‚ã«å¾Œã‹ã‚‰è¡Œã†n回ã®selectã®ã“ã¨ã§ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚Ì‘gituplej‚ð•Ô‚·ƒNƒGƒŠ + オブジェクトã®çµ„(tuple)を返ã™ã‚¯ã‚¨ãƒª - Hibernate‚̃NƒGƒŠ‚Å‚ÍAŽžXAƒIƒuƒWƒFƒNƒg‚Ì‘g‚ð•Ô‚·‚±‚Æ‚ª‚ ‚è‚Ü‚·B ‚»‚ÌꇂÍAŠeƒ^ƒvƒ‹‚Í”z—ñ‚Æ‚µ‚Ä•Ô‚³‚ê‚Ü‚·B + Hibernateã®ã‚¯ã‚¨ãƒªã§ã¯ã€æ™‚々ã€ã‚ªãƒ–ジェクトã®çµ„ã‚’è¿”ã™ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ ãã®å ´åˆã¯ã€å„タプルã¯é…列ã¨ã—ã¦è¿”ã•ã‚Œã¾ã™ã€‚ @@ -306,12 +308,12 @@ while ( kittensAndMothers.hasNext() ) { - ƒXƒJƒ‰[‚ÌŒ‹‰Ê + スカラーã®çµæžœ - ƒNƒGƒŠ‚Å‚ÍA select ߂ŃNƒ‰ƒX‚̃vƒƒpƒeƒB‚ðŽw’è‚Å‚«‚Ü‚·B - SQL‚ÌW‡ŠÖ”‚ðŒÄ‚Ô‚±‚Æ‚à‚Å‚«‚Ü‚·BƒvƒƒpƒeƒB‚âW‡ŠÖ”‚ÍA - i‰i‘±ó‘Ԃ̃Gƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚­juƒXƒJƒ‰[’lv‚Å‚ ‚é‚ÆŒ©‚È‚³‚ê‚Ü‚·B + クエリã§ã¯ã€ select 節ã§ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティを指定ã§ãã¾ã™ã€‚ + SQLã®é›†åˆé–¢æ•°ã‚’呼ã¶ã“ã¨ã‚‚ã§ãã¾ã™ã€‚プロパティや集åˆé–¢æ•°ã¯ã€ + (永続状態ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã¯ãªã)「スカラー値ã€ã§ã‚ã‚‹ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ - ƒpƒ‰ƒ[ƒ^‚̃oƒCƒ“ƒh + パラメータã®ãƒã‚¤ãƒ³ãƒ‰ Query - ‚ÍA–¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚âJDBCƒXƒ^ƒCƒ‹‚Ì ? - ƒpƒ‰ƒ[ƒ^‚É’l‚ðƒoƒCƒ“ƒh‚·‚邽‚߂̃ƒ\ƒbƒh‚ðŽ‚Á‚Ä‚¢‚Ü‚·B - JDBC‚Ƃ͈ႢAHibernate‚̓pƒ‰ƒ[ƒ^‚Ƀ[ƒ‚©‚ç”Ô†‚ðU‚Á‚Ä‚¢‚«‚Ü‚·B - –¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚Æ‚ÍAƒNƒGƒŠ•¶Žš—ñ‚Ì‚È‚©‚É‚ ‚é :name Œ`Ž®‚ÌŽ¯•ÊŽq‚Å‚·B - –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^‚Ì—˜“_‚ÍŽŸ‚Ì’Ê‚è‚Å‚·B + ã¯ã€åå‰ä»˜ãã®ãƒ‘ラメータやJDBCスタイル㮠? + パラメータã«å€¤ã‚’ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + JDBCã¨ã¯é•ã„ã€Hibernateã¯ãƒ‘ラメータã«ã‚¼ãƒ­ã‹ã‚‰ç•ªå·ã‚’振ã£ã¦ã„ãã¾ã™ã€‚ + åå‰ä»˜ãã®ãƒ‘ラメータã¨ã¯ã€ã‚¯ã‚¨ãƒªæ–‡å­—列ã®ãªã‹ã«ã‚ã‚‹ :name å½¢å¼ã®è­˜åˆ¥å­ã§ã™ã€‚ + åå‰ä»˜ãパラメータã®åˆ©ç‚¹ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚ - –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^‚ÍAƒNƒGƒŠ•¶Žš—ñ‚É“oê‚·‚釔ԂƖ³ŠÖŒW‚Å‚· + åå‰ä»˜ãパラメータã¯ã€ã‚¯ã‚¨ãƒªæ–‡å­—列ã«ç™»å ´ã™ã‚‹é †ç•ªã¨ç„¡é–¢ä¿‚ã§ã™ - “¯‚¶ƒNƒGƒŠ“à‚É•¡”‰ñ“oê‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚· + åŒã˜ã‚¯ã‚¨ãƒªå†…ã«è¤‡æ•°å›žç™»å ´ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ - Ž©•ªŽ©g‚ðà–¾‚µ‚Ü‚· + 自分自身を説明ã—ã¾ã™ @@ -377,12 +379,12 @@ List cats = q.list();]]> - ƒy[ƒW•ª‚¯ + <title>ページ分㑠- ResultSet‚ɧŒÀi•œŒ³‚µ‚½‚¢Å‘ås”‚â•œŒ³‚µ‚½‚¢Å‰‚Ìsj‚ð‰Á‚¦‚é•K—v‚ª‚ ‚ê‚ÎA - ˆÈ‰º‚̂悤‚ÉA Query ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃ƒ\ƒbƒh‚ðŽg‚¢‚Ü‚·B + ResultSetã«åˆ¶é™ï¼ˆå¾©å…ƒã—ãŸã„最大行数や復元ã—ãŸã„最åˆã®è¡Œï¼‰ã‚’加ãˆã‚‹å¿…è¦ãŒã‚ã‚Œã°ã€ + 以下ã®ã‚ˆã†ã«ã€ Query インターフェイスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã„ã¾ã™ã€‚ - §ŒÀ•t‚«‚̃NƒGƒŠ‚ðDBMS‚̃lƒCƒeƒBƒu‚ÈSQL‚É•ÏŠ·‚·‚é•û–@‚ðAHibernate‚Í’m‚Á‚Ä‚¢‚Ü‚·B + 制é™ä»˜ãã®ã‚¯ã‚¨ãƒªã‚’DBMSã®ãƒã‚¤ãƒ†ã‚£ãƒ–ãªSQLã«å¤‰æ›ã™ã‚‹æ–¹æ³•ã‚’ã€Hibernateã¯çŸ¥ã£ã¦ã„ã¾ã™ã€‚ - ƒXƒNƒ[ƒ‹‰Â”\‚ȃCƒeƒŒ[ƒVƒ‡ƒ“ + スクロールå¯èƒ½ãªã‚¤ãƒ†ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ - JDBCƒhƒ‰ƒCƒo‚ªƒXƒNƒ[ƒ‹‰Â”\‚È ResultSet ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚ê‚ÎA + JDBCドライãƒãŒã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«å¯èƒ½ãª ResultSet をサãƒãƒ¼ãƒˆã—ã¦ã„ã‚Œã°ã€ Query - ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚ÄA ScrollableResults ƒIƒuƒWƒFƒNƒg‚ð - Žæ“¾‚Å‚«‚Ü‚·B‚»‚ê‚ðŽg‚¤‚ÆAƒNƒGƒŠ‚ÌŒ‹‰Ê‚ɑ΂µ‚Ä_“î‚ɃiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚Ü‚·B + インターフェイスを使ã£ã¦ã€ ScrollableResults オブジェクトを + å–å¾—ã§ãã¾ã™ã€‚ãれを使ã†ã¨ã€ã‚¯ã‚¨ãƒªã®çµæžœã«å¯¾ã—ã¦æŸ”軟ã«ãƒŠãƒ“ゲーションã§ãã¾ã™ã€‚ - ‚±‚Ì‹@”\‚ɂ̓I[ƒvƒ“ó‘Ԃ̃f[ƒ^ƒx[ƒXƒRƒlƒNƒVƒ‡ƒ“‚ª•K—v‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚à‚µAƒIƒtƒ‰ƒCƒ“‚̃y[ƒW•ª‚¯‹@”\‚ª•K—v‚Å‚ ‚ê‚ÎA setMaxResult() / - setFirstResult() ‚ðŽg‚¢‚Ü‚µ‚傤B + ã“ã®æ©Ÿèƒ½ã«ã¯ã‚ªãƒ¼ãƒ—ン状態ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã‚‚ã—ã€ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã®ãƒšãƒ¼ã‚¸åˆ†ã‘機能ãŒå¿…è¦ã§ã‚ã‚Œã°ã€ setMaxResult() / + setFirstResult() を使ã„ã¾ã—ょã†ã€‚ - –¼‘O•t‚«ƒNƒGƒŠ‚ÌŠOo‚µ + åå‰ä»˜ãクエリã®å¤–出㗠- ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚É–¼‘O•t‚«‚̃NƒGƒŠ‚ð’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - iƒ}[ƒNƒAƒbƒv‚ƉðŽß‚³‚ê‚镶Žš‚ªƒNƒGƒŠ‚ÉŠÜ‚Ü‚ê‚é‚È‚çA CDATA ƒZƒNƒVƒ‡ƒ“‚ð - Žg‚¤‚±‚Æ‚ð–Y‚ê‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤Bj + マッピングドキュメントã«åå‰ä»˜ãã®ã‚¯ã‚¨ãƒªã‚’定義ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + (マークアップã¨è§£é‡ˆã•ã‚Œã‚‹æ–‡å­—ãŒã‚¯ã‚¨ãƒªã«å«ã¾ã‚Œã‚‹ãªã‚‰ã€ CDATA セクションを + 使ã†ã“ã¨ã‚’忘れãªã„よã†ã«ã—ã¾ã—ょã†ã€‚) and cat.weight > ? ] ]>]]> - ƒpƒ‰ƒ[ƒ^‚̃oƒCƒ“ƒfƒBƒ“ƒO‚ÆŽÀs‚ÍAˆÈ‰º‚̂悤‚ȃvƒƒOƒ‰ƒ€‚Ås‚í‚ê‚Ü‚·B + パラメータã®ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã¨å®Ÿè¡Œã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ—ログラムã§è¡Œã‚ã‚Œã¾ã™ã€‚ - ŽÀۂ̃vƒƒOƒ‰ƒ€ƒR[ƒh‚ÍAŽg‚í‚ê‚éƒNƒGƒŠŒ¾Œê‚Ɉˑ¶‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B - ƒƒ^ƒf[ƒ^‚É‚ÍAƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚ð’è‹`‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B ‚Ü‚½AŠù‘¶‚̃NƒGƒŠ‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ɉڂ·‚±‚Æ‚ÅA - Hibernate‚ɈÚs‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + 実際ã®ãƒ—ログラムコードã¯ã€ä½¿ã‚れるクエリ言語ã«ä¾å­˜ã—ã¦ã„ãªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†ã€‚ + メタデータã«ã¯ã€ãƒã‚¤ãƒ†ã‚£ãƒ–SQLクエリを定義ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ ã¾ãŸã€æ—¢å­˜ã®ã‚¯ã‚¨ãƒªã‚’マッピングファイルã«ç§»ã™ã“ã¨ã§ã€ + Hibernateã«ç§»è¡Œã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - <hibernate-mapping> ‚Ì’†‚̃NƒGƒŠ’è‹`‚ÍAƒNƒGƒŠ‚ɑ΂·‚é - ƒ†ƒj[ƒN‚È–¼‘O‚ª•K—v‚È‚±‚Æ‚É‚à’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚»‚ê‚ɑ΂µ‚ÄA <class> ‚Ì’†‚Ì - ƒNƒGƒŠ’è‹`‚ÍAƒNƒ‰ƒX‚ÌŠ®‘SŒÀ’è–¼‚ª‘O‚É•t‚¯‚ç‚ê‚é‚Ì‚ÅAŽ©“®“I‚Ƀ†ƒj[ƒN‚È–¼‘O‚É‚È‚è‚Ü‚·B - —áF eg.Cat.ByNameAndMaximumWeight + <hibernate-mapping> ã®ä¸­ã®ã‚¯ã‚¨ãƒªå®šç¾©ã¯ã€ã‚¯ã‚¨ãƒªã«å¯¾ã™ã‚‹ + ユニークãªåå‰ãŒå¿…è¦ãªã“ã¨ã«ã‚‚注æ„ã—ã¦ãã ã•ã„。ãã‚Œã«å¯¾ã—ã¦ã€ <class> ã®ä¸­ã® + クエリ定義ã¯ã€ã‚¯ãƒ©ã‚¹ã®å®Œå…¨é™å®šåãŒå‰ã«ä»˜ã‘られるã®ã§ã€è‡ªå‹•çš„ã«ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªåå‰ã«ãªã‚Šã¾ã™ã€‚ + 例: eg.Cat.ByNameAndMaximumWeight - ƒRƒŒƒNƒVƒ‡ƒ“‚̃tƒBƒ‹ƒ^ƒŠƒ“ƒO - ƒRƒŒƒNƒVƒ‡ƒ“ ƒtƒBƒ‹ƒ^ ‚ÍA‰i‘±‰»‚³‚ê‚Ä‚¢‚éƒRƒŒƒNƒVƒ‡ƒ“‚â”z—ñ‚É“K—p‚³‚ê‚é - “ÁŽê‚ȃ^ƒCƒv‚̃NƒGƒŠ‚Å‚·B‚»‚̃NƒGƒŠ•¶Žš—ñ‚Å‚ÍAƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚»‚ÌŽž“_‚Å‚Ì—v‘f‚ðˆÓ–¡‚·‚é - this ‚ðŽg‚¢‚Ü‚·B + コレクションã®ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚° + コレクション フィルタ ã¯ã€æ°¸ç¶šåŒ–ã•ã‚Œã¦ã„るコレクションやé…列ã«é©ç”¨ã•ã‚Œã‚‹ + 特殊ãªã‚¿ã‚¤ãƒ—ã®ã‚¯ã‚¨ãƒªã§ã™ã€‚ãã®ã‚¯ã‚¨ãƒªæ–‡å­—列ã§ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ãã®æ™‚点ã§ã®è¦ç´ ã‚’æ„味ã™ã‚‹ + this を使ã„ã¾ã™ã€‚ .list() );]]> - •Ô‚³‚ê‚éƒRƒŒƒNƒVƒ‡ƒ“‚ÍBag‚Æ‚Ý‚È‚³‚ê‚Ü‚·B‚»‚µ‚ÄA‚»‚ê‚Í‚à‚Ƃ̃RƒŒƒNƒVƒ‡ƒ“‚̃Rƒs[‚É‚È‚è‚Ü‚·B - Œ³‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍC³‚³‚ê‚Ü‚¹‚ñi‚±‚ê‚ÍA"filter"‚Æ‚¢‚¤–¼‘O‚̈Ӗ¡‚Ƃ͈قȂè‚Ü‚·‚ªA Šú‘Ò‚³‚ê‚é“®‚«‚Ƃ͈ê’v‚µ‚Ä‚¢‚Ü‚·jB + è¿”ã•ã‚Œã‚‹ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯Bagã¨ã¿ãªã•ã‚Œã¾ã™ã€‚ãã—ã¦ã€ãã‚Œã¯ã‚‚ã¨ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚³ãƒ”ーã«ãªã‚Šã¾ã™ã€‚ + å…ƒã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ä¿®æ­£ã•ã‚Œã¾ã›ã‚“(ã“ã‚Œã¯ã€"filter"ã¨ã„ã†åå‰ã®æ„味ã¨ã¯ç•°ãªã‚Šã¾ã™ãŒã€ 期待ã•ã‚Œã‚‹å‹•ãã¨ã¯ä¸€è‡´ã—ã¦ã„ã¾ã™ï¼‰ã€‚ - ƒtƒBƒ‹ƒ^‚É‚Í from - ß‚ª•s—v‚Å‚ ‚邱‚Æ‚É‹C‚­‚Å‚µ‚傤i•K—v‚È‚çAŽ‚‚±‚Æ‚à‰Â”\‚Å‚·‚ªjB ƒtƒBƒ‹ƒ^‚ÍAƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘fŽ©‘Ì‚ð•Ô‚µ‚Ä\‚¢‚Ü‚¹‚ñB + フィルタã«ã¯ from + 節ãŒä¸è¦ã§ã‚ã‚‹ã“ã¨ã«æ°—ã¥ãã§ã—ょã†ï¼ˆå¿…è¦ãªã‚‰ã€æŒã¤ã“ã¨ã‚‚å¯èƒ½ã§ã™ãŒï¼‰ã€‚ フィルタã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ è‡ªä½“ã‚’è¿”ã—ã¦æ§‹ã„ã¾ã›ã‚“。 @@ -497,8 +499,8 @@ List cats = q.list();]]> "select this.mate where this.color = eg.Color.BLACK.intValue") .list();]]> - ƒNƒGƒŠ‚ðŠÜ‚Ü‚È‚¢ƒtƒBƒ‹ƒ^‚à–ð‚É—§‚¿‚Ü‚·B - —Ⴆ‚ÎA”ñí‚É‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚Ì•”•ªW‡‚ðƒ[ƒh‚·‚邽‚ß‚ÉŽg‚¦‚Ü‚·B + クエリをå«ã¾ãªã„フィルタも役ã«ç«‹ã¡ã¾ã™ã€‚ + 例ãˆã°ã€éžå¸¸ã«å¤§ããªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®éƒ¨åˆ†é›†åˆã‚’ロードã™ã‚‹ãŸã‚ã«ä½¿ãˆã¾ã™ã€‚ - ƒNƒ‰ƒCƒeƒŠƒA‚̃NƒGƒŠ + クライテリアã®ã‚¯ã‚¨ãƒª - HQL‚Í”ñí‚É‹­—Í‚Å‚·‚ªAƒNƒGƒŠ•¶Žš—ñ‚ðì‚é‚æ‚è‚àAƒIƒuƒWƒFƒNƒgŽwŒü‚ÌAPI‚ðŽg‚Á‚Ä - “®“I‚ɃNƒGƒŠ‚ðì‚é•û‚ðD‚ÞŠJ”­ŽÒ‚à‚¢‚Ü‚·B ‚±‚¤‚¢‚Á‚½ê‡‚Ì‚½‚ß‚ÉAHibernate‚Í’¼Š´“I‚È - Criteria ƒNƒGƒŠAPI‚ð’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B + HQLã¯éžå¸¸ã«å¼·åŠ›ã§ã™ãŒã€ã‚¯ã‚¨ãƒªæ–‡å­—列を作るよりもã€ã‚ªãƒ–ジェクト指å‘ã®APIを使ã£ã¦ + å‹•çš„ã«ã‚¯ã‚¨ãƒªã‚’作る方を好む開発者もã„ã¾ã™ã€‚ ã“ã†ã„ã£ãŸå ´åˆã®ãŸã‚ã«ã€Hibernateã¯ç›´æ„Ÿçš„㪠+ Criteria クエリAPIã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚ - Criteria ‚Æ - Example API‚ÌÚׂÍA - ‚Éq‚ׂç‚ê‚Ä‚¢‚Ü‚·B + Criteria 㨠+ Example APIã®è©³ç´°ã¯ã€ + ã«è¿°ã¹ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ - ƒlƒCƒeƒBƒuSQL‚̃NƒGƒŠ + ãƒã‚¤ãƒ†ã‚£ãƒ–SQLã®ã‚¯ã‚¨ãƒª - createSQLQuery() ‚ðŽg‚Á‚ÄASQL‚ŃNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ‚»‚µ‚ÄAHibernate‚ÉAResultSet ‚©‚çƒIƒuƒWƒFƒNƒg‚ւ̃}ƒbƒsƒ“ƒO‚ð‚Ü‚©‚¹‚Ü‚·B - session.connection() ‚ðŒÄ‚ׂ΂ǂñ‚È‚Æ‚«‚Å‚àA’¼ÚAJDBC - Connection ‚ðŽg—p‚Å‚«‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚«‚Ü‚µ‚傤B ‚à‚µAHibernate - API‚ðŽg‚¤‚Ì‚Å‚ ‚ê‚ÎA‰º‹L‚̂悤‚ÉSQL‚Ì•Ê–¼‚ðŠ‡ŒÊ‚Å‚­‚­‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + createSQLQuery() を使ã£ã¦ã€SQLã§ã‚¯ã‚¨ãƒªã‚’表ç¾ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ãã—ã¦ã€Hibernateã«ã€ResultSet ã‹ã‚‰ã‚ªãƒ–ジェクトã¸ã®ãƒžãƒƒãƒ”ングをã¾ã‹ã›ã¾ã™ã€‚ + session.connection() を呼ã¹ã°ã©ã‚“ãªã¨ãã§ã‚‚ã€ç›´æŽ¥ã€JDBC + Connection を使用ã§ãã‚‹ã“ã¨ã‚’覚ãˆã¦ãŠãã¾ã—ょã†ã€‚ ã‚‚ã—ã€Hibernate + APIを使ã†ã®ã§ã‚ã‚Œã°ã€ä¸‹è¨˜ã®ã‚ˆã†ã«SQLã®åˆ¥åを括弧ã§ããらãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 .list()]]> - SQLƒNƒGƒŠ‚ÍAHibernateƒNƒGƒŠ‚Æ“¯‚¶‚悤‚ÉA–¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚ƈʒuƒpƒ‰ƒ[ƒ^‚ðŽ‚‚±‚Æ‚ª‚Å‚«‚Ü‚·B - Hibernate‚É‚¨‚¯‚éƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚ÌÚׂɂ‚¢‚Ä‚ÍA - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + SQLクエリã¯ã€Hibernateクエリã¨åŒã˜ã‚ˆã†ã«ã€åå‰ä»˜ãã®ãƒ‘ラメータã¨ä½ç½®ãƒ‘ラメータをæŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚ + Hibernateã«ãŠã‘ã‚‹ãƒã‚¤ãƒ†ã‚£ãƒ–ãªSQLクエリã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€ + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ‰i‘±ƒIƒuƒWƒFƒNƒg‚ÌC³ + 永続オブジェクトã®ä¿®æ­£ - ˆ—’†‚̉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX - i—áF Session ‚É‚æ‚Á‚ÄA - ƒ[ƒhAƒZ[ƒuAì¬AƒNƒGƒŠ‚³‚ꂽƒIƒuƒWƒFƒNƒgj‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‘€ì‚³‚ê‚Ü‚·B - ‚»‚ÌÛ‚É•ÏX‚³‚ꂽ‰i‘±ó‘Ô‚ÍA Session ‚ª ƒtƒ‰ƒbƒVƒ… - ‚³‚ê‚é‚Æ‚«‚ÉA‰i‘±‰»‚³‚ê‚Ü‚·i‚±‚ê‚ÍA‚±‚Ì͂̌㔼‚Åq‚ׂĂ¢‚Ü‚·jB - •ÏX‚ð‰i‘±‰»‚·‚邽‚ß‚ÉA“ÁŽê‚ȃƒ\ƒbƒhi update() - ‚̂悤‚È‚à‚ÌB‚±‚ê‚ÍA•Ê‚Ì–Ú“I‚ÅŽg—p‚µ‚Ü‚·j‚ð ŒÄ‚Ô•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ƒIƒuƒWƒFƒNƒg‚Ìó‘Ô‚ðXV‚·‚éˆê”ÔŠÈ’P‚È•û–@‚ÍAƒIƒuƒWƒFƒNƒg‚ð - load() ‚µA Session - ‚ðƒI[ƒvƒ“‚É‚µ‚Ä‚¢‚éŠÔ‚ÉA’¼Ú‘€ì‚·‚邱‚Æ‚Å‚·B + 処ç†ä¸­ã®æ°¸ç¶šã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ + (例: Session ã«ã‚ˆã£ã¦ã€ + ロードã€ã‚»ãƒ¼ãƒ–ã€ä½œæˆã€ã‚¯ã‚¨ãƒªã•ã‚ŒãŸã‚ªãƒ–ジェクト)ã¯ã€ã‚¢ãƒ—リケーションã«æ“作ã•ã‚Œã¾ã™ã€‚ + ãã®éš›ã«å¤‰æ›´ã•ã‚ŒãŸæ°¸ç¶šçŠ¶æ…‹ã¯ã€ Session ㌠フラッシュ + ã•ã‚Œã‚‹ã¨ãã«ã€æ°¸ç¶šåŒ–ã•ã‚Œã¾ã™ï¼ˆã“ã‚Œã¯ã€ã“ã®ç« ã®å¾ŒåŠã§è¿°ã¹ã¦ã„ã¾ã™ï¼‰ã€‚ + 変更を永続化ã™ã‚‹ãŸã‚ã«ã€ç‰¹æ®Šãªãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆ update() + ã®ã‚ˆã†ãªã‚‚ã®ã€‚ã“ã‚Œã¯ã€åˆ¥ã®ç›®çš„ã§ä½¿ç”¨ã—ã¾ã™ï¼‰ã‚’ 呼ã¶å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 オブジェクトã®çŠ¶æ…‹ã‚’æ›´æ–°ã™ã‚‹ä¸€ç•ªç°¡å˜ãªæ–¹æ³•ã¯ã€ã‚ªãƒ–ジェクトを + load() ã—〠Session + をオープンã«ã—ã¦ã„ã‚‹é–“ã«ã€ç›´æŽ¥æ“作ã™ã‚‹ã“ã¨ã§ã™ã€‚ - iƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚邽‚ß‚ÌjSQL‚Ì SELECT ‚ÆiXV‚³‚ꂽó‘Ô‚ð‰i‘±‰»‚·‚邽‚ß‚Ìj - SQL‚Ì UPDATE ‚ª“¯‚¶ƒZƒbƒVƒ‡ƒ“‚Å•K—v‚Æ‚È‚é‚Ì‚ÅA‚±‚̃vƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚ÍA - Œø—¦‚ªˆ«‚­‚È‚éꇂª‚ ‚è‚Ü‚·B - ‚»‚Ì‚½‚ßAHibernate‚Í•Ê‚Ì•û–@‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B‚»‚ê‚ÍAƒCƒ“ƒXƒ^ƒ“ƒX‚𕪗£‚·‚éidetachedj•û–@‚Å‚·B + (オブジェクトをロードã™ã‚‹ãŸã‚ã®ï¼‰SQLã® SELECT ã¨ï¼ˆæ›´æ–°ã•ã‚ŒãŸçŠ¶æ…‹ã‚’永続化ã™ã‚‹ãŸã‚ã®ï¼‰ + SQLã® UPDATE ãŒåŒã˜ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§å¿…è¦ã¨ãªã‚‹ã®ã§ã€ã“ã®ãƒ—ログラミングモデルã¯ã€ + 効率ãŒæ‚ªããªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + ãã®ãŸã‚ã€Hibernateã¯åˆ¥ã®æ–¹æ³•ã‚’用æ„ã—ã¦ã„ã¾ã™ã€‚ãã‚Œã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’分離ã™ã‚‹ï¼ˆdetached)方法ã§ã™ã€‚ - Hibernate‚ÍA UPDATE •¶‚â - DELETE •¶‚ð’¼ÚŽÀs‚·‚éAPI‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚¹‚ñB - Hibernate‚ÍA ó‘ÔŠÇ— ƒT[ƒrƒX‚Å‚ ‚èAŽg‚í‚ê‚éSQL - •¶ ‚Ì‚±‚Æ‚ðŠJ”­ŽÒ‚ªl‚¦‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - JDBC‚ÍSQL•¶‚ðŽÀs‚·‚銮àø‚ÈAPI‚Å‚ ‚èA session.connection() - ‚ðŒÄ‚Ô‚±‚Æ‚Å ‚¢‚‚łàAJDBC Connection ‚ðŠJ”­ŽÒ‚͎擾‚Å‚«‚Ü‚·B - ‚³‚ç‚ÉA‘å—ʂ̃f[ƒ^‘€ì‚Ìl‚¦•û‚ÍAƒIƒ“ƒ‰ƒCƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—Œü‚«ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì - ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚ÆÕ“Ë‚µ‚Ü‚·B - ‚µ‚©‚µAHibernate‚Ì¡Œã‚̃o[ƒWƒ‡ƒ“‚Å‚ÍA‘å—ʃf[ƒ^‚ðˆ—‚·‚é“Á•Ê‚È‹@”\‚ð’ñ‹Ÿ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ƒoƒbƒ`‘€ì‚É—˜—p‚Å‚«‚é‚¢‚­‚‚©‚ÌH•v‚ɂ‚¢‚Ä‚ÍA ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateã¯ã€ UPDATE 文や + DELETE 文を直接実行ã™ã‚‹APIを用æ„ã—ã¦ã„ã¾ã›ã‚“。 + Hibernateã¯ã€ çŠ¶æ…‹ç®¡ç† ã‚µãƒ¼ãƒ“ã‚¹ã§ã‚ã‚Šã€ä½¿ã‚れるSQL + æ–‡ ã®ã“ã¨ã‚’開発者ãŒè€ƒãˆã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + JDBCã¯SQL文を実行ã™ã‚‹å®Œç’§ãªAPIã§ã‚り〠session.connection() + を呼ã¶ã“ã¨ã§ ã„ã¤ã§ã‚‚ã€JDBC Connection を開発者ã¯å–å¾—ã§ãã¾ã™ã€‚ + ã•ã‚‰ã«ã€å¤§é‡ã®ãƒ‡ãƒ¼ã‚¿æ“作ã®è€ƒãˆæ–¹ã¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç†å‘ãアプリケーション㮠+ オブジェクト/リレーショナルマッピングã¨è¡çªã—ã¾ã™ã€‚ + ã—ã‹ã—ã€Hibernateã®ä»Šå¾Œã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€å¤§é‡ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã™ã‚‹ç‰¹åˆ¥ãªæ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ãƒãƒƒãƒæ“作ã«åˆ©ç”¨ã§ãã‚‹ã„ãã¤ã‹ã®å·¥å¤«ã«ã¤ã„ã¦ã¯ã€ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - •ª—£ƒIƒuƒWƒFƒNƒg‚ÌC³ + 分離オブジェクトã®ä¿®æ­£ - ‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍŽŸ‚Ì‚±‚Æ‚ª•K—v‚É‚È‚è‚Ü‚·B - ‚»‚ê‚ÍA‚ ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ŃIƒuƒWƒFƒNƒg‚𕜌³‚µA‘€ì‚·‚邽‚ß‚É‚»‚ê‚ðUI‘w‚É‘—‚èA - ‚»‚ÌŒã‚ÉAV‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Å•ÏX‚ðƒZ[ƒu‚·‚é‚Æ‚¢‚Á‚½‚±‚Æ‚Å‚·B - •Às«‚Ì‚‚¢ŠÂ‹«‚ÅA‚±‚̃^ƒCƒv‚̃Aƒvƒ[ƒ`‚ðŽg‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍA "ŠúŠÔ‚Ì’·‚¢" - ì‹Æ’PˆÊ‚ÌŠu—£«‚ð•ÛØ‚·‚邽‚ß‚ÉAƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚ª’ÊíŽg‚í‚ê‚Ü‚·B + 多ãã®ã‚¢ãƒ—リケーションã§ã¯æ¬¡ã®ã“ã¨ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + ãã‚Œã¯ã€ã‚るトランザクションã§ã‚ªãƒ–ジェクトを復元ã—ã€æ“作ã™ã‚‹ãŸã‚ã«ãれをUI層ã«é€ã‚Šã€ + ãã®å¾Œã«ã€æ–°ã—ã„トランザクションã§å¤‰æ›´ã‚’セーブã™ã‚‹ã¨ã„ã£ãŸã“ã¨ã§ã™ã€‚ + 並行性ã®é«˜ã„環境ã§ã€ã“ã®ã‚¿ã‚¤ãƒ—ã®ã‚¢ãƒ—ローãƒã‚’使ã†ã‚¢ãƒ—リケーションã§ã¯ã€ "期間ã®é•·ã„" + 作業å˜ä½ã®éš”離性をä¿è¨¼ã™ã‚‹ãŸã‚ã«ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ãŒé€šå¸¸ä½¿ã‚ã‚Œã¾ã™ã€‚ - Hibernate‚ÍA Session.update() ‚â - Session.merge() ƒƒ\ƒbƒh‚ð - Žg‚Á‚ÄA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðĒljÁ‚·‚邱‚Æ‚ÅA‚±‚̃‚ƒfƒ‹‚ɑΉž‚µ‚Ü‚·B + Hibernateã¯ã€ Session.update() ã‚„ + Session.merge() メソッドを + 使ã£ã¦ã€åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†è¿½åŠ ã™ã‚‹ã“ã¨ã§ã€ã“ã®ãƒ¢ãƒ‡ãƒ«ã«å¯¾å¿œã—ã¾ã™ã€‚ - Ž¯•ÊŽqcatId ‚ðŽ‚ Cat ‚ªAŠù‚É - secondSession ‚Ń[ƒh‚³‚ê‚Ä‚¢‚½ê‡‚ÍAĒljÁ‚µ‚悤‚Æ‚µ‚½‚Æ‚«‚ÉA—áŠO‚ª“Š‚°‚ç‚ê‚Ü‚·B + 識別å­catId ã‚’æŒã¤ Cat ãŒã€æ—¢ã« + secondSession ã§ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ãŸå ´åˆã¯ã€å†è¿½åŠ ã—よã†ã¨ã—ãŸã¨ãã«ã€ä¾‹å¤–ãŒæŠ•ã’られã¾ã™ã€‚ - “¯‚¶Ž¯•ÊŽq‚ðŽ‚‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒZƒbƒVƒ‡ƒ“‚ªŠù‚É•ÛŽ‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚ð - ŠmM‚Å‚«‚é‚È‚ç update() ‚ðŽg‚¢‚Ü‚µ‚傤B - ‚»‚µ‚ÄAƒZƒbƒVƒ‡ƒ“‚Ìó‘Ô‚ðl‚¦‚¸‚ÉA‚Ç‚ñ‚Èꇂłà•ÏX‚ðƒ}[ƒW‚µ‚½‚¢ê‡‚ÍA merge() - ‚ðŽg‚¢‚Ü‚µ‚傤B ‚·‚È‚í‚¿A•ª—£ƒIƒuƒWƒFƒNƒg‚ÌĒljÁ‘€ì‚ªAʼn‚ÉŽÀs‚³‚ê‚邱‚Æ‚ðŠmŽÀ‚É‚·‚邽‚ß‚ÉA ’Êí‚Í - update() ‚ªV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚Ì‚È‚©‚Åʼn‚ɌĂ΂ê‚郃\ƒbƒh‚É‚È‚è‚Ü‚·B + åŒã˜è­˜åˆ¥å­ã‚’æŒã¤æ°¸ç¶šã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’セッションãŒæ—¢ã«ä¿æŒã—ã¦ã„ãªã„ã“ã¨ã‚’ + 確信ã§ãã‚‹ãªã‚‰ update() を使ã„ã¾ã—ょã†ã€‚ + ãã—ã¦ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®çŠ¶æ…‹ã‚’考ãˆãšã«ã€ã©ã‚“ãªå ´åˆã§ã‚‚変更をマージã—ãŸã„å ´åˆã¯ã€ merge() + を使ã„ã¾ã—ょã†ã€‚ ã™ãªã‚ã¡ã€åˆ†é›¢ã‚ªãƒ–ジェクトã®å†è¿½åŠ æ“作ãŒã€æœ€åˆã«å®Ÿè¡Œã•ã‚Œã‚‹ã“ã¨ã‚’確実ã«ã™ã‚‹ãŸã‚ã«ã€ 通常㯠+ update() ãŒæ–°ã—ã„セッションã®ãªã‹ã§æœ€åˆã«å‘¼ã°ã‚Œã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã«ãªã‚Šã¾ã™ã€‚ - •ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚ç“ž’B‰Â”\‚ÈA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍŒÂ•Ê‚É update() - ‚·‚ׂ«‚Å‚·B‚»‚ê‚ÍA‚»‚Ìó‘Ô‚ðXV‚µ‚½‚¢ê‡‚É ŒÀ‚è ‚Ü‚·B - ‘JˆÚ“I‚ȉi‘±‰» ‚ðŽg‚¦‚ÎA‚à‚¿‚ë‚ñŽ©“®‰»‚Å‚«‚Ü‚·B ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 分離インスタンスã‹ã‚‰åˆ°é”å¯èƒ½ãªã€åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’アプリケーションã¯å€‹åˆ¥ã« update() + ã™ã¹ãã§ã™ã€‚ãã‚Œã¯ã€ãã®çŠ¶æ…‹ã‚’æ›´æ–°ã—ãŸã„å ´åˆã« é™ã‚Š ã¾ã™ã€‚ + é·ç§»çš„ãªæ°¸ç¶šåŒ– を使ãˆã°ã€ã‚‚ã¡ã‚ん自動化ã§ãã¾ã™ã€‚ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ƒƒ\ƒbƒh‚Å‚à‚Ü‚½AV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ɃIƒuƒWƒFƒNƒg‚ðÄŠÖ˜A•t‚¯‚Å‚«‚Ü‚·B ‚µ‚©‚µA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚Í–³C³‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + メソッドã§ã‚‚ã¾ãŸã€æ–°ã—ã„セッションã«ã‚ªãƒ–ジェクトをå†é–¢é€£ä»˜ã‘ã§ãã¾ã™ã€‚ ã—ã‹ã—ã€åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ç„¡ä¿®æ­£ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 @@ -657,24 +659,24 @@ sess.lock(izi, LockMode.READ); sess.lock(pk, LockMode.UPGRADE);]]> - lock() ‚ÍA‚³‚Ü‚´‚Ü‚È - LockMode ‚Æ‚Æ‚à‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ÚׂÍAAPIƒhƒLƒ…ƒƒ“ƒg‚ƃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—‚ÌÍ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - ĒljÁ‚Ì‚Æ‚«‚É‚¾‚¯A lock() ‚ªŽg‚í‚ê‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + lock() ã¯ã€ã•ã¾ã–ã¾ãª + LockMode ã¨ã¨ã‚‚ã«ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + 詳細ã¯ã€APIドキュメントã¨ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç†ã®ç« ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + å†è¿½åŠ ã®ã¨ãã«ã ã‘〠lock() ãŒä½¿ã‚れるã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - ŠúŠÔ‚Ì’·‚¢ì‹Æ’PˆÊ‚ÌA‚»‚Ì‘¼‚̃‚ƒfƒ‹‚ÍA ‚Åq‚ׂĂ¢‚Ü‚·B + 期間ã®é•·ã„作業å˜ä½ã®ã€ãã®ä»–ã®ãƒ¢ãƒ‡ãƒ«ã¯ã€ ã§è¿°ã¹ã¦ã„ã¾ã™ã€‚ - Ž©“®“I‚Èó‘ÔŒŸo + 自動的ãªçŠ¶æ…‹æ¤œå‡º - Hibernate‚̃†[ƒU‚ÍŽŸ‚Ì2‚‚̃P[ƒX‚Ì‚Ç‚¿‚ç‚É‚àŽg‚¦‚é”Ä—p“I‚ȃƒ\ƒbƒh‚ð—v‹‚µ‚Ä‚¢‚Ü‚µ‚½B - ‚»‚ê‚ÍAV‚µ‚¢Ž¯•ÊŽq‚𶬂µ‚Ĉꎞ“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ðƒZ[ƒu‚·‚邱‚Æ‚ÆA - ‚»‚ÌŽž“_‚ÌŽ¯•ÊŽq‚ÆŠÖ˜A‚¢‚Ä‚¢‚镪—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðXV/ĒljÁ‚·‚邱‚Æ‚Ì‚Å‚«‚郃\ƒbƒh‚Å‚·B - saveOrUpdate() ‚Í‚±‚̂悤‚È‹@”\‚ðŽÀŒ»‚µ‚½ƒƒ\ƒbƒh‚Å‚·B + Hibernateã®ãƒ¦ãƒ¼ã‚¶ã¯æ¬¡ã®2ã¤ã®ã‚±ãƒ¼ã‚¹ã®ã©ã¡ã‚‰ã«ã‚‚使ãˆã‚‹æ±Žç”¨çš„ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¦æ±‚ã—ã¦ã„ã¾ã—ãŸã€‚ + ãã‚Œã¯ã€æ–°ã—ã„識別å­ã‚’生æˆã—ã¦ä¸€æ™‚çš„ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’セーブã™ã‚‹ã“ã¨ã¨ã€ + ãã®æ™‚点ã®è­˜åˆ¥å­ã¨é–¢é€£ã¥ã„ã¦ã„る分離インスタンスを更新/å†è¿½åŠ ã™ã‚‹ã“ã¨ã®ã§ãるメソッドã§ã™ã€‚ + saveOrUpdate() ã¯ã“ã®ã‚ˆã†ãªæ©Ÿèƒ½ã‚’実ç¾ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ã€‚ - saveOrUpdate() ‚ÌŽg—p•û–@‚ƈӖ¡‚ÍA - V‚µ‚¢ƒ†[ƒU‚É‚Æ‚Á‚Ĭ—‚𵂭‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚Ü‚¸‘æˆê‚ÉA‚ ‚éƒZƒbƒVƒ‡ƒ“‚ÅŽg—p‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ê‚ÌV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ÅŽg‚¨‚¤‚Æ‚µ‚È‚¢ŒÀ‚èA - update() ‚â saveOrUpdate() ‚â - merge() ‚ðŽg‚¤•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‘S‘Ì‚ð’Ê‚¶‚ÄA‚±‚ê‚ç‚̃ƒ\ƒbƒh‚ð‘S‚­Žg‚í‚È‚¢‚±‚Æ‚à‚ ‚è‚Ü‚·B + saveOrUpdate() ã®ä½¿ç”¨æ–¹æ³•ã¨æ„味ã¯ã€ + æ–°ã—ã„ユーザã«ã¨ã£ã¦æ··ä¹±ã‚’æ‹›ãã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã¾ãšç¬¬ä¸€ã«ã€ã‚るセッションã§ä½¿ç”¨ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’別ã®æ–°ã—ã„セッションã§ä½¿ãŠã†ã¨ã—ãªã„é™ã‚Šã€ + update() ã‚„ saveOrUpdate() ã‚„ + merge() を使ã†å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + アプリケーション全体を通ã˜ã¦ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å…¨ã使ã‚ãªã„ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚ - ’ÊíA update() ‚â saveOrUpdate() - ‚ÍŽŸ‚̃VƒiƒŠƒI‚Å Žg‚í‚ê‚Ü‚·B + 通常〠update() ã‚„ saveOrUpdate() + ã¯æ¬¡ã®ã‚·ãƒŠãƒªã‚ªã§ 使ã‚ã‚Œã¾ã™ã€‚ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªÅ‰‚̃ZƒbƒVƒ‡ƒ“‚ŃIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µ‚Ü‚·B + アプリケーションãŒæœ€åˆã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã‚ªãƒ–ジェクトをロードã—ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ªUI‘w‚É‘—‚ç‚ê‚Ü‚·B + オブジェクトãŒUI層ã«é€ã‚‰ã‚Œã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ɑ΂µ‚Ä•ÏX‚ª‰Á‚¦‚ç‚ê‚Ü‚·B + オブジェクトã«å¯¾ã—ã¦å¤‰æ›´ãŒåŠ ãˆã‚‰ã‚Œã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ªƒrƒWƒlƒXƒƒWƒbƒN‘w‚É‘—‚ç‚ê‚Ü‚·B + オブジェクトãŒãƒ“ジãƒã‚¹ãƒ­ã‚¸ãƒƒã‚¯å±¤ã«é€ã‚‰ã‚Œã¾ã™ã€‚ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA2”Ԗڂ̃ZƒbƒVƒ‡ƒ“‚Å update() - ‚ðŒÄ‚Ô‚±‚Æ‚ÅA‚±‚ê‚ç‚Ì•ÏX‚ð‰i‘±‰»‚µ‚Ü‚·B + アプリケーションã¯ã€2番目ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ update() + を呼ã¶ã“ã¨ã§ã€ã“れらã®å¤‰æ›´ã‚’永続化ã—ã¾ã™ã€‚ - saveOrUpdate() ‚͈ȉº‚Ì‚±‚Æ‚ðs‚¢‚Ü‚·B + saveOrUpdate() ã¯ä»¥ä¸‹ã®ã“ã¨ã‚’è¡Œã„ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ª‚±‚̃ZƒbƒVƒ‡ƒ“‚ÅA‚·‚łɉi‘±‰»‚³‚ê‚Ä‚¢‚ê‚ÎA‰½‚à‚µ‚Ü‚¹‚ñB + オブジェクトãŒã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã€ã™ã§ã«æ°¸ç¶šåŒ–ã•ã‚Œã¦ã„ã‚Œã°ã€ä½•ã‚‚ã—ã¾ã›ã‚“。 - ‚»‚̃ZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A‚¢‚Ä‚¢‚é•Ê‚̃IƒuƒWƒFƒNƒg‚ª“¯‚¶Ž¯•ÊŽq‚ðŽ‚Á‚Ä‚¢‚é‚È‚çA —áŠO‚ð“Š‚°‚Ü‚·B + ãã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«é–¢é€£ã¥ã„ã¦ã„る別ã®ã‚ªãƒ–ジェクトãŒåŒã˜è­˜åˆ¥å­ã‚’æŒã£ã¦ã„ã‚‹ãªã‚‰ã€ 例外を投ã’ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª’l‚ðŽ‚½‚È‚¢‚È‚ç‚ÎA save() ‚µ‚Ü‚·B + オブジェクトã®è­˜åˆ¥å­ãŒå€¤ã‚’æŒãŸãªã„ãªã‚‰ã°ã€ save() ã—ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª’l‚ðŽ‚¿A‚»‚Ì’l‚ªV‚½‚ɃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Ì‚½‚ß‚Ì’l‚Å‚ ‚éê‡A ‚»‚̃IƒuƒWƒFƒNƒg‚ð - save() ‚µ‚Ü‚·B + オブジェクトã®è­˜åˆ¥å­ãŒå€¤ã‚’æŒã¡ã€ãã®å€¤ãŒæ–°ãŸã«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•ã‚ŒãŸã‚ªãƒ–ジェクトã®ãŸã‚ã®å€¤ã§ã‚ã‚‹å ´åˆã€ ãã®ã‚ªãƒ–ジェクトを + save() ã—ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ªi <version> ‚â - <timestamp> ‚É‚æ‚Á‚Äj - ƒo[ƒWƒ‡ƒ“‚¯‚³‚ê‚Ä‚¢‚ÄAƒo[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚ª’l‚ðŽ‚¿A - ‚»‚Ì’l‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Ì‚½‚ß‚Ì’l‚Å‚ ‚éê‡A ‚»‚̃IƒuƒWƒFƒNƒg‚ð - save() ‚µ‚Ü‚·B + オブジェクトãŒï¼ˆ <version> ã‚„ + <timestamp> ã«ã‚ˆã£ã¦ï¼‰ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¥ã‘ã•ã‚Œã¦ã„ã¦ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ—ロパティãŒå€¤ã‚’æŒã¡ã€ + ãã®å€¤ãŒæ–°ã—ãインスタンス化ã•ã‚ŒãŸã‚ªãƒ–ジェクトã®ãŸã‚ã®å€¤ã§ã‚ã‚‹å ´åˆã€ ãã®ã‚ªãƒ–ジェクトを + save() ã—ã¾ã™ã€‚ - ‚»‚¤‚Å‚È‚¢ê‡‚ÍA‚»‚̃IƒuƒWƒFƒNƒg‚ð update() ‚µ‚Ü‚·B + ãã†ã§ãªã„å ´åˆã¯ã€ãã®ã‚ªãƒ–ジェクトを update() ã—ã¾ã™ã€‚ - ‚»‚µ‚ÄA merge() ‚͈ȉº‚̂悤‚É‚Æ‚Ä‚àˆÙ‚È‚è‚Ü‚·B + ãã—ã¦ã€ merge() ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã¨ã¦ã‚‚ç•°ãªã‚Šã¾ã™ã€‚ - “¯‚¶Ž¯•ÊŽq‚ðŽ‚‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‚»‚ÌŽž“_‚ŃZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A•t‚¢‚Ä‚¢‚é‚È‚ç‚ÎA - ˆø”‚Ŏ󂯎æ‚Á‚½ƒIƒuƒWƒFƒNƒg‚Ìó‘Ô‚ð‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ɃRƒs[‚µ‚Ü‚·B + åŒã˜è­˜åˆ¥å­ã‚’æŒã¤æ°¸ç¶šåŒ–インスタンスãŒãã®æ™‚点ã§ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¨é–¢é€£ä»˜ã„ã¦ã„ã‚‹ãªã‚‰ã°ã€ + 引数ã§å—ã‘å–ã£ãŸã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã‚’永続化インスタンスã«ã‚³ãƒ”ーã—ã¾ã™ã€‚ - ‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‚»‚ÌŽž“_‚ŃZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A•t‚¢‚Ä‚¢‚È‚¢‚È‚çA - ƒf[ƒ^ƒx[ƒX‚©‚ç‚»‚ê‚ðƒ[ƒh‚·‚é‚©A‚ ‚é‚¢‚ÍAV‚µ‚¢‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ð쬂µ‚Ü‚·B + 永続化インスタンスãŒãã®æ™‚点ã§ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«é–¢é€£ä»˜ã„ã¦ã„ãªã„ãªã‚‰ã€ + データベースã‹ã‚‰ãれをロードã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã€æ–°ã—ã„永続化インスタンスを作æˆã—ã¾ã™ã€‚ - ‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª•Ô‚³‚ê‚Ü‚·B + 永続化インスタンスãŒè¿”ã•ã‚Œã¾ã™ã€‚ - ˆø”‚Æ‚µ‚Ä—^‚¦‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚̓ZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A‚ðŽ‚¿‚Ü‚¹‚ñB ‚»‚ê‚ÍA•ª—£ó‘Ô‚Ì‚Ü‚Ü‚Å‚·B + 引数ã¨ã—ã¦ä¸ŽãˆãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¨é–¢é€£ã‚’æŒã¡ã¾ã›ã‚“。 ãã‚Œã¯ã€åˆ†é›¢çŠ¶æ…‹ã®ã¾ã¾ã§ã™ã€‚ @@ -780,28 +782,28 @@ secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id) - ‰i‘±ƒIƒuƒWƒFƒNƒg‚Ìíœ + 永続オブジェクトã®å‰Šé™¤ Session.delete() - ‚̓IƒuƒWƒFƒNƒg‚Ìó‘Ô‚ðƒf[ƒ^ƒx[ƒX‚©‚ç휂µ‚Ü‚·B ‚à‚¿‚ë‚ñA휂µ‚½ƒIƒuƒWƒFƒNƒg‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•ÛŽ‚µ‚½‚Ü‚Ü‚Å‚à‚æ‚¢‚Å‚·B - ‚»‚Ì‚½‚ßA delete() ‚͉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚ðˆêŽž“I‚É‚·‚é‚à‚Ì‚Æl‚¦‚é‚Ì‚ªˆê”Ô‚Å‚·B + ã¯ã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã‚’データベースã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚ ã‚‚ã¡ã‚ã‚“ã€å‰Šé™¤ã—ãŸã‚ªãƒ–ジェクトをアプリケーションãŒä¿æŒã—ãŸã¾ã¾ã§ã‚‚よã„ã§ã™ã€‚ + ãã®ãŸã‚〠delete() ã¯æ°¸ç¶šã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’一時的ã«ã™ã‚‹ã‚‚ã®ã¨è€ƒãˆã‚‹ã®ãŒä¸€ç•ªã§ã™ã€‚ - ŠO•”ƒL[§–ñ‚Ɉᔽ‚·‚郊ƒXƒN‚à‚È‚­AD‚«‚ȇ”ԂŃIƒuƒWƒFƒNƒg‚ð휂·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚½‚¾‚µAŠÔˆá‚Á‚½‡”ԂŃIƒuƒWƒFƒNƒg‚ð휂·‚é‚ÆAŠO•”ƒL[ƒJƒ‰ƒ€‚Ì NOT NULL - §–ñ‚Ɉᔽ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B —Ⴆ‚ÎAeƒIƒuƒWƒFƒNƒg‚ð휂µ‚½‚Æ‚«‚ÉAŽq‹ŸƒIƒuƒWƒFƒNƒg‚ð휂µ–Y‚ꂽꇂł·B + 外部キー制約ã«é•åã™ã‚‹ãƒªã‚¹ã‚¯ã‚‚ãªãã€å¥½ããªé †ç•ªã§ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ãŸã ã—ã€é–“é•ã£ãŸé †ç•ªã§ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã¨ã€å¤–部キーカラム㮠NOT NULL + 制約ã«é•åã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ 例ãˆã°ã€è¦ªã‚ªãƒ–ジェクトを削除ã—ãŸã¨ãã«ã€å­ä¾›ã‚ªãƒ–ジェクトを削除ã—忘れãŸå ´åˆã§ã™ã€‚ - ˆÙ‚È‚é“ñ‚‚̃f[ƒ^ƒXƒgƒAŠÔ‚ł̃IƒuƒWƒFƒNƒg‚̃ŒƒvƒŠƒP[ƒVƒ‡ƒ“ + ç•°ãªã‚‹äºŒã¤ã®ãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆã‚¢é–“ã§ã®ã‚ªãƒ–ジェクトã®ãƒ¬ãƒ—リケーション - ‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚̃Oƒ‰ƒt‚ð•Ê‚̃f[ƒ^ƒXƒgƒA‚ɉi‘±‰»‚·‚éꇂÉA - Ž¯•ÊŽq‚Ì’l‚ðĶ¬‚¹‚¸‚É‚·‚Þ‚Æ•Ö—˜‚Èꇂª‚ ‚è‚Ü‚·B + 永続インスタンスã®ã‚°ãƒ©ãƒ•ã‚’別ã®ãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆã‚¢ã«æ°¸ç¶šåŒ–ã™ã‚‹å ´åˆã«ã€ + 識別å­ã®å€¤ã‚’å†ç”Ÿæˆã›ãšã«ã™ã‚€ã¨ä¾¿åˆ©ãªå ´åˆãŒã‚ã‚Šã¾ã™ã€‚ - ƒŒƒvƒŠƒP[ƒVƒ‡ƒ“æ‚̃f[ƒ^ƒx[ƒX‚És‚ªŠù‚É‚ ‚éê‡A replicate() - ‚ªÕ“Ë‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ð ReplicationMode ‚ÅŽw’肵‚Ü‚·B + レプリケーション先ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«è¡ŒãŒæ—¢ã«ã‚ã‚‹å ´åˆã€ replicate() + ãŒè¡çªã‚’ã©ã®ã‚ˆã†ã«æ‰±ã†ã‹ã‚’ ReplicationMode ã§æŒ‡å®šã—ã¾ã™ã€‚ ReplicationMode.IGNORE - - “¯‚¶Ž¯•ÊŽq‚ðŽ‚Âs‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚È‚çA ‚»‚̃IƒuƒWƒFƒNƒg‚𖳎‹‚µ‚Ü‚·B + åŒã˜è­˜åˆ¥å­ã‚’æŒã¤è¡ŒãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å­˜åœ¨ã™ã‚‹ãªã‚‰ã€ ãã®ã‚ªãƒ–ジェクトを無視ã—ã¾ã™ã€‚ - ReplicationMode.OVERWRITE - “¯‚¶Ž¯•ÊŽq‚ðŽ‚Šù‘¶‚Ìs‚ð - ‚·‚ׂÄã‘‚«‚µ‚Ü‚·B + ReplicationMode.OVERWRITE - åŒã˜è­˜åˆ¥å­ã‚’æŒã¤æ—¢å­˜ã®è¡Œã‚’ + ã™ã¹ã¦ä¸Šæ›¸ãã—ã¾ã™ã€‚ ReplicationMode.EXCEPTION - - “¯‚¶Ž¯•ÊŽq‚ðŽ‚Âs‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚È‚çA —áŠO‚ð“Š‚°‚Ü‚·B + åŒã˜è­˜åˆ¥å­ã‚’æŒã¤è¡ŒãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å­˜åœ¨ã™ã‚‹ãªã‚‰ã€ 例外を投ã’ã¾ã™ã€‚ ReplicationMode.LATEST_VERSION - - s‚É•Û‘¶‚³‚ê‚Ä‚¢‚éƒo[ƒWƒ‡ƒ“”Ô†‚ªA ˆø”‚̃IƒuƒWƒFƒNƒg‚̃o[ƒWƒ‡ƒ“”Ô†‚æ‚èŒÃ‚¢‚È‚ç‚ÎA‚»‚Ìs‚ðã‘‚«‚µ‚Ü‚·B + è¡Œã«ä¿å­˜ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒã€ 引数ã®ã‚ªãƒ–ジェクトã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚ˆã‚Šå¤ã„ãªã‚‰ã°ã€ãã®è¡Œã‚’上書ãã—ã¾ã™ã€‚ - ŽŸ‚̂悤‚ȃP[ƒX‚ÅA‚±‚Ì‹@”\‚ðŽg—p‚µ‚Ü‚·B ˆÙ‚È‚éƒf[ƒ^ƒx[ƒXƒCƒ“ƒXƒ^ƒ“ƒX‚É“ü‚ê‚ç‚ꂽƒf[ƒ^‚Ì“¯ŠúA - »•iXVŽž‚É‚¨‚¯‚éƒVƒXƒeƒ€Ý’èî•ñ‚ÌXVA”ñACIDƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚È‚©‚ʼnÁ‚¦‚ç‚ꂽ•ÏX‚̃[ƒ‹ƒoƒbƒN‚È‚Ç‚Å‚·B + 次ã®ã‚ˆã†ãªã‚±ãƒ¼ã‚¹ã§ã€ã“ã®æ©Ÿèƒ½ã‚’使用ã—ã¾ã™ã€‚ ç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å…¥ã‚Œã‚‰ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã®åŒæœŸã€ + 製å“更新時ã«ãŠã‘るシステム設定情報ã®æ›´æ–°ã€éžACIDトランザクションã®ãªã‹ã§åŠ ãˆã‚‰ã‚ŒãŸå¤‰æ›´ã®ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ãªã©ã§ã™ã€‚ - ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ… + セッションã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ - JDBCƒRƒlƒNƒVƒ‡ƒ“‚Ìó‘Ԃƃƒ‚ƒŠã‚̃IƒuƒWƒFƒNƒg‚Ìó‘Ԃ𓯊ú‚³‚¹‚邽‚ß‚É•K—v‚È - SQL•¶‚ð Session ‚ªŽÀs‚·‚邱‚Æ‚ª‚Æ‚«‚Ç‚«‚ ‚è‚Ü‚·B ‚±‚̈— - flush ‚ÍAƒfƒtƒHƒ‹ƒg‚Å‚ÍŽŸ‚Ì‚Æ‚«‚É‹N‚±‚è‚Ü‚·B + JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã®çŠ¶æ…‹ã¨ãƒ¡ãƒ¢ãƒªä¸Šã®ã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã‚’åŒæœŸã•ã›ã‚‹ãŸã‚ã«å¿…è¦ãª + SQL文を Session ãŒå®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã¨ãã©ãã‚ã‚Šã¾ã™ã€‚ ã“ã®å‡¦ç† + flush ã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯æ¬¡ã®ã¨ãã«èµ·ã“ã‚Šã¾ã™ã€‚ - ƒNƒGƒŠ‚ðŽÀs‚·‚é‘O + クエリを実行ã™ã‚‹å‰ - org.hibernate.Transaction.commit() ‚ðŽÀs‚µ‚½‚Æ‚« + org.hibernate.Transaction.commit() を実行ã—ãŸã¨ã - Session.flush() ‚ðŽÀs‚µ‚½‚Æ‚« + Session.flush() を実行ã—ãŸã¨ã - SQL•¶‚͈ȉº‚̇”Ô‚Å”­s‚³‚ê‚Ü‚·B + SQLæ–‡ã¯ä»¥ä¸‹ã®é †ç•ªã§ç™ºè¡Œã•ã‚Œã¾ã™ã€‚ - ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚Ì‘}“üB‚±‚ê‚ÍA Session.save() ‚ðŽg‚Á‚ăZ[ƒu‚µ‚½ - ƒIƒuƒWƒFƒNƒg‚̇‚ÉŽÀs‚µ‚Ä‚¢‚«‚Ü‚·B + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®æŒ¿å…¥ã€‚ã“ã‚Œã¯ã€ Session.save() を使ã£ã¦ã‚»ãƒ¼ãƒ–ã—㟠+ オブジェクトã®é †ã«å®Ÿè¡Œã—ã¦ã„ãã¾ã™ã€‚ - ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ÌXV + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®æ›´æ–° - ‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚Ìíœ + ã™ã¹ã¦ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å‰Šé™¤ - ‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ɑ΂·‚éíœAXVA‘}“ü + ã™ã¹ã¦ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®è¦ç´ ã«å¯¾ã™ã‚‹å‰Šé™¤ã€æ›´æ–°ã€æŒ¿å…¥ - ‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚Ì‘}“ü + ã™ã¹ã¦ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æŒ¿å…¥ - ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ÌíœB‚±‚ê‚ÍASession.delete() ‚ðŽg‚Á‚Ä - 휂µ‚½ƒIƒuƒWƒFƒNƒg‚̇‚ÉŽÀs‚µ‚Ä‚¢‚«‚Ü‚·B + ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å‰Šé™¤ã€‚ã“ã‚Œã¯ã€Session.delete() を使ã£ã¦ + 削除ã—ãŸã‚ªãƒ–ジェクトã®é †ã«å®Ÿè¡Œã—ã¦ã„ãã¾ã™ã€‚ - (‚P‚—áŠO‚ª‚ ‚è‚Ü‚·B native ID ¶¬‚ðŽg‚Á‚½ƒIƒuƒWƒFƒNƒg‚ÍA - ‚»‚ê‚炪ƒZ[ƒu‚³‚ꂽ‚Æ‚«‚É‘}“ü‚³‚ê‚Ü‚·Bj + (1ã¤ä¾‹å¤–ãŒã‚ã‚Šã¾ã™ã€‚ native ID 生æˆã‚’使ã£ãŸã‚ªãƒ–ジェクトã¯ã€ + ãれらãŒã‚»ãƒ¼ãƒ–ã•ã‚ŒãŸã¨ãã«æŒ¿å…¥ã•ã‚Œã¾ã™ã€‚) - –¾Ž¦“I‚É - flush() ‚·‚é‚Æ‚«‚𜂢‚ÄA ‚¢‚ - Session ‚ªJDBC‚ðƒR[ƒ‹‚·‚é‚Ì‚©‚ɂ‚¢‚Ä - â‘ΓI‚È•ÛØ‚Í‚ ‚è‚Ü‚¹‚ñB‚½‚¾‚µA‚»‚ê‚炪ŽÀs‚³‚ê‚é ‡”Ô ‚¾‚¯‚Í •ÛØ‚³‚ê‚Ü‚·B - ‚Ü‚½AHibernate ‚ÍA Query.list(..) ‚ªŒÃ‚¢ƒf[ƒ^‚âŠÔˆá‚Á‚½ƒf[ƒ^•Ô‚³‚È‚¢‚±‚Æ‚ð - •ÛØ‚µ‚Ä‚¢‚Ü‚·B + 明示的㫠+ flush() ã™ã‚‹ã¨ãを除ã„ã¦ã€ ã„㤠+ Session ãŒJDBCをコールã™ã‚‹ã®ã‹ã«ã¤ã„㦠+ 絶対的ãªä¿è¨¼ã¯ã‚ã‚Šã¾ã›ã‚“。ãŸã ã—ã€ãれらãŒå®Ÿè¡Œã•ã‚Œã‚‹ 順番 ã ã‘㯠ä¿è¨¼ã•ã‚Œã¾ã™ã€‚ + ã¾ãŸã€Hibernate ã¯ã€ Query.list(..) ãŒå¤ã„データや間é•ã£ãŸãƒ‡ãƒ¼ã‚¿è¿”ã•ãªã„ã“ã¨ã‚’ + ä¿è¨¼ã—ã¦ã„ã¾ã™ã€‚ - ƒtƒ‰ƒbƒVƒ…‚ª•p”É‚É‹N‚±‚ç‚È‚¢‚悤‚ɃfƒtƒHƒ‹ƒg‚ÌU‚é•‘‚¢‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B FlushMode - ƒNƒ‰ƒX‚Í3‚‚̈قȂ郂[ƒh‚ð’è‹`‚µ‚Ü‚·B ‚»‚ê‚ÍAƒRƒ~ƒbƒgŽž‚É‚¾‚¯ƒtƒ‰ƒbƒVƒ…‚·‚郂[ƒh iHibernate‚Ì - Transaction API‚ªŽg‚í‚ê‚éꇂ¾‚¯‚Å‚·jA - à–¾‚Ì‚ ‚Á‚½ˆ—‡‚ÉŠî‚¢‚ÄŽ©“®‚Ńtƒ‰ƒbƒVƒ…‚·‚郂[ƒhA flush() - ‚ª–¾Ž¦“I‚ɌĂ΂ê‚È‚¢ŒÀ‚èƒtƒ‰ƒbƒVƒ…‚µ‚È‚¢ƒ‚[ƒh‚Ì‚R‚‚ł·B ÅŒã‚̃‚[ƒh‚ÍAì‹Æ’PˆÊ‚ª’·ŠúŠÔ‚É‹y‚Ôꇂɖð‚É—§‚¿‚Ü‚· ( ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢)B + フラッシュãŒé »ç¹ã«èµ·ã“らãªã„よã†ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æŒ¯ã‚‹èˆžã„を変ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ FlushMode + クラスã¯3ã¤ã®ç•°ãªã‚‹ãƒ¢ãƒ¼ãƒ‰ã‚’定義ã—ã¾ã™ã€‚ ãã‚Œã¯ã€ã‚³ãƒŸãƒƒãƒˆæ™‚ã«ã ã‘フラッシュã™ã‚‹ãƒ¢ãƒ¼ãƒ‰ (Hibernateã® + Transaction APIãŒä½¿ã‚れる場åˆã ã‘ã§ã™ï¼‰ã€ + 説明ã®ã‚ã£ãŸå‡¦ç†é †ã«åŸºã¥ã„ã¦è‡ªå‹•ã§ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹ãƒ¢ãƒ¼ãƒ‰ã€ flush() + ãŒæ˜Žç¤ºçš„ã«å‘¼ã°ã‚Œãªã„é™ã‚Šãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã—ãªã„モードã®ï¼“ã¤ã§ã™ã€‚ 最後ã®ãƒ¢ãƒ¼ãƒ‰ã¯ã€ä½œæ¥­å˜ä½ãŒé•·æœŸé–“ã«åŠã¶å ´åˆã«å½¹ã«ç«‹ã¡ã¾ã™ ( ã‚’å‚ç…§ã—ã¦ãã ã•ã„)。 @@ -941,162 +943,162 @@ sess.find("from Cat as cat left outer join cat.kittens kitten"); tx.commit(); // flush occurs sess.close();]]> - ƒtƒ‰ƒbƒVƒ…‚Ì‚Æ‚«A—áŠO‚ª”­¶‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - i—Ⴆ‚ÎADML‘€ì‚ª§–ñ‚ðˆá”½‚·‚é‚悤‚Èꇂł·Bj - —áŠOˆ—‚ð—‰ð‚·‚邽‚ß‚É‚ÍAHibernate‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌU‚é•‘‚¢‚ð—‰ð‚·‚é•K—v‚ª‚ ‚邽‚ßA ‚Åà–¾‚µ‚Ü‚·B + フラッシュã®ã¨ãã€ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + (例ãˆã°ã€DMLæ“作ãŒåˆ¶ç´„ã‚’é•åã™ã‚‹ã‚ˆã†ãªå ´åˆã§ã™ã€‚) + 例外処ç†ã‚’ç†è§£ã™ã‚‹ãŸã‚ã«ã¯ã€Hibernateã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æŒ¯ã‚‹èˆžã„ã‚’ç†è§£ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚〠ã§èª¬æ˜Žã—ã¾ã™ã€‚ - ˜A½“I‚ȉi‘±‰» + 連鎖的ãªæ°¸ç¶šåŒ– - ŒÂX‚̃IƒuƒWƒFƒNƒg‚ðƒZ[ƒu‚µ‚½‚èA휂µ‚½‚èAĒljÁ‚µ‚½‚è‚·‚邱‚Æ‚Í - ‚©‚È‚è–Ê“|‚Å‚·B“Á‚ÉAŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤‚悤‚ÈꇂɂÍÛ—§‚¿‚Ü‚·B ‚æ‚­‚ ‚é‚Ì‚ÍAeŽqŠÖŒW‚ðˆµ‚¤ƒP[ƒX‚Å‚·B - ˆÈ‰º‚Ì—á‚ðl‚¦‚Ä‚Ý‚Ü‚µ‚傤B + 個々ã®ã‚ªãƒ–ジェクトをセーブã—ãŸã‚Šã€å‰Šé™¤ã—ãŸã‚Šã€å†è¿½åŠ ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ + ã‹ãªã‚Šé¢å€’ã§ã™ã€‚特ã«ã€é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトを扱ã†ã‚ˆã†ãªå ´åˆã«ã¯éš›ç«‹ã¡ã¾ã™ã€‚ よãã‚ã‚‹ã®ã¯ã€è¦ªå­é–¢ä¿‚を扱ã†ã‚±ãƒ¼ã‚¹ã§ã™ã€‚ + 以下ã®ä¾‹ã‚’考ãˆã¦ã¿ã¾ã—ょã†ã€‚ - ‚à‚µAeŽqŠÖŒW‚ÌŽq‚ª’lŒ^‚È‚çi—Ⴆ‚ÎAZŠ‚╶Žš—ñ‚̃RƒŒƒNƒVƒ‡ƒ“jA - ‚»‚ê‚ç‚̃‰ƒCƒtƒTƒCƒNƒ‹‚Íe‚Ɉˑ¶‚µ‚Ä‚¨‚èA•Ö—˜‚Èó‘ԕω»‚Ì"ƒJƒXƒP[ƒh"‚ðŽg‚¤‚½‚ß‚ÉA ’ljÁ‚Ìì‹Æ‚Í•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - e‚ªƒZ[ƒu‚³‚ꂽ‚Æ‚«A’lŒ^‚ÌŽqƒIƒuƒWƒFƒNƒg‚à“¯‚¶‚悤‚ɃZ[ƒu‚³‚ê‚Ü‚·‚µA e‚ªíœ‚³‚ꂽ‚Æ‚«‚ÍAŽq‚à휂³‚ê‚Ü‚·B‚»‚Ì‘¼‚Ì‘€ì‚à“¯‚¶‚Å‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç1‚‚̎q‚ð휂·‚é‚悤‚È‘€ì‚Å‚à‚¤‚Ü‚­‚¢‚«‚Ü‚·B ‚·‚È‚í‚¿AHibernate‚Í‚±‚Ì휑€ì‚ðŒŸo‚·‚é‚ÆA - ’lŒ^‚̃IƒuƒWƒFƒNƒg‚ÍŽQÆ‚ð‹¤—L‚Å‚«‚È‚¢‚Ì‚ÅAƒf[ƒ^ƒx[ƒX‚©‚ç‚»‚ÌŽq‹Ÿ‚ð휂µ‚Ü‚·B + ã‚‚ã—ã€è¦ªå­é–¢ä¿‚ã®å­ãŒå€¤åž‹ãªã‚‰ï¼ˆä¾‹ãˆã°ã€ä½æ‰€ã‚„文字列ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ï¼‰ã€ + ãれらã®ãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã¯è¦ªã«ä¾å­˜ã—ã¦ãŠã‚Šã€ä¾¿åˆ©ãªçŠ¶æ…‹å¤‰åŒ–ã®"カスケード"を使ã†ãŸã‚ã«ã€ 追加ã®ä½œæ¥­ã¯å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + 親ãŒã‚»ãƒ¼ãƒ–ã•ã‚ŒãŸã¨ãã€å€¤åž‹ã®å­ã‚ªãƒ–ジェクトもåŒã˜ã‚ˆã†ã«ã‚»ãƒ¼ãƒ–ã•ã‚Œã¾ã™ã—〠親ãŒå‰Šé™¤ã•ã‚ŒãŸã¨ãã¯ã€å­ã‚‚削除ã•ã‚Œã¾ã™ã€‚ãã®ä»–ã®æ“作もåŒã˜ã§ã™ã€‚ + コレクションã‹ã‚‰1ã¤ã®å­ã‚’削除ã™ã‚‹ã‚ˆã†ãªæ“作ã§ã‚‚ã†ã¾ãã„ãã¾ã™ã€‚ ã™ãªã‚ã¡ã€Hibernateã¯ã“ã®å‰Šé™¤æ“作を検出ã™ã‚‹ã¨ã€ + 値型ã®ã‚ªãƒ–ジェクトã¯å‚照を共有ã§ããªã„ã®ã§ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãã®å­ä¾›ã‚’削除ã—ã¾ã™ã€‚ - ‚±‚±‚ÅAe‚ÆŽq‚ª’lŒ^‚Å‚È‚­ƒGƒ“ƒeƒBƒeƒB‚Å‚ ‚é‚Æ‚µ‚Ä“¯‚¶ƒVƒiƒŠƒI‚ðl‚¦‚Ä‚Ý‚Ü‚µ‚傤B - i—Ⴆ‚ÎAƒJƒeƒSƒŠ[‚Æ•i–Ú‚ÌŠÖŒW‚âe‚ÆŽq‚Ì”L‚ÌŠÖŒW‚Å‚·Bj ƒGƒ“ƒeƒBƒeƒB‚ÍA‚»‚ꎩg‚ªƒ‰ƒCƒtƒTƒCƒNƒ‹‚ðŽ‚¿AŽQÆ‚Ì‹¤—L‚ðƒTƒ|[ƒg‚µ‚Ü‚·B - i‚»‚Ì‚½‚ßAƒRƒŒƒNƒVƒ‡ƒ“‚©‚çƒGƒ“ƒeƒBƒeƒB‚ð휂·‚邱‚Æ‚ÍA ƒGƒ“ƒeƒBƒeƒBŽ©g‚Ì휂ðˆÓ–¡‚µ‚Ü‚¹‚ñBj - ‚Ü‚½AƒGƒ“ƒeƒBƒeƒB‚ÍAƒfƒtƒHƒ‹ƒg‚Å‚ÍAŠÖ˜A‚·‚鑼‚̃Gƒ“ƒeƒBƒeƒB‚Ö ó‘Ô‚ðƒJƒXƒP[ƒh‚·‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB Hibernate‚Í - “ž’B‰Â”\«‚É‚æ‚é‰i‘±‰» ‚ðƒfƒtƒHƒ‹ƒg‚Å‚ÍŽÀs‚µ‚Ü‚¹‚ñB + ã“ã“ã§ã€è¦ªã¨å­ãŒå€¤åž‹ã§ãªãエンティティã§ã‚ã‚‹ã¨ã—ã¦åŒã˜ã‚·ãƒŠãƒªã‚ªã‚’考ãˆã¦ã¿ã¾ã—ょã†ã€‚ + (例ãˆã°ã€ã‚«ãƒ†ã‚´ãƒªãƒ¼ã¨å“ç›®ã®é–¢ä¿‚や親ã¨å­ã®çŒ«ã®é–¢ä¿‚ã§ã™ã€‚) エンティティã¯ã€ãれ自身ãŒãƒ©ã‚¤ãƒ•ã‚µã‚¤ã‚¯ãƒ«ã‚’æŒã¡ã€å‚ç…§ã®å…±æœ‰ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ + (ãã®ãŸã‚ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’削除ã™ã‚‹ã“ã¨ã¯ã€ エンティティ自身ã®å‰Šé™¤ã‚’æ„味ã—ã¾ã›ã‚“。) + ã¾ãŸã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯ã€é–¢é€£ã™ã‚‹ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ 状態をカスケードã™ã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 Hibernate㯠+ 到é”å¯èƒ½æ€§ã«ã‚ˆã‚‹æ°¸ç¶šåŒ– をデフォルトã§ã¯å®Ÿè¡Œã—ã¾ã›ã‚“。 - Hibernate‚ÌSession‚ÌŠî–{‘€ìi persist(), merge(), saveOrUpdate(), - delete(), lock(), refresh(), evict(), replicate() ‚ªŠÜ‚Ü‚ê‚Ü‚·j‚ɑ΂µ‚ÄA - ‚»‚ꂼ‚ê‚ɑΉž‚·‚éƒJƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ª‚ ‚è‚Ü‚·B ‚»‚ꂼ‚ê‚̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹‚É‚ÍA create, merge, + Hibernateã®Sessionã®åŸºæœ¬æ“作( persist(), merge(), saveOrUpdate(), + delete(), lock(), refresh(), evict(), replicate() ãŒå«ã¾ã‚Œã¾ã™ï¼‰ã«å¯¾ã—ã¦ã€ + ãã‚Œãžã‚Œã«å¯¾å¿œã™ã‚‹ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã‚¹ã‚¿ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã™ã€‚ ãã‚Œãžã‚Œã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã‚¹ã‚¿ã‚¤ãƒ«ã«ã¯ã€ create, merge, save-update, delete, lock, refresh, evict, replicate - ‚Æ‚¢‚¤–¼‘O‚ª‚‚¢‚Ä‚¢‚Ü‚·B ‚à‚µAŠÖ˜A‚ɉˆ‚Á‚ăJƒXƒP[ƒh‚³‚¹‚½‚¢‘€ì‚ª‚ ‚é‚È‚çAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚É‚»‚¤Žw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - —Ⴆ‚ÎAˆÈ‰º‚̂悤‚É‚µ‚Ü‚·B + ã¨ã„ã†åå‰ãŒã¤ã„ã¦ã„ã¾ã™ã€‚ ã‚‚ã—ã€é–¢é€£ã«æ²¿ã£ã¦ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã•ã›ãŸã„æ“作ãŒã‚ã‚‹ãªã‚‰ã€ãƒžãƒƒãƒ”ングファイルã«ãã†æŒ‡å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 例ãˆã°ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚ ]]> - ƒJƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ÍA‘g‚݇‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + カスケードスタイルã¯ã€çµ„ã¿åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ]]> - ‚·‚×‚Ä‚Ì - ‘€ì‚ðŠÖ˜A‚ɉˆ‚Á‚ăJƒXƒP[ƒh‚·‚é‚悤Žw’è‚·‚é‚Æ‚«‚ÍA cascade="all" ‚ðŽg‚¢‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Ì cascade="none" ‚ÍA‚Ç‚Ì‘€ì‚àƒJƒXƒP[ƒh‚µ‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + ã™ã¹ã¦ã® + æ“作を関連ã«æ²¿ã£ã¦ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†æŒ‡å®šã™ã‚‹ã¨ãã¯ã€ cascade="all" を使ã„ã¾ã™ã€‚ + デフォルト㮠cascade="none" ã¯ã€ã©ã®æ“作もカスケードã—ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - “ÁŽê‚ȃJƒXƒP[ƒhƒXƒ^ƒCƒ‹ - delete-orphan ‚ÍAˆê‘Α½ŠÖ˜A‚É‚¾‚¯ “K—p‚Å‚«‚Ü‚·B - ‚±‚ê‚ÍAŠÖ˜A‚©‚ç휂³‚ꂽŽq‹Ÿ‚̃IƒuƒWƒFƒNƒg‚ɑ΂µ‚ÄA delete() - ‘€ì‚ª“K—p‚³‚ê‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + 特殊ãªã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã‚¹ã‚¿ã‚¤ãƒ« + delete-orphan ã¯ã€ä¸€å¯¾å¤šé–¢é€£ã«ã ã‘ é©ç”¨ã§ãã¾ã™ã€‚ + ã“ã‚Œã¯ã€é–¢é€£ã‹ã‚‰å‰Šé™¤ã•ã‚ŒãŸå­ä¾›ã®ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã€ delete() + æ“作ãŒé©ç”¨ã•ã‚Œã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - ‚¨‚·‚·‚ßF + ãŠã™ã™ã‚: - •’ÊA <many-to-one> ‚â - <many-to-many> ŠÖ˜A‚ɑ΂µ‚Ä‚ÍA - ƒJƒXƒP[ƒh‚ðÝ’è‚·‚éˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñB <one-to-one> ‚Æ - <one-to-many> ŠÖ˜A‚ɑ΂µ‚Ä‚ÍA - ƒJƒXƒP[ƒh‚ª–ð‚É—§‚‚±‚Æ‚ª‚ ‚è‚Ü‚·B + 普通〠<many-to-one> ã‚„ + <many-to-many> 関連ã«å¯¾ã—ã¦ã¯ã€ + カスケードを設定ã™ã‚‹æ„味ã¯ã‚ã‚Šã¾ã›ã‚“。 <one-to-one> 㨠+ <one-to-many> 関連ã«å¯¾ã—ã¦ã¯ã€ + カスケードãŒå½¹ã«ç«‹ã¤ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ - Žq‹ŸƒIƒuƒWƒFƒNƒg‚ÌŽõ–½‚ªeƒIƒuƒWƒFƒNƒg‚ÌŽõ–½‚ɧŒÀ‚ðŽó‚¯‚é‚È‚ç‚ÎA - cascade="all,delete-orphan" ‚ðŽw’肵A Žq‹ŸƒIƒuƒWƒFƒNƒg‚ð - ƒ‰ƒCƒtƒTƒCƒNƒ‹ƒIƒuƒWƒFƒNƒg ‚É‚µ‚Ü‚·B + å­ä¾›ã‚ªãƒ–ジェクトã®å¯¿å‘½ãŒè¦ªã‚ªãƒ–ジェクトã®å¯¿å‘½ã«åˆ¶é™ã‚’å—ã‘ã‚‹ãªã‚‰ã°ã€ + cascade="all,delete-orphan" を指定ã—〠å­ä¾›ã‚ªãƒ–ジェクトを + ライフサイクルオブジェクト ã«ã—ã¾ã™ã€‚ . - ‚»‚êˆÈŠO‚ÌꇂÍAƒJƒXƒP[ƒh‚Í‚Ù‚Æ‚ñ‚Ç•K—v‚È‚¢‚Å‚µ‚傤B - ‚µ‚©‚µA“¯‚¶ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚È‚©‚Åe‚ÆŽq‚ªˆê‚É“®ì‚·‚邱‚Æ‚ª‘½‚¢‚ÆŽv‚¢A - ‚¢‚­‚ç‚©‚̃R[ƒh‚ð‘‚­ŽèŠÔ‚ðÈ‚«‚½‚¢‚Ì‚Å‚ ‚ê‚ÎA + ãれ以外ã®å ´åˆã¯ã€ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã¯ã»ã¨ã‚“ã©å¿…è¦ãªã„ã§ã—ょã†ã€‚ + ã—ã‹ã—ã€åŒã˜ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ãªã‹ã§è¦ªã¨å­ãŒä¸€ç·’ã«å‹•ä½œã™ã‚‹ã“ã¨ãŒå¤šã„ã¨æ€ã„〠+ ã„ãらã‹ã®ã‚³ãƒ¼ãƒ‰ã‚’書ã手間をçœããŸã„ã®ã§ã‚ã‚Œã°ã€ cascade="persist,merge,save-update" - ‚ðŽg‚¤‚±‚Æ‚ðl‚¦‚Ü‚µ‚傤B + を使ã†ã“ã¨ã‚’考ãˆã¾ã—ょã†ã€‚ - cascade="all" ‚Ń}ƒbƒsƒ“ƒO‚µ‚½ŠÖ˜Ai’P’lŠÖ˜A‚âƒRƒŒƒNƒVƒ‡ƒ“j‚ÍA - eŽq ƒXƒ^ƒCƒ‹‚ÌŠÖ˜A‚ƃ}[ƒN‚³‚ê‚Ü‚·B - ‚»‚ê‚ÍAe‚̃Z[ƒu/XV/휂ªAŽq‚̃Z[ƒu/XV/휂ðˆø‚«‹N‚±‚·ŠÖŒW‚Ì‚±‚Æ‚Å‚·B + cascade="all" ã§ãƒžãƒƒãƒ”ングã—ãŸé–¢é€£ï¼ˆå˜å€¤é–¢é€£ã‚„コレクション)ã¯ã€ + è¦ªå­ ã‚¹ã‚¿ã‚¤ãƒ«ã®é–¢é€£ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¾ã™ã€‚ + ãã‚Œã¯ã€è¦ªã®ã‚»ãƒ¼ãƒ–/æ›´æ–°/削除ãŒã€å­ã®ã‚»ãƒ¼ãƒ–/æ›´æ–°/削除を引ãèµ·ã“ã™é–¢ä¿‚ã®ã“ã¨ã§ã™ã€‚ - ‚³‚ç‚ÉA‰i‘±‰»‚³‚ꂽe‚ªŽq‚ð’P‚ÉŽQÆ‚µ‚Ä‚¢‚邾‚¯‚ÅAŽq‚̃Z[ƒu/XV‚ðˆø‚«‹N‚±‚µ‚Ü‚·B - ‚µ‚©‚µA‚±‚̃ƒ^ƒtƒ@[‚Í•sŠ®‘S‚Å‚·Be‚©‚çŽQÆ‚³‚ê‚È‚­‚È‚Á‚½Žq‚ÍAŽ©“®“I‚Éíœ ‚³‚ê‚Ü‚¹‚ñ B - ‚½‚¾‚µA cascade="delete-orphan" ‚Ń}ƒbƒsƒ“ƒO‚³‚ꂽ - <one-to-many> ŠÖ˜A‚𠜂¢‚Ä‚Å‚·B - eŽqŠÖŒW‚̃JƒXƒP[ƒh‘€ì‚̳Šm‚ȈӖ¡‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B + ã•ã‚‰ã«ã€æ°¸ç¶šåŒ–ã•ã‚ŒãŸè¦ªãŒå­ã‚’å˜ã«å‚ç…§ã—ã¦ã„ã‚‹ã ã‘ã§ã€å­ã®ã‚»ãƒ¼ãƒ–/更新を引ãèµ·ã“ã—ã¾ã™ã€‚ + ã—ã‹ã—ã€ã“ã®ãƒ¡ã‚¿ãƒ•ã‚¡ãƒ¼ã¯ä¸å®Œå…¨ã§ã™ã€‚親ã‹ã‚‰å‚ç…§ã•ã‚Œãªããªã£ãŸå­ã¯ã€è‡ªå‹•çš„ã«å‰Šé™¤ ã•ã‚Œã¾ã›ã‚“ 。 + ãŸã ã—〠cascade="delete-orphan" ã§ãƒžãƒƒãƒ”ングã•ã‚ŒãŸ + <one-to-many> 関連を 除ã„ã¦ã§ã™ã€‚ + 親å­é–¢ä¿‚ã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰æ“作ã®æ­£ç¢ºãªæ„味ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ - e‚ª - persist() ‚É“n‚³‚ꂽ‚È‚ç‚ÎA ‚·‚ׂĂ̎q‚Í - persist() ‚É“n‚³‚ê‚Ü‚·B + 親㌠+ persist() ã«æ¸¡ã•ã‚ŒãŸãªã‚‰ã°ã€ ã™ã¹ã¦ã®å­ã¯ + persist() ã«æ¸¡ã•ã‚Œã¾ã™ã€‚ - merge() ‚É“n‚³‚ꂽ‚È‚ç‚ÎA ‚·‚ׂĂ̎q‚Í - merge() ‚É“n‚³‚ê‚Ü‚·B + merge() ã«æ¸¡ã•ã‚ŒãŸãªã‚‰ã°ã€ ã™ã¹ã¦ã®å­ã¯ + merge() ã«æ¸¡ã•ã‚Œã¾ã™ã€‚ - e‚ª save() - A update() - A saveOrUpdate() ‚É“n‚³‚ꂽ‚È‚ç‚ÎA‚·‚ׂĂ̎q‚Í - saveOrUpdate() ‚É“n‚³‚ê‚Ü‚·B + 親㌠save() + 〠update() + 〠saveOrUpdate() ã«æ¸¡ã•ã‚ŒãŸãªã‚‰ã°ã€ã™ã¹ã¦ã®å­ã¯ + saveOrUpdate() ã«æ¸¡ã•ã‚Œã¾ã™ã€‚ - ˆêŽž“I‚Ü‚½‚Í•ª—£ó‘Ô‚ÌŽq‚ªA‰i‘±‰»‚³‚ꂽe‚ÉŽQÆ‚³‚ꂽ‚È‚ç‚ÎA - saveOrUpdate() ‚É“n‚³‚ê‚Ü‚·B + 一時的ã¾ãŸã¯åˆ†é›¢çŠ¶æ…‹ã®å­ãŒã€æ°¸ç¶šåŒ–ã•ã‚ŒãŸè¦ªã«å‚ç…§ã•ã‚ŒãŸãªã‚‰ã°ã€ + saveOrUpdate() ã«æ¸¡ã•ã‚Œã¾ã™ã€‚ - e‚ªíœ‚³‚ꂽ‚È‚ç‚ÎA‚·‚ׂĂ̎q‚ÍA delete() ‚É“n‚³‚ê‚Ü‚·B + 親ãŒå‰Šé™¤ã•ã‚ŒãŸãªã‚‰ã°ã€ã™ã¹ã¦ã®å­ã¯ã€ delete() ã«æ¸¡ã•ã‚Œã¾ã™ã€‚ - Žq‚ª‰i‘±‰»‚³‚ꂽe‚©‚çŽQÆ‚³‚ê‚È‚­‚È‚Á‚½‚Æ‚«‚ÍA “Á‚ɉ½‚à‹N‚±‚è‚Ü‚¹‚ñ B - ‚æ‚Á‚ÄAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚Å‚ ‚ê‚ÎA–¾Ž¦“I‚É휂·‚é•K—v‚ª‚ ‚è‚Ü‚·B - ‚½‚¾‚µA cascade="delete-orphan" ‚Ìꇂ𜂫‚Ü‚·B - ‚±‚Ìê‡Aue‚Ì‚È‚¢vŽq‚Í휂³‚ê‚Ü‚·B + å­ãŒæ°¸ç¶šåŒ–ã•ã‚ŒãŸè¦ªã‹ã‚‰å‚ç…§ã•ã‚Œãªããªã£ãŸã¨ãã¯ã€ 特ã«ä½•ã‚‚èµ·ã“ã‚Šã¾ã›ã‚“ 。 + よã£ã¦ã€ã‚¢ãƒ—リケーションãŒå¿…è¦ã§ã‚ã‚Œã°ã€æ˜Žç¤ºçš„ã«å‰Šé™¤ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ãŸã ã—〠cascade="delete-orphan" ã®å ´åˆã‚’除ãã¾ã™ã€‚ + ã“ã®å ´åˆã€ã€Œè¦ªã®ãªã„ã€å­ã¯å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ - ÅŒã‚ÉA‘€ì‚̃JƒXƒP[ƒh‚ªƒIƒuƒWƒFƒNƒgƒOƒ‰ƒt‚É“K—p‚³‚ê‚é‚Ì‚ÍA ƒR[ƒ‹‚µ‚½Žž - ‚ ‚é‚¢‚ÍA flush‚µ‚½Žž ‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚·‚ׂĂ̑€ì‚ÍA‚»‚Ì‘€ì‚ªŽÀs‚³‚ꂽ‚Æ‚«‚ÉA“ž’B‰Â”\‚ÈŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä - ƒJƒXƒP[ƒh‚ª‰Â”\‚È‚çƒJƒXƒP[ƒh‚µ‚Ü‚·B - ‚µ‚©‚µA save-upate ‚Æ - delete-orphan ‚ÍA Session - ‚ªflush‚µ‚Ä‚¢‚éŠÔ‚ÉA ‚·‚ׂĂ̓ž’B‰Â”\‚ÈŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚É“`”d‚µ‚Ü‚·B + 最後ã«ã€æ“作ã®ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ãŒã‚ªãƒ–ジェクトグラフã«é©ç”¨ã•ã‚Œã‚‹ã®ã¯ã€ コールã—ãŸæ™‚ + ã‚ã‚‹ã„ã¯ã€ flushã—ãŸæ™‚ ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã™ã¹ã¦ã®æ“作ã¯ã€ãã®æ“作ãŒå®Ÿè¡Œã•ã‚ŒãŸã¨ãã«ã€åˆ°é”å¯èƒ½ãªé–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«å¯¾ã—㦠+ カスケードãŒå¯èƒ½ãªã‚‰ã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ã—ã¾ã™ã€‚ + ã—ã‹ã—〠save-upate 㨠+ delete-orphan ã¯ã€ Session + ãŒflushã—ã¦ã„ã‚‹é–“ã«ã€ ã™ã¹ã¦ã®åˆ°é”å¯èƒ½ãªé–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã«ä¼æ’­ã—ã¾ã™ã€‚ - ƒƒ^ƒf[ƒ^‚ÌŽg—p + メタデータã®ä½¿ç”¨ - Hibernate‚ÍA‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚Æ’lŒ^‚Ì”ñí‚ɃŠƒbƒ`‚ȃƒ^ƒŒƒxƒ‹‚̃‚ƒfƒ‹‚ð•K—v‚Æ‚µ‚Ü‚·B - ‚Æ‚«‚Ç‚«A‚±‚̃‚ƒfƒ‹‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚Ä‚Æ‚Ä‚à–ð‚É—§‚¿‚Ü‚·B - —Ⴆ‚ÎAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAHibernate‚̃ƒ^ƒf[ƒ^‚ðŽg‚Á‚ÄA"Œ«‚¢" ƒfƒB[ƒvƒRƒs[ƒAƒ‹ƒSƒŠƒYƒ€‚ð - ŽÀ‘•‚Å‚«‚é‚©‚à‚µ‚Ü‚¹‚ñB‚»‚̃Aƒ‹ƒSƒŠƒYƒ€‚Æ‚ÍA‚ǂ̃IƒuƒWƒFƒNƒg‚ªƒRƒs[‚³‚ê‚é‚ׂ«‚©i—áF‰Â•Ï‚Ì’lŒ^j‚â - ‚ǂ̃IƒuƒWƒFƒNƒg‚̓Rƒs[‚³‚ê‚È‚¢‚ׂ«‚©i—áF•s•Ï‚È’lŒ^‚â‰Â”\‚È‚çŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒBj‚ð ”»’f‚Å‚«‚é‚à‚Ì‚Å‚·B + Hibernateã¯ã€ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨å€¤åž‹ã®éžå¸¸ã«ãƒªãƒƒãƒãªãƒ¡ã‚¿ãƒ¬ãƒ™ãƒ«ã®ãƒ¢ãƒ‡ãƒ«ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚ + ã¨ãã©ãã€ã“ã®ãƒ¢ãƒ‡ãƒ«ã¯ã‚¢ãƒ—リケーションã«ã¨ã£ã¦ã¨ã¦ã‚‚å½¹ã«ç«‹ã¡ã¾ã™ã€‚ + 例ãˆã°ã€ã‚¢ãƒ—リケーションã¯ã€Hibernateã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’使ã£ã¦ã€"è³¢ã„" ディープコピーアルゴリズムを + 実装ã§ãã‚‹ã‹ã‚‚ã—ã¾ã›ã‚“。ãã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã¨ã¯ã€ã©ã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã•ã‚Œã‚‹ã¹ãã‹ï¼ˆä¾‹ï¼šå¯å¤‰ã®å€¤åž‹ï¼‰ã‚„ + ã©ã®ã‚ªãƒ–ジェクトã¯ã‚³ãƒ”ーã•ã‚Œãªã„ã¹ãã‹ï¼ˆä¾‹ï¼šä¸å¤‰ãªå€¤åž‹ã‚„å¯èƒ½ãªã‚‰é–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ï¼‰ã‚’ 判断ã§ãã‚‹ã‚‚ã®ã§ã™ã€‚ - Hibernate‚ÍClassMetadata - ‚ÆCollectionMetadata ƒCƒ“ƒ^ƒtƒF[ƒX‚Æ - Type ŠK‘w‚ð’Ê‚µ‚ăƒ^ƒf[ƒ^‚ðŒöŠJ‚µ‚Ü‚·B - ƒƒ^ƒf[ƒ^ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍA SessionFactory ‚©‚瓾‚ç‚ê‚Ü‚·B + Hibernateã¯ClassMetadata + ã¨CollectionMetadata インタフェース㨠+ Type 階層を通ã—ã¦ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’公開ã—ã¾ã™ã€‚ + メタデータインターフェイスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ SessionFactory ã‹ã‚‰å¾—られã¾ã™ã€‚ @@ -1117,4 +1119,4 @@ for ( int i=0; i - \ No newline at end of file + diff --git a/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml b/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml index 8aa3e5a136..7780f67e23 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml @@ -1,39 +1,41 @@ - + + + Toolset Guide - ƒc[ƒ‹ƒZƒbƒgƒKƒCƒh + ツールセットガイド - Hibernate‚ðŽg‚Á‚½ƒ‰ƒEƒ“ƒhƒgƒŠƒbƒvƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚ÍA - Eclipseƒvƒ‰ƒOƒCƒ“‚âƒRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒc[ƒ‹A‚à‚¿‚ë‚ñAntƒ^ƒXƒN‚ðŽg‚¤‚±‚Ƃʼn”\‚Å‚·B + Hibernateを使ã£ãŸãƒ©ã‚¦ãƒ³ãƒ‰ãƒˆãƒªãƒƒãƒ—エンジニアリングã¯ã€ + Eclipseプラグインやコマンドラインツールã€ã‚‚ã¡ã‚ã‚“Antタスクを使ã†ã“ã¨ã§å¯èƒ½ã§ã™ã€‚ - Hibernate Tools ‚ÍŒ»ÝAŠù‘¶ƒf[ƒ^ƒx[ƒX‚̃Šƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚ÌAntƒ^ƒXƒN‚ɉÁ‚¦‚ÄAEclipseIDE‚̃vƒ‰ƒOƒCƒ“‚ðŠÜ‚Ý‚Ü‚·B + Hibernate Tools ã¯ç¾åœ¨ã€æ—¢å­˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã®Antタスクã«åŠ ãˆã¦ã€EclipseIDEã®ãƒ—ラグインをå«ã¿ã¾ã™ã€‚ - ƒ}ƒbƒsƒ“ƒOƒGƒfƒBƒ^: - Hibernate‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹—p‚̃GƒfƒBƒ^‚ÅA - Ž©“®•âŠ®‚Æ\•¶‹­’²•\Ž¦‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BƒNƒ‰ƒX–¼‚âƒvƒƒpƒeƒB/ƒtƒB[ƒ‹ƒh–¼‚ɑ΂·‚鎩“®•âŠ®‚àƒTƒ|[ƒg‚µA - ’Êí‚ÌXMLƒGƒfƒBƒ^‚æ‚è‚à‹­—Í‚Å‚·B + マッピングエディタ: + Hibernateã®XMLマッピングファイル用ã®ã‚¨ãƒ‡ã‚£ã‚¿ã§ã€ + 自動補完ã¨æ§‹æ–‡å¼·èª¿è¡¨ç¤ºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚クラスåやプロパティ/フィールドåã«å¯¾ã™ã‚‹è‡ªå‹•è£œå®Œã‚‚サãƒãƒ¼ãƒˆã—〠+ 通常ã®XMLエディタよりも強力ã§ã™ã€‚ Console: - ƒRƒ“ƒ\[ƒ‹‚̓GƒNƒŠƒvƒX‚ÌV‚µ‚¢ƒrƒ…[‚Å‚·B - ƒRƒ“ƒ\[ƒ‹ƒRƒ“ƒtƒBƒMƒ…ƒŒ[ƒVƒ‡ƒ“‚̃cƒŠ[ƒI[ƒo[ƒrƒ…[‚ɉÁ‚¦‚ÄA‰i‘±ƒNƒ‰ƒX‚Æ‚»‚ÌŠÖ˜A‚Ì‘ŠŒÝì—pƒrƒ…[‚à“¾‚ç‚ê‚Ü‚·B - ƒf[ƒ^ƒx[ƒX‚ÉHQL‚ðŽÀs‚µAŒ‹‰Ê‚ð’¼ÚƒGƒNƒŠƒvƒXã‚ÅŒ©‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + コンソールã¯ã‚¨ã‚¯ãƒªãƒ—スã®æ–°ã—ã„ビューã§ã™ã€‚ + コンソールコンフィギュレーションã®ãƒ„リーオーãƒãƒ¼ãƒ“ューã«åŠ ãˆã¦ã€æ°¸ç¶šã‚¯ãƒ©ã‚¹ã¨ãã®é–¢é€£ã®ç›¸äº’作用ビューも得られã¾ã™ã€‚ + データベースã«HQLを実行ã—ã€çµæžœã‚’直接エクリプス上ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ŠJ”­ƒEƒBƒU[ƒh - Hibernate‚ÌEclipseƒc[ƒ‹‚Í‚¢‚­‚‚©‚̃EƒBƒU[ƒh‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ƒEƒBƒU[ƒh‚ðŽg‚Á‚ÄHibernate‚ÌÝ’èƒtƒ@ƒCƒ‹(cfg.xml)‚ð‚·‚Î‚â‚­¶¬‚µ‚½‚èA - Šù‘¶‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ðPOJO‚̃\[ƒXƒtƒ@ƒCƒ‹‚ÆHibernate‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ö‚ÆA - Š®‘S‚ɃŠƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ƒŠƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒOƒEƒBƒU[ƒh‚̓JƒXƒ^ƒ}ƒCƒY‰Â”\‚ȃeƒ“ƒvƒŒ[ƒg‚ðƒTƒ|[ƒg‚µ‚Ü‚·B + 開発ウィザード + Hibernateã®Eclipseツールã¯ã„ãã¤ã‹ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‚’æä¾›ã—ã¾ã™ã€‚ + ウィザードを使ã£ã¦Hibernateã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«(cfg.xml)ã‚’ã™ã°ã‚„ã生æˆã—ãŸã‚Šã€ + 既存ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã‚’POJOã®ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã¨Hibernateã®ãƒžãƒƒãƒ”ングファイルã¸ã¨ã€ + 完全ã«ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + リãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã¯ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºå¯èƒ½ãªãƒ†ãƒ³ãƒ—レートをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ Ant Tasks: @@ -42,43 +44,43 @@ - ‚æ‚èÚ‚µ‚¢î•ñ‚Í Hibernate Tools ƒpƒbƒP[ƒW‚Æ‚»‚̃hƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + より詳ã—ã„情報㯠Hibernate Tools パッケージã¨ãã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ‚µ‚©‚µAHibernate‚̃ƒCƒ“ƒpƒbƒP[ƒW‚Í SchemaExport A - •Ê–¼ hbm2ddl ‚àŠÜ‚Ý‚Ü‚·(Hibernate“à‚ŃIƒ“ƒUƒtƒ‰ƒC‚ÅŽg—p‚Å‚«‚Ü‚·)B + ã—ã‹ã—ã€Hibernateã®ãƒ¡ã‚¤ãƒ³ãƒ‘ッケージ㯠SchemaExport 〠+ 別å hbm2ddl ã‚‚å«ã¿ã¾ã™(Hibernate内ã§ã‚ªãƒ³ã‚¶ãƒ•ãƒ©ã‚¤ã§ä½¿ç”¨ã§ãã¾ã™)。 - ƒXƒL[ƒ}‚ÌŽ©“®¶¬ + スキーマã®è‡ªå‹•ç”Ÿæˆ - DDL‚ÍHibernateƒ†[ƒeƒBƒŠƒeƒB‚É‚æ‚èƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚©‚綬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ¶¬‚³‚ꂽƒXƒL[ƒ}‚̓Gƒ“ƒeƒBƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚̃e[ƒuƒ‹‚ɑ΂·‚éŽQÆ®‡«§–ñ(ŽåƒL[‚ÆŠO•”ƒL[)‚ðŠÜ‚Ý‚Ü‚·B - ƒe[ƒuƒ‹‚ƃV[ƒPƒ“ƒX‚̓}ƒbƒsƒ“ƒO‚·‚鎯•ÊŽqƒWƒFƒlƒŒ[ƒ^‚ɑ΂µ‚Ķ¬‚³‚ê‚Ü‚·B + DDLã¯Hibernateユーティリティã«ã‚ˆã‚Šãƒžãƒƒãƒ”ングファイルã‹ã‚‰ç”Ÿæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + 生æˆã•ã‚ŒãŸã‚¹ã‚­ãƒ¼ãƒžã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚„コレクションã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã™ã‚‹å‚照整åˆæ€§åˆ¶ç´„(主キーã¨å¤–部キー)ã‚’å«ã¿ã¾ã™ã€‚ + テーブルã¨ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã¯ãƒžãƒƒãƒ”ングã™ã‚‹è­˜åˆ¥å­ã‚¸ã‚§ãƒãƒ¬ãƒ¼ã‚¿ã«å¯¾ã—ã¦ç”Ÿæˆã•ã‚Œã¾ã™ã€‚ - DDL‚̓xƒ“ƒ_[ˆË‘¶‚È‚Ì‚ÅA‚±‚̃c[ƒ‹‚ðŽg‚¤‚Æ‚«‚ÍAhibernate.dialect - ƒvƒƒpƒeƒB‚ÅSQL‚Ì •ûŒ¾ ‚ðŽw’è ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ B + DDLã¯ãƒ™ãƒ³ãƒ€ãƒ¼ä¾å­˜ãªã®ã§ã€ã“ã®ãƒ„ールを使ã†ã¨ãã¯ã€hibernate.dialect + プロパティã§SQL㮠方言 を指定 ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ 。 - ‚Ü‚¸A¶¬‚³‚ê‚éƒXƒL[ƒ}‚ð‰ü‘P‚·‚é‚悤‚ÉAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðƒJƒXƒ^ƒ}ƒCƒY‚µ‚Ä‚­‚¾‚³‚¢B + ã¾ãšã€ç”Ÿæˆã•ã‚Œã‚‹ã‚¹ã‚­ãƒ¼ãƒžã‚’改善ã™ã‚‹ã‚ˆã†ã«ã€ãƒžãƒƒãƒ”ングファイルをカスタマイズã—ã¦ãã ã•ã„。 - ƒXƒL[ƒ}‚̃JƒXƒ^ƒ}ƒCƒY + スキーマã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º - ‘½‚­‚ÌHibernate‚̃}ƒbƒsƒ“ƒO—v‘f‚Å‚ÍAƒIƒvƒVƒ‡ƒ“‚Ì length ‚Æ‚¢‚¤–¼‚Ì‘®«‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B - ‚±‚Ì‘®«‚ŃJƒ‰ƒ€’·‚ðÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·(‚Ü‚½‚ÍNUMERIC/DECIMALŒ^‚̃f[ƒ^‚̸“x‚ðÝ’è‚Å‚«‚Ü‚·)B + 多ãã®Hibernateã®ãƒžãƒƒãƒ”ングè¦ç´ ã§ã¯ã€ã‚ªãƒ—ション㮠length ã¨ã„ã†åã®å±žæ€§ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ + ã“ã®å±žæ€§ã§ã‚«ãƒ©ãƒ é•·ã‚’設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™(ã¾ãŸã¯NUMERIC/DECIMALåž‹ã®ãƒ‡ãƒ¼ã‚¿ã®ç²¾åº¦ã‚’設定ã§ãã¾ã™)。 - not-null ‘®«iƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ö NOT NULL §–ñ‚𶬂·‚éj‚Æ - unique ‘®«iƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ö UNIQUE §–ñ‚𶬂·‚éj‚ªÝ’è‚Å‚«‚éƒ^ƒO‚à‚ ‚è‚Ü‚·B + not-null 属性(テーブルã®ã‚«ãƒ©ãƒ ã¸ NOT NULL 制約を生æˆã™ã‚‹ï¼‰ã¨ + unique 属性(テーブルã®ã‚«ãƒ©ãƒ ã¸ UNIQUE 制約を生æˆã™ã‚‹ï¼‰ãŒè¨­å®šã§ãã‚‹ã‚¿ã‚°ã‚‚ã‚ã‚Šã¾ã™ã€‚ ]]> @@ -86,9 +88,9 @@ ]]> - unique-key ‘®«‚̓Jƒ‰ƒ€‚ðƒOƒ‹[ƒv‰»‚µ‚Ĉê‚‚̃L[§–ñ‚É‚·‚邽‚ß‚ÉŽg‚í‚ê‚Ü‚·B - Œ»ÝAunique-key ‘®«‚ÅŽw’肳‚ꂽ’l‚ͧ–ñ‚ÌŽw’è‚É‚Í Žg‚í‚ꂸ A - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ŃJƒ‰ƒ€‚ðƒOƒ‹[ƒv‰»‚·‚邱‚Æ‚É‚Ì‚ÝŽg‚í‚ê‚Ü‚·B + unique-key 属性ã¯ã‚«ãƒ©ãƒ ã‚’グループ化ã—ã¦ä¸€ã¤ã®ã‚­ãƒ¼åˆ¶ç´„ã«ã™ã‚‹ãŸã‚ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ + ç¾åœ¨ã€unique-key 属性ã§æŒ‡å®šã•ã‚ŒãŸå€¤ã¯åˆ¶ç´„ã®æŒ‡å®šã«ã¯ 使ã‚れ㚠〠+ マッピングファイルã§ã‚«ãƒ©ãƒ ã‚’グループ化ã™ã‚‹ã“ã¨ã«ã®ã¿ä½¿ã‚ã‚Œã¾ã™ã€‚ @@ -97,21 +99,21 @@ - index ‘®«‚̓}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ðŽg‚Á‚Ķ¬‚µ‚½ƒCƒ“ƒfƒbƒNƒX‚Ì–¼‘O‚ðŽw’肵‚Ü‚·B - •¡”ƒJƒ‰ƒ€‚ð‚P‚‚̃Cƒ“ƒfƒbƒNƒX‚ɃOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B’P‚ÉA“¯‚¶ƒCƒ“ƒfƒbƒNƒX–¼‚ðŽw’è‚·‚邾‚¯‚Å‚·B + index 属性ã¯ãƒžãƒƒãƒ”ングã™ã‚‹ã‚«ãƒ©ãƒ ã‚’使ã£ã¦ç”Ÿæˆã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®åå‰ã‚’指定ã—ã¾ã™ã€‚ + 複数カラムを1ã¤ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«ã‚°ãƒ«ãƒ¼ãƒ—化ã§ãã¾ã™ã€‚å˜ã«ã€åŒã˜ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åを指定ã™ã‚‹ã ã‘ã§ã™ã€‚ ]]> - foreign-key ‘®«‚ÍA¶¬‚³‚ꂽŠO•”ƒL[§–ñ‚Ì–¼‘O‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B + foreign-key 属性ã¯ã€ç”Ÿæˆã•ã‚ŒãŸå¤–部キー制約ã®åå‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ]]> - ‘½‚­‚̃}ƒbƒsƒ“ƒO—v‘f‚ÍAŽq <column> —v‘f‚ð‹Lq‚Å‚«‚Ü‚·B‚±‚ê‚Í•¡”ƒJƒ‰ƒ€Œ^‚̃}ƒbƒsƒ“ƒO‚É‚Í“Á‚É—L—p‚Å‚·B + 多ãã®ãƒžãƒƒãƒ”ングè¦ç´ ã¯ã€å­ <column> è¦ç´ ã‚’記述ã§ãã¾ã™ã€‚ã“ã‚Œã¯è¤‡æ•°ã‚«ãƒ©ãƒ åž‹ã®ãƒžãƒƒãƒ”ングã«ã¯ç‰¹ã«æœ‰ç”¨ã§ã™ã€‚ @@ -121,9 +123,9 @@ ]]> - default ‘®«‚̓Jƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ðŽw’肵‚Ü‚· - (ƒ}ƒbƒsƒ“ƒO‚µ‚½ƒNƒ‰ƒX‚ÌV‚µ‚¢ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Û‘¶‚·‚é‘O‚ÉA - ƒ}ƒbƒsƒ“ƒO‚µ‚½ƒvƒƒpƒeƒB‚Ö“¯‚¶’l‚ð‘ã“ü‚·‚ׂ«‚Å‚·)B + default 属性ã¯ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’指定ã—ã¾ã™ + (マッピングã—ãŸã‚¯ãƒ©ã‚¹ã®æ–°ã—ã„インスタンスをä¿å­˜ã™ã‚‹å‰ã«ã€ + マッピングã—ãŸãƒ—ロパティã¸åŒã˜å€¤ã‚’代入ã™ã¹ãã§ã™)。 @@ -135,7 +137,7 @@ ]]> - sql-type ‘®«‚ÅAƒfƒtƒHƒ‹ƒg‚ÌHibernateŒ^‚©‚çSQL‚̃f[ƒ^Œ^‚ւ̃}ƒbƒsƒ“ƒO‚ðƒI[ƒo[ƒ‰ƒCƒh‚Å‚«‚Ü‚·B + sql-type 属性ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®Hibernateåž‹ã‹ã‚‰SQLã®ãƒ‡ãƒ¼ã‚¿åž‹ã¸ã®ãƒžãƒƒãƒ”ングをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã§ãã¾ã™ã€‚ @@ -145,7 +147,7 @@ - check ‘®«‚Ń`ƒFƒbƒN§–ñ‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + check 属性ã§ãƒã‚§ãƒƒã‚¯åˆ¶ç´„を指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -159,94 +161,94 @@
- ‚Ü‚Æ‚ß + ã¾ã¨ã‚ - ‘®« - ’l - à–¾ + 属性 + 値 + 説明 length - ”’l - ƒJƒ‰ƒ€‚Ì’·‚³ + 数値 + カラムã®é•·ã• precision - ”’l - ƒJƒ‰ƒ€‚ÌDECIMALŒ^‚̸“xiprecisionj + 数値 + カラムã®DECIMALåž‹ã®ç²¾åº¦ï¼ˆprecision) scale - ”’l - ƒJƒ‰ƒ€‚ÌDECIMALŒ^‚̃XƒP[ƒ‹iscalej + 数値 + カラムã®DECIMALåž‹ã®ã‚¹ã‚±ãƒ¼ãƒ«ï¼ˆscale) not-null true|false - ƒJƒ‰ƒ€‚ªnull’l‚ðŽæ‚ç‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚· + カラムãŒnull値をå–らãªã„ã“ã¨ã‚’指定ã—ã¾ã™ unique true|false - ƒJƒ‰ƒ€‚ªƒ†ƒj[ƒN§–ñ‚ðŽ‚‚±‚Æ‚ðŽw’肵‚Ü‚· + カラムãŒãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã‚’æŒã¤ã“ã¨ã‚’指定ã—ã¾ã™ index - ƒCƒ“ƒfƒbƒNƒX–¼ - (•¡”ƒJƒ‰ƒ€‚Ì)ƒCƒ“ƒfƒbƒNƒX‚Ì–¼‘O‚ðŽw’肵‚Ü‚· + インデックスå + (複数カラムã®)インデックスã®åå‰ã‚’指定ã—ã¾ã™ unique-key - ƒ†ƒj[ƒNƒL[–¼ - •¡”ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚Ì–¼‘O‚ðŽw’肵‚Ü‚· + ユニークキーå + 複数カラムã®ãƒ¦ãƒ‹ãƒ¼ã‚¯åˆ¶ç´„ã®åå‰ã‚’指定ã—ã¾ã™ foreign-key - ŠO•”ƒL[–¼ + 外部キーå - <one-to-one>A<many-to-one>A<many-to-many>ƒ}ƒbƒsƒ“ƒO—v‘f‚ðŽg‚Á‚ÄA - ŠÖ˜A‚ɑ΂µ¶¬‚³‚ꂽŠO•”ƒL[§–ñ‚Ì–¼‘O‚ðŽw’肵‚Ü‚·B - SchemaExport ‚Í inverse="true" ‘¤‚ðl—¶‚µ‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + <one-to-one>ã€<many-to-one>ã€<many-to-many>マッピングè¦ç´ ã‚’使ã£ã¦ã€ + 関連ã«å¯¾ã—生æˆã•ã‚ŒãŸå¤–部キー制約ã®åå‰ã‚’指定ã—ã¾ã™ã€‚ + SchemaExport 㯠inverse="true" å´ã‚’考慮ã—ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 sql-type - SQL‚̃Jƒ‰ƒ€Œ^ + SQLã®ã‚«ãƒ©ãƒ åž‹ - ƒfƒtƒHƒ‹ƒg‚̃Jƒ‰ƒ€Œ^‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·( <column> —v‘f‚Ì‘®«‚Ì‚Ý) + デフォルトã®ã‚«ãƒ©ãƒ åž‹ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™( <column> è¦ç´ ã®å±žæ€§ã®ã¿) default - SQLŽ® + SQLå¼ - ƒJƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ðŽw’肵‚Ü‚· + カラムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’指定ã—ã¾ã™ check - SQLŽ® + SQLå¼ - ƒJƒ‰ƒ€‚©ƒe[ƒuƒ‹‚ÉSQL‚̃`ƒFƒbƒN§–ñ‚ð쬂µ‚Ü‚· + カラムã‹ãƒ†ãƒ¼ãƒ–ルã«SQLã®ãƒã‚§ãƒƒã‚¯åˆ¶ç´„を作æˆã—ã¾ã™ @@ -254,7 +256,7 @@
- <comment> —v‘f‚Ŷ¬‚·‚éƒXƒL[ƒ}‚ɃRƒƒ“ƒg‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + <comment> è¦ç´ ã§ç”Ÿæˆã™ã‚‹ã‚¹ã‚­ãƒ¼ãƒžã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @@ -270,16 +272,16 @@ ]]> - ‚±‚ê‚É‚æ‚èA¶¬‚µ‚½DDL‚É comment on table ‚â comment on column •¶‚ª‘‚©‚ê‚Ü‚·B + ã“ã‚Œã«ã‚ˆã‚Šã€ç”Ÿæˆã—ãŸDDLã« comment on table ã‚„ comment on column æ–‡ãŒæ›¸ã‹ã‚Œã¾ã™ã€‚
- ƒc[ƒ‹‚ÌŽÀs + ツールã®å®Ÿè¡Œ - SchemaExport ‚Í•W€o—͂ɑ΂µ‚ÄDDLƒXƒNƒŠƒvƒg‚ð‘‚«o‚µADDL•¶‚ðŽÀs‚µ‚½‚è‚à‚µ‚Ü‚·B + SchemaExport ã¯æ¨™æº–出力ã«å¯¾ã—ã¦DDLスクリプトを書ã出ã—ã€DDL文を実行ã—ãŸã‚Šã‚‚ã—ã¾ã™ã€‚ @@ -290,70 +292,70 @@ <literal>SchemaExport</literal> Command Line Options - <literal>SchemaExport</literal> ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“ƒIƒvƒVƒ‡ƒ“ + <literal>SchemaExport</literal> ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション - ƒIƒvƒVƒ‡ƒ“ - à–¾ + オプション + 説明 --quiet - ƒXƒNƒŠƒvƒg‚ð•W€o—Í‚Éo—Í‚µ‚Ü‚¹‚ñ + スクリプトを標準出力ã«å‡ºåŠ›ã—ã¾ã›ã‚“ --drop - ƒe[ƒuƒ‹‚Ì휂¾‚¯‚ðs‚¢‚Ü‚· + テーブルã®å‰Šé™¤ã ã‘ã‚’è¡Œã„ã¾ã™ --create - ƒe[ƒuƒ‹‚̶¬‚Ì‚Ý‚ðs‚¢‚Ü‚·B + テーブルã®ç”Ÿæˆã®ã¿ã‚’è¡Œã„ã¾ã™ã€‚ --text - ƒf[ƒ^ƒx[ƒX‚ɃGƒNƒXƒ|[ƒg‚µ‚Ü‚¹‚ñ + データベースã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã¾ã›ã‚“ --output=my_schema.ddl - DDLƒXƒNƒŠƒvƒg‚ðƒtƒ@ƒCƒ‹‚Éo—Í‚µ‚Ü‚· + DDLスクリプトをファイルã«å‡ºåŠ›ã—ã¾ã™ --naming=eg.MyNamingStrategy - NamingStrategy ‚ð‘I‘ð‚µ‚Ü‚· + NamingStrategy ã‚’é¸æŠžã—ã¾ã™ --config=hibernate.cfg.xml - XMLƒtƒ@ƒCƒ‹‚©‚çHibernate‚Ì’è‹`î•ñ‚ð“Ç‚Ýž‚Ý‚Ü‚· + XMLファイルã‹ã‚‰Hibernateã®å®šç¾©æƒ…報を読ã¿è¾¼ã¿ã¾ã™ --properties=hibernate.properties - ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒXƒvƒƒpƒeƒB‚ð“Ç‚Ýž‚Ý‚Ü‚· + ファイルã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ—ロパティを読ã¿è¾¼ã¿ã¾ã™ --format - ƒXƒNƒŠƒvƒg“à‚ɶ¬‚·‚éSQL‚ð“Ç‚Ý‚â‚·‚¢‚悤‚ɃtƒH[ƒ}ƒbƒg‚µ‚Ü‚· + スクリプト内ã«ç”Ÿæˆã™ã‚‹SQLを読ã¿ã‚„ã™ã„よã†ã«ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã—ã¾ã™ --delimiter=x - ƒXƒNƒŠƒvƒg‚Ìs‹æ؂蕶Žš‚ðݒ肵‚Ü‚· + スクリプトã®è¡ŒåŒºåˆ‡ã‚Šæ–‡å­—を設定ã—ã¾ã™
- ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É SchemaExport ‚ð‘g‚Ýž‚Þ‚±‚Æ‚à‚Å‚«‚Ü‚·F + アプリケーション㫠SchemaExport を組ã¿è¾¼ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ï¼š - ƒvƒƒpƒeƒB + プロパティ - ŽŸ‚̂悤‚ÉAƒf[ƒ^ƒx[ƒX‚̃vƒƒpƒeƒB‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + 次ã®ã‚ˆã†ã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ—ロパティを指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -D <property> ‚ðŽg‚Á‚ÄAƒVƒXƒeƒ€ƒvƒƒpƒeƒB‚Æ‚µ‚Ä + -D <property> を使ã£ã¦ã€ã‚·ã‚¹ãƒ†ãƒ ãƒ—ロパティã¨ã—㦠- hibernate.properties ƒtƒ@ƒCƒ‹“à‚Å + hibernate.properties ファイル内㧠- --properties ‚ðŽg‚Á‚ÄŽw’肵‚½ƒvƒƒpƒeƒBƒtƒ@ƒCƒ‹“à‚Å + --properties を使ã£ã¦æŒ‡å®šã—ãŸãƒ—ロパティファイル内㧠- •K—v‚ȃvƒƒpƒeƒB‚͈ȉº‚Ì‚à‚Ì‚Å‚·F + å¿…è¦ãªãƒ—ロパティã¯ä»¥ä¸‹ã®ã‚‚ã®ã§ã™ï¼š - SchemaExportƒRƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB + SchemaExportコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ロパティ - ƒvƒƒpƒeƒB–¼ + プロパティå - à–¾ + 説明 hibernate.connection.driver_class - jdbc‚̃hƒ‰ƒCƒo[ƒNƒ‰ƒX + jdbcã®ãƒ‰ãƒ©ã‚¤ãƒãƒ¼ã‚¯ãƒ©ã‚¹ hibernate.connection.url - jdbc‚Ìurl + jdbcã®url hibernate.connection.username - ƒf[ƒ^ƒx[ƒX‚̃†[ƒU + データベースã®ãƒ¦ãƒ¼ã‚¶ hibernate.connection.password - ƒ†[ƒUƒpƒXƒ[ƒh + ユーザパスワード hibernate.dialect - ƒf[ƒ^ƒx[ƒX•ûŒ¾ + データベース方言 @@ -435,10 +437,10 @@ new SchemaExport(cfg).create(false, true);]]> - Ant‚ðŽg—p‚·‚é + Antを使用ã™ã‚‹ - Ant‚̃rƒ‹ƒhƒXƒNƒŠƒvƒg‚©‚ç SchemaExport ‚ðŒÄ‚Ño‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B: + Antã®ãƒ“ルドスクリプトã‹ã‚‰ SchemaExport を呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚: @@ -462,13 +464,13 @@ new SchemaExport(cfg).create(false, true);]]> - ƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ȃXƒL[ƒ}XV + <title>インクリメンタルãªã‚¹ã‚­ãƒ¼ãƒžæ›´æ–° - SchemaUpdate ƒc[ƒ‹‚ÍŠù‘¶‚̃XƒL[ƒ}‚ðƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ÉXV‚µ‚Ü‚·B - SchemaUpdate ‚ÍJDBC‚̃ƒ^ƒf[ƒ^API‚É‹­‚­ˆË‘¶‚µ‚Ü‚·B - ‚»‚Ì‚½‚ßA‚·‚ׂĂÌJDBCƒhƒ‰ƒCƒo‚Å‚¤‚Ü‚­‚¢‚­‚Æ‚ÍŒÀ‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + SchemaUpdate ツールã¯æ—¢å­˜ã®ã‚¹ã‚­ãƒ¼ãƒžã‚’インクリメンタルã«æ›´æ–°ã—ã¾ã™ã€‚ + SchemaUpdate ã¯JDBCã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿APIã«å¼·ãä¾å­˜ã—ã¾ã™ã€‚ + ãã®ãŸã‚ã€ã™ã¹ã¦ã®JDBCドライãƒã§ã†ã¾ãã„ãã¨ã¯é™ã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 @@ -477,42 +479,42 @@ new SchemaExport(cfg).create(false, true);]]>
- <literal>SchemaUpdate</literal> ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“¥ƒIƒvƒVƒ‡ƒ“ + <literal>SchemaUpdate</literal> ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ï½¥ã‚ªãƒ—ション - ƒIƒvƒVƒ‡ƒ“ - à–¾ + オプション + 説明 --quiet - •W€o—͂ɃXƒNƒŠƒvƒg‚ðo—Í‚µ‚Ü‚¹‚ñ + 標準出力ã«ã‚¹ã‚¯ãƒªãƒ—トを出力ã—ã¾ã›ã‚“ --text - ƒf[ƒ^ƒx[ƒX‚ɃXƒNƒŠƒvƒg‚ðƒGƒNƒXƒ|[ƒg‚µ‚Ü‚¹‚ñ + データベースã«ã‚¹ã‚¯ãƒªãƒ—トをエクスãƒãƒ¼ãƒˆã—ã¾ã›ã‚“ --naming=eg.MyNamingStrategy - NamingStrategy ‚ð‘I‘ð‚µ‚Ü‚·B + NamingStrategy ã‚’é¸æŠžã—ã¾ã™ã€‚ --properties=hibernate.properties - ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒXƒvƒƒpƒeƒB‚ð“Ç‚Ýž‚Ý‚Ü‚· + ファイルã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ—ロパティを読ã¿è¾¼ã¿ã¾ã™ --config=hibernate.cfg.xml - .cfg.xml ƒtƒ@ƒCƒ‹‚ðŽw’肵‚Ü‚· + .cfg.xml ファイルを指定ã—ã¾ã™ @@ -521,7 +523,7 @@ new SchemaExport(cfg).create(false, true);]]>
- ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É SchemaUpdate ‚ð‘g‚Ýž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·BF + アプリケーション㫠SchemaUpdate を組ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚: - ƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ȃXƒL[ƒ}XV‚ɑ΂·‚éAnt‚ÌŽg—p + インクリメンタルãªã‚¹ã‚­ãƒ¼ãƒžæ›´æ–°ã«å¯¾ã™ã‚‹Antã®ä½¿ç”¨ - AntƒXƒNƒŠƒvƒg‚©‚ç SchemaUpdate ‚ðŒÄ‚Ño‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·F + Antスクリプトã‹ã‚‰ SchemaUpdate を呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ï¼š @@ -557,7 +559,7 @@ new SchemaUpdate(cfg).execute(false);]]> Schema validation - SchemaValidator ƒc[ƒ‹‚ÍAŠù‘¶‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Æ쬂µ‚½ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ª"ˆê’v‚·‚é"‚±‚Æ‚ðŒŸØ‚µ‚Ü‚·B SchemaValidator ‚ÍJDBC‚̃ƒ^ƒf[ƒ^API‚É‹­‚­ˆË‘¶‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚»‚Ì‚½‚ßA‚·‚ׂĂÌJDBCƒhƒ‰ƒCƒo[‚Åì“®‚·‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚̃c[ƒ‹‚̓eƒXƒgŽž‚É”ñí‚É—L—p‚Å‚·B + SchemaValidator ツールã¯ã€æ—¢å­˜ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã¨ä½œæˆã—ãŸãƒžãƒƒãƒ”ングドキュメントãŒ"一致ã™ã‚‹"ã“ã¨ã‚’検証ã—ã¾ã™ã€‚ SchemaValidator ã¯JDBCã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿APIã«å¼·ãä¾å­˜ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãã®ãŸã‚ã€ã™ã¹ã¦ã®JDBCドライãƒãƒ¼ã§ä½œå‹•ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã“ã®ãƒ„ールã¯ãƒ†ã‚¹ãƒˆæ™‚ã«éžå¸¸ã«æœ‰ç”¨ã§ã™ã€‚ @@ -566,31 +568,31 @@ new SchemaUpdate(cfg).execute(false);]]> - <literal>SchemaValidator</literal> ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“EƒIƒvƒVƒ‡ƒ“ + <title> <literal>SchemaValidator</literal> ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ»ã‚ªãƒ—ション - ƒIƒvƒVƒ‡ƒ“ - à–¾ + オプション + 説明 --naming=eg.MyNamingStrategy - NamingStrategy ‚ð‘I‘ð‚µ‚Ü‚· + NamingStrategy ã‚’é¸æŠžã—ã¾ã™ --properties=hibernate.properties - ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒX‚̃vƒƒpƒeƒB‚ð“Ç‚Ýž‚Ý‚Ü‚· + ファイルã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ—ロパティを読ã¿è¾¼ã¿ã¾ã™ --config=hibernate.cfg.xml - .cfg.xml ƒtƒ@ƒCƒ‹‚ðŽw’肵‚Ü‚· + .cfg.xml ファイルを指定ã—ã¾ã™ @@ -598,7 +600,7 @@ new SchemaUpdate(cfg).execute(false);]]>
- SchemaValidator ‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‘g‚Ýž‚Þ‚±‚Æ‚ªo—ˆ‚Ü‚·: + SchemaValidator をアプリケーションã«çµ„ã¿è¾¼ã‚€ã“ã¨ãŒå‡ºæ¥ã¾ã™:
- ƒXƒL[ƒ}‚̃oƒŠƒf[ƒVƒ‡ƒ“‚ÉAnt‚ðŽg—p‚µ‚Ü‚· + スキーマã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã«Antを使用ã—ã¾ã™ - AntƒXƒNƒŠƒvƒg‚©‚ç SchemaValidator ‚ðŒÄ‚Ño‚¹‚Ü‚·: + Antスクリプトã‹ã‚‰ SchemaValidator を呼ã³å‡ºã›ã¾ã™: diff --git a/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml b/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml index 907a79f2cd..08ee46cc27 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml @@ -1,299 +1,301 @@ - + + + - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ•Às« + トランザクションã¨ä¸¦è¡Œæ€§ - Hibernate‚Æ“¯ŽžŽÀs§Œä‚ɂ‚¢‚ÄÅ‚àd—v‚È“_‚ÍA—eˆÕ‚É—‰ð‚Å‚«‚邱‚Æ‚Å‚·B - Hibernate‚ÍV‚½‚ȃƒbƒN‚ÌU‚é•‘‚¢‚ð’ljÁ‚µ‚Ä‚¨‚炸A’¼ÚJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÆJTAƒŠƒ\[ƒX‚ðŽg—p‚µ‚Ü‚·B - JDBCAANSIA‚¨‚æ‚уf[ƒ^ƒx[ƒXŠÇ—ƒVƒXƒeƒ€iDBMSj‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£‚ÌŽd—l‚ð - ­‚µŽžŠÔ‚ð‚©‚¯‚ĕ׋­‚·‚邱‚Æ‚ð‹­‚­„§‚µ‚Ü‚·B + Hibernateã¨åŒæ™‚実行制御ã«ã¤ã„ã¦æœ€ã‚‚é‡è¦ãªç‚¹ã¯ã€å®¹æ˜“ã«ç†è§£ã§ãã‚‹ã“ã¨ã§ã™ã€‚ + Hibernateã¯æ–°ãŸãªãƒ­ãƒƒã‚¯ã®æŒ¯ã‚‹èˆžã„を追加ã—ã¦ãŠã‚‰ãšã€ç›´æŽ¥JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã¨JTAリソースを使用ã—ã¾ã™ã€‚ + JDBCã€ANSIã€ãŠã‚ˆã³ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ ï¼ˆDBMS)ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³åˆ†é›¢ã®ä»•æ§˜ã‚’ + å°‘ã—時間をã‹ã‘ã¦å‹‰å¼·ã™ã‚‹ã“ã¨ã‚’å¼·ã推奨ã—ã¾ã™ã€‚ - Hibernate‚̓ƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚ðƒƒbƒN‚µ‚Ü‚¹‚ñB - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì•ª—£ƒŒƒxƒ‹‚Å - ’è‹`‚µ‚½U‚é•‘‚¢‚ðŠú‘Ò‚Å‚«‚Ü‚·B - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒXƒR[ƒv‚̃LƒƒƒbƒVƒ…‚Å‚à‚ ‚é Session ‚Ì‚¨‰A‚ÅA - Ž¯•ÊŽq‚âƒNƒGƒŠ‚É‚æ‚茟õ‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚̓Šƒs[ƒ^ƒuƒ‹ƒŠ[ƒh‚É‚È‚è‚Ü‚· - iƒXƒJƒ‰[’l‚ð•Ô‚·‚悤‚ȃŒƒ|[ƒgƒNƒGƒŠ‚͈Ⴂ‚Ü‚·jB + Hibernateã¯ãƒ¡ãƒ¢ãƒªå†…ã®ã‚ªãƒ–ジェクトをロックã—ã¾ã›ã‚“。 + アプリケーションã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®åˆ†é›¢ãƒ¬ãƒ™ãƒ«ã§ + 定義ã—ãŸæŒ¯ã‚‹èˆžã„を期待ã§ãã¾ã™ã€‚ + トランザクションスコープã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§ã‚‚ã‚ã‚‹ Session ã®ãŠé™°ã§ã€ + 識別å­ã‚„クエリã«ã‚ˆã‚Šæ¤œç´¢ã—ãŸã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¯ãƒªãƒ”ータブルリードã«ãªã‚Šã¾ã™ + (スカラー値を返ã™ã‚ˆã†ãªãƒ¬ãƒãƒ¼ãƒˆã‚¯ã‚¨ãƒªã¯é•ã„ã¾ã™ï¼‰ã€‚ - ƒo[ƒWƒ‡ƒjƒ“ƒO‚É‚æ‚鎩“®“I‚ÈŠyŠÏ“I“¯ŽžŽÀs§Œä‚ɉÁ‚¦‚ÄA - SELECT FOR UPDATE •¶‚ðŽg—p‚µ‚ÄA - s‚ð”ߊϓIƒƒbƒN‚·‚邽‚ß‚Ìiƒ}ƒCƒi[‚ÈjAPI‚à’ñ‹Ÿ‚µ‚Ü‚·B - ŠyŠÏ“I“¯ŽžŽÀs§Œä‚Æ‚±‚ÌAPI‚ɂ‚¢‚Ä‚ÍA‚±‚ÌÍ‚ÌŒã‚Ì‚Ù‚¤‚Å‹c˜_‚µ‚Ü‚·B + ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã«ã‚ˆã‚‹è‡ªå‹•çš„ãªæ¥½è¦³çš„åŒæ™‚実行制御ã«åŠ ãˆã¦ã€ + SELECT FOR UPDATE 文を使用ã—ã¦ã€ + 行を悲観的ロックã™ã‚‹ãŸã‚ã®ï¼ˆãƒžã‚¤ãƒŠãƒ¼ãªï¼‰APIã‚‚æä¾›ã—ã¾ã™ã€‚ + 楽観的åŒæ™‚実行制御ã¨ã“ã®APIã«ã¤ã„ã¦ã¯ã€ã“ã®ç« ã®å¾Œã®ã»ã†ã§è­°è«–ã—ã¾ã™ã€‚ - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚â’·‚¢‘ΘbiconversationAƒƒ“ƒOƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“j‚¾‚¯‚Å‚È‚­A - ConfigurationASessionFactoryA‚¨‚æ‚Ñ + データベーストランザクションや長ã„対話(conversationã€ãƒ­ãƒ³ã‚°ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ï¼‰ã ã‘ã§ãªã〠+ Configurationã€SessionFactoryã€ãŠã‚ˆã³ Session - ‚Æ‚¢‚¤—±“x‚ÅHibernate‚ªs‚¤“¯ŽžŽÀs§Œä‚Ì‹c˜_‚ðŽn‚ß‚Ü‚·B + ã¨ã„ã†ç²’度ã§HibernateãŒè¡Œã†åŒæ™‚実行制御ã®è­°è«–を始ã‚ã¾ã™ã€‚ - sessionƒXƒR[ƒv‚ÆtransactionƒXƒR[ƒv + sessionスコープã¨transactionスコープ - SessionFactory ‚Ͷ¬‚·‚邱‚Æ‚ª‚‰¿‚ÅA - ƒXƒŒƒbƒhƒZ[ƒt‚ȃIƒuƒWƒFƒNƒg‚Å‚·B - ‚æ‚Á‚ÄAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‚·‚ׂẴXƒŒƒbƒh‚Å‹¤—L‚·‚ׂ«‚Å‚·B - ’ÊíAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®Žž‚ÉA - Configuration ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚ç‚P“x‚¾‚¯¶¬‚µ‚Ü‚·B + SessionFactory ã¯ç”Ÿæˆã™ã‚‹ã“ã¨ãŒé«˜ä¾¡ã§ã€ + スレッドセーフãªã‚ªãƒ–ジェクトã§ã™ã€‚ + よã£ã¦ã€ã‚¢ãƒ—リケーションã®ã™ã¹ã¦ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã§å…±æœ‰ã™ã¹ãã§ã™ã€‚ + 通常ã€ã‚¢ãƒ—リケーションã®èµ·å‹•æ™‚ã«ã€ + Configuration インスタンスã‹ã‚‰ï¼‘度ã ã‘生æˆã—ã¾ã™ã€‚ - Session ‚Í‚‰¿‚Å‚Í‚È‚­AƒXƒŒƒbƒhƒZ[ƒt‚ȃIƒuƒWƒFƒNƒg‚Å‚à‚ ‚è‚Ü‚¹‚ñB - ‚æ‚Á‚ÄA‚P‚‚̗v‹‚â‚P‚‚̑ΘbA‚P‚‚Ìì‹Æ’PˆÊiunit of workj‚ɑ΂µ‚Ä‚P“x‚¾‚¯Žg‚¢A - ‚»‚ÌŒã‚ÅŽÌ‚Ä‚é‚ׂ«‚Å‚·B - Session ‚Í•K—v‚É‚È‚é‚Ü‚ÅA - JDBC Connectioni‚à‚µ‚­‚Í DataSourcej‚ðŠl“¾‚µ‚Ü‚¹‚ñB - ‚䂦‚ÉAŽÀÛ‚ÉŽg—p‚·‚é‚Æ‚«‚܂ŃŠƒ\[ƒX‚ðÁ”‚Ü‚¹‚ñB + Session ã¯é«˜ä¾¡ã§ã¯ãªãã€ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ãªã‚ªãƒ–ジェクトã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。 + よã£ã¦ã€ï¼‘ã¤ã®è¦æ±‚や1ã¤ã®å¯¾è©±ã€ï¼‘ã¤ã®ä½œæ¥­å˜ä½ï¼ˆunit of work)ã«å¯¾ã—ã¦ï¼‘度ã ã‘使ã„〠+ ãã®å¾Œã§æ¨ã¦ã‚‹ã¹ãã§ã™ã€‚ + Session ã¯å¿…è¦ã«ãªã‚‹ã¾ã§ã€ + JDBC Connection(もã—ã㯠DataSource)をç²å¾—ã—ã¾ã›ã‚“。 + ゆãˆã«ã€å®Ÿéš›ã«ä½¿ç”¨ã™ã‚‹ã¨ãã¾ã§ãƒªã‚½ãƒ¼ã‚¹ã‚’消費ã—ã¾ã›ã‚“。 - ‚±‚Ìó‹µ‚ðŠ®—¹‚³‚¹‚邽‚ß‚ÉA ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚àl‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ƒf[ƒ^ƒx[ƒX“à‚̃ƒbƒN‚Ì‹£‡‚ð­‚È‚­‚·‚邽‚ß‚ÉA - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚͉”\‚ÈŒÀ‚è’Z‚­‚·‚é‚ׂ«‚Å‚·B - ’·‚¢ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‚‚¢•À—ñŽÀs«‚ð‘jŠQ‚µ‚Ü‚·B - ‚䂦‚ÉAƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔiì‹Æ’PˆÊ‚ªŠ®—¹‚·‚é‚Ü‚Åjƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð - ŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚Ì‚ÍA‚½‚¢‚Ä‚¢‚Ìꇂ悢݌v‚Æ‚Í‚¢‚¦‚Ü‚¹‚ñB + ã“ã®çŠ¶æ³ã‚’完了ã•ã›ã‚‹ãŸã‚ã«ã€ データベーストランザクションã«ã¤ã„ã¦ã‚‚考ãˆãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + データベース内ã®ãƒ­ãƒƒã‚¯ã®ç«¶åˆã‚’å°‘ãªãã™ã‚‹ãŸã‚ã«ã€ + データベーストランザクションã¯å¯èƒ½ãªé™ã‚ŠçŸ­ãã™ã‚‹ã¹ãã§ã™ã€‚ + é•·ã„データベーストランザクションã¯ã€ã‚¢ãƒ—リケーションã®é«˜ã„並列実行性を阻害ã—ã¾ã™ã€‚ + ゆãˆã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè€ƒãˆã¦ã„る間(作業å˜ä½ãŒå®Œäº†ã™ã‚‹ã¾ã§ï¼‰ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ + é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹ã®ã¯ã€ãŸã„ã¦ã„ã®å ´åˆã‚ˆã„設計ã¨ã¯ã„ãˆã¾ã›ã‚“。 - ì‹Æ’PˆÊ‚Æ‚¢‚¤ƒXƒR[ƒv‚Ƃ͉½‚Å‚µ‚傤‚©H - ‚P‚‚ÌHibernate Session ‚ÍA - ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‚Ü‚½‚ª‚邱‚Æ‚ª‚Å‚«‚é‚Å‚µ‚傤‚©H - ‚Ü‚½‚ÍAƒXƒR[ƒv‚ƈê‘Έê‚ÌŠÖŒW‚Å‚µ‚傤‚©H - ‚¢‚ Session ‚ðŠJ‚«A•Â‚¶‚é‚ׂ«‚Å‚µ‚傤‚©H - ‚»‚µ‚ÄAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ð‚ǂ̂悤‚É•ª‚¯‚é‚Ì‚Å‚µ‚傤‚©H + 作業å˜ä½ã¨ã„ã†ã‚¹ã‚³ãƒ¼ãƒ—ã¨ã¯ä½•ã§ã—ょã†ã‹ï¼Ÿ + 1ã¤ã®Hibernate Session ã¯ã€ + ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã¾ãŸãŒã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã—ょã†ã‹ï¼Ÿ + ã¾ãŸã¯ã€ã‚¹ã‚³ãƒ¼ãƒ—ã¨ä¸€å¯¾ä¸€ã®é–¢ä¿‚ã§ã—ょã†ã‹ï¼Ÿ + ã„㤠Session ã‚’é–‹ãã€é–‰ã˜ã‚‹ã¹ãã§ã—ょã†ã‹ï¼Ÿ + ãã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’ã©ã®ã‚ˆã†ã«åˆ†ã‘ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ - ì‹Æ’PˆÊiUnit of workj + 作業å˜ä½ï¼ˆUnit of work) - ‚P‚–ڂÍAsession-per-operation ƒAƒ“ƒ`ƒpƒ^[ƒ“‚ðŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB - ‚·‚È‚í‚¿A‚P‚‚̃XƒŒƒbƒh‚Ì’†‚ÅA’Pƒ‚ȃf[ƒ^ƒx[ƒXŒÄ‚Ño‚µ‚Ì‚½‚Ñ‚É - Session ‚ðŠJ‚¢‚ÄA•Â‚¶‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñI - ‚à‚¿‚ë‚ñAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚à“¯—l‚Å‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’†‚̃f[ƒ^ƒx[ƒXŒÄ‚Ño‚µ‚ÍA - Œv‰æ‚³‚ꂽƒV[ƒPƒ“ƒXiplanned sequencej‚ðŽg‚¢A - ƒAƒgƒ~ƒbƒN‚Èì‹Æ’PˆÊ‚É•ª—Þ‚³‚ê‚Ü‚·B - i‚P‚‚ÌSQL•¶‚²‚ƂɃRƒ~ƒbƒg‚·‚鎩“®ƒRƒ~ƒbƒg‚ªA - Žg‚í‚ê‚È‚¢‚Æ‚¢‚¤ˆÓ–¡‚Å‚à‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - Ž©“®ƒRƒ~ƒbƒg‚ÍASQLƒRƒ“ƒ\[ƒ‹‚ŃAƒhƒzƒbƒN‚Èì‹Æ‚ð‚·‚éÛ‚ÉŽg‚¤‚à‚Ì‚Å‚·B - Hibernate‚Í’¼‚¿‚ÉŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚𖳌ø‚É‚µ‚Ü‚·B - ‚à‚µ‚­‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ª–³Œø‰»‚·‚邱‚Æ‚ðŠú‘Ò‚µ‚Ü‚·Bj - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̓IƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ƒf[ƒ^ƒx[ƒX‚Æ‚Ì‚·‚ׂĂ̒ÊM‚ÍAƒf[ƒ^‚Ì“Ç‚Ýž‚Ý‚Å‚ ‚Á‚Ä‚àA‘‚«ž‚Ý‚Å‚ ‚Á‚Ä‚àA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚Ås‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - à–¾‚·‚é‚ÆAƒf[ƒ^“Ç‚Ýž‚݂ɑ΂µ‚ÄAŽ©“®ƒRƒ~ƒbƒg‚Í”ð‚¯‚é‚ׂ«‚Å‚·B - ‚È‚º‚È‚çA‘½”‚̬‚³‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÍA–¾Šm‚É’è‹`‚³‚ꂽ‚P‚‚Ìì‹Æ’PˆÊ‚Æ”ä‚ׂÄA - ƒpƒtƒH[ƒ}ƒ“ƒX‚ª‚æ‚­‚Ȃ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB - ŒãŽÒ‚Í•ÛŽç«‚âŠg’£«‚à‚æ‚è‚·‚®‚ê‚Ä‚¢‚Ü‚·B + 1ã¤ç›®ã¯ã€session-per-operation アンãƒãƒ‘ターンを使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 + ã™ãªã‚ã¡ã€ï¼‘ã¤ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã®ä¸­ã§ã€å˜ç´”ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å‘¼ã³å‡ºã—ã®ãŸã³ã« + Session ã‚’é–‹ã„ã¦ã€é–‰ã˜ã¦ã¯ã„ã‘ã¾ã›ã‚“ï¼ + ã‚‚ã¡ã‚ã‚“ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ã€‚ + アプリケーション中ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å‘¼ã³å‡ºã—ã¯ã€ + 計画ã•ã‚ŒãŸã‚·ãƒ¼ã‚±ãƒ³ã‚¹ï¼ˆplanned sequence)を使ã„〠+ アトミックãªä½œæ¥­å˜ä½ã«åˆ†é¡žã•ã‚Œã¾ã™ã€‚ + (1ã¤ã®SQLæ–‡ã”ã¨ã«ã‚³ãƒŸãƒƒãƒˆã™ã‚‹è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆãŒã€ + 使ã‚ã‚Œãªã„ã¨ã„ã†æ„味ã§ã‚‚ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + 自動コミットã¯ã€SQLコンソールã§ã‚¢ãƒ‰ãƒ›ãƒƒã‚¯ãªä½œæ¥­ã‚’ã™ã‚‹éš›ã«ä½¿ã†ã‚‚ã®ã§ã™ã€‚ + Hibernateã¯ç›´ã¡ã«è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆãƒ¢ãƒ¼ãƒ‰ã‚’無効ã«ã—ã¾ã™ã€‚ + ã‚‚ã—ãã¯ã€ã‚¢ãƒ—リケーションサーãƒãƒ¼ãŒç„¡åŠ¹åŒ–ã™ã‚‹ã“ã¨ã‚’期待ã—ã¾ã™ã€‚) + データベーストランザクションã¯ã‚ªãƒ—ションã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + データベースã¨ã®ã™ã¹ã¦ã®é€šä¿¡ã¯ã€ãƒ‡ãƒ¼ã‚¿ã®èª­ã¿è¾¼ã¿ã§ã‚ã£ã¦ã‚‚ã€æ›¸ãè¾¼ã¿ã§ã‚ã£ã¦ã‚‚〠+ トランザクションã®ä¸­ã§è¡Œã‚ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 説明ã™ã‚‹ã¨ã€ãƒ‡ãƒ¼ã‚¿èª­ã¿è¾¼ã¿ã«å¯¾ã—ã¦ã€è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆã¯é¿ã‘ã‚‹ã¹ãã§ã™ã€‚ + ãªãœãªã‚‰ã€å¤šæ•°ã®å°ã•ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯ã€æ˜Žç¢ºã«å®šç¾©ã•ã‚ŒãŸï¼‘ã¤ã®ä½œæ¥­å˜ä½ã¨æ¯”ã¹ã¦ã€ + パフォーマンスãŒã‚ˆããªã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 + 後者ã¯ä¿å®ˆæ€§ã‚„拡張性もよりã™ãã‚Œã¦ã„ã¾ã™ã€‚ - ƒ}ƒ‹ƒ`ƒ†[ƒU[‚̃Nƒ‰ƒCƒAƒ“ƒg^ƒT[ƒo[ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚ÅA - Å‚à‚æ‚­Žg‚í‚ê‚éƒpƒ^[ƒ“‚ÍAsession-per-request ‚Å‚·B - ‚±‚̃‚ƒfƒ‹‚Ì’†‚Å‚ÍA - ƒNƒ‰ƒCƒAƒ“ƒg‚©‚çiHibernate‰i‘±‰»‘w‚ª“®ì‚·‚éjƒT[ƒo[‚ÖƒŠƒNƒGƒXƒg‚ª‘—‚ç‚êA - V‚µ‚¢Hibernate Session ‚ªŠJ‚©‚ê‚Ü‚·B - ‚»‚µ‚ÄA‚±‚Ìì‹Æ’PˆÊ‚Ì’†‚Å‚·‚ׂẴf[ƒ^ƒx[ƒXˆ—‚ªŽÀs‚³‚ê‚Ü‚·B - ì‹Æ‚ªŠ®—¹‚µ‚½i‚»‚µ‚ÄAƒNƒ‰ƒCƒAƒ“ƒg‚ւ̃ŒƒXƒ|ƒ“ƒX‚ª€”õ‚Å‚«‚½jŽž“_‚ÅA - session ‚ðƒtƒ‰ƒbƒVƒ…‚µA•Â‚¶‚Ü‚·B - ƒNƒ‰ƒCƒAƒ“ƒg‚Ì—v‹‚ðˆ—‚·‚邽‚ß‚ÉA‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg—p‚·‚é‚Å‚µ‚傤B - Session ‚ðŠJ‚«A•Â‚¶‚éÛ‚ÉA - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µAƒRƒ~ƒbƒg‚µ‚Ü‚·B - “ñ‚‚̊֌W‚͈ê‘Έê‚Å‚·B - ‚±‚̃‚ƒfƒ‹‚Í‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŠ®‘S‚É“K‡‚µ‚Ü‚·B + マルãƒãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆï¼ã‚µãƒ¼ãƒãƒ¼ã‚¢ãƒ—リケーションã®ä¸­ã§ã€ + 最もよã使ã‚れるパターンã¯ã€session-per-request ã§ã™ã€‚ + ã“ã®ãƒ¢ãƒ‡ãƒ«ã®ä¸­ã§ã¯ã€ + クライアントã‹ã‚‰ï¼ˆHibernate永続化層ãŒå‹•ä½œã™ã‚‹ï¼‰ã‚µãƒ¼ãƒãƒ¼ã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒé€ã‚‰ã‚Œã€ + æ–°ã—ã„Hibernate Session ãŒé–‹ã‹ã‚Œã¾ã™ã€‚ + ãã—ã¦ã€ã“ã®ä½œæ¥­å˜ä½ã®ä¸­ã§ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å‡¦ç†ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ + 作業ãŒå®Œäº†ã—ãŸï¼ˆãã—ã¦ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¸ã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒæº–å‚™ã§ããŸï¼‰æ™‚点ã§ã€ + session をフラッシュã—ã€é–‰ã˜ã¾ã™ã€‚ + クライアントã®è¦æ±‚を処ç†ã™ã‚‹ãŸã‚ã«ã€ï¼‘ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’使用ã™ã‚‹ã§ã—ょã†ã€‚ + Session ã‚’é–‹ãã€é–‰ã˜ã‚‹éš›ã«ã€ + データベーストランザクションを開始ã—ã€ã‚³ãƒŸãƒƒãƒˆã—ã¾ã™ã€‚ + 二ã¤ã®é–¢ä¿‚ã¯ä¸€å¯¾ä¸€ã§ã™ã€‚ + ã“ã®ãƒ¢ãƒ‡ãƒ«ã¯å¤šãã®ã‚¢ãƒ—リケーションã«å®Œå…¨ã«é©åˆã—ã¾ã™ã€‚ - ˆÈ~‚ÌŽÀ‘•‚Ƀ`ƒƒƒŒƒ“ƒW‚µ‚Ä‚­‚¾‚³‚¢B - Session ‚ðŽ‚¿Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð³Šm‚ÉŠJŽn‚µAI‚í‚点‚邾‚¯‚Å‚È‚­A - ƒf[ƒ^ƒAƒNƒZƒX‘€ì‚à“¾‚â‚·‚­‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - ƒŠƒNƒGƒXƒg‚ªƒT[ƒo[‚Ƀqƒbƒg‚µ‚½Û‚ÆAƒŒƒXƒ|ƒ“ƒX‚ð‘—M‚·‚é‘O‚ÉAŽÀs‚³‚ê‚éinterceptor - i—Ⴆ‚ÎAServletFilterj‚ðŽg‚Á‚ÄAì‹Æ’PˆÊ‚Ì‹«ŠE‚ðŽÀ‘•‚·‚é‚Ì‚ª—‘z“I‚Å‚·B - ThreadLocal •Ï”‚ðŽg‚Á‚ÄA - ƒŠƒNƒGƒXƒg‚ðˆ—‚·‚éƒXƒŒƒbƒh‚É Session ‚ðŒ‹‚Ñ‚Â‚¯‚邱‚Æ‚ð„§‚µ‚Ü‚·B - ‚±‚ê‚É‚æ‚èAƒXƒŒƒbƒh“à‚ÅŽÀs‚³‚ê‚é‚·‚ׂẴR[ƒh‚ÅA - istatic•Ï”‚ɃAƒNƒZƒX‚·‚é‚悤‚ÉjŠÈ’P‚É Session ‚ɃAƒNƒZƒX‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B - ‘I‘ð‚µ‚½ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Ì‹@\ŽŸ‘æ‚ÅAThreadLocal - •Ï”‚Ì’†‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒg‚ð•ÛŽ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚±‚ÌŽÀ‘•ƒpƒ^[ƒ“‚ÍAThreadLocal Session ‚¨‚æ‚Ñ - Open Session in View ‚Æ‚¢‚¤–¼‘O‚Å’m‚ç‚ê‚Ä‚¢‚Ü‚·B - –{ƒhƒLƒ…ƒƒ“ƒg‚Åæ‚ÉŒ©‚¹‚½ HibernateUtil ƒwƒ‹ƒp[ƒNƒ‰ƒX‚ðŠg’£‚·‚邱‚Æ‚ÅA - ‚±‚̃pƒ^[ƒ“‚ð—eˆÕ‚ÉŽÀ‘•‚Å‚«‚Ü‚·B - ‚à‚¿‚ë‚ñAinterceptor ‚ðŽÀ‘•‚·‚é•û–@‚ðŒ©‚Â‚¯AŠÂ‹«‚ðƒZƒbƒgƒAƒbƒv‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - Hibernate‚ÌWebƒTƒCƒg‚É‚ ‚étips‚Æ—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 以é™ã®å®Ÿè£…ã«ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã—ã¦ãã ã•ã„。 + Session ã‚’æŒã¡ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’正確ã«é–‹å§‹ã—ã€çµ‚ã‚らã›ã‚‹ã ã‘ã§ãªã〠+ データアクセスæ“作も得やã™ãã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + リクエストãŒã‚µãƒ¼ãƒãƒ¼ã«ãƒ’ットã—ãŸéš›ã¨ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’é€ä¿¡ã™ã‚‹å‰ã«ã€å®Ÿè¡Œã•ã‚Œã‚‹interceptor + (例ãˆã°ã€ServletFilter)を使ã£ã¦ã€ä½œæ¥­å˜ä½ã®å¢ƒç•Œã‚’実装ã™ã‚‹ã®ãŒç†æƒ³çš„ã§ã™ã€‚ + ThreadLocal 変数を使ã£ã¦ã€ + リクエストを処ç†ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ã« Session ã‚’çµã³ã¤ã‘ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šã€ã‚¹ãƒ¬ãƒƒãƒ‰å†…ã§å®Ÿè¡Œã•ã‚Œã‚‹ã™ã¹ã¦ã®ã‚³ãƒ¼ãƒ‰ã§ã€ + (static変数ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‚ˆã†ã«ï¼‰ç°¡å˜ã« Session ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + é¸æŠžã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã®æ©Ÿæ§‹æ¬¡ç¬¬ã§ã€ThreadLocal + 変数ã®ä¸­ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’ä¿æŒã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã“ã®å®Ÿè£…パターンã¯ã€ThreadLocal Session ãŠã‚ˆã³ + Open Session in View ã¨ã„ã†åå‰ã§çŸ¥ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ + 本ドキュメントã§å…ˆã«è¦‹ã›ãŸ HibernateUtil ヘルパークラスを拡張ã™ã‚‹ã“ã¨ã§ã€ + ã“ã®ãƒ‘ターンを容易ã«å®Ÿè£…ã§ãã¾ã™ã€‚ + ã‚‚ã¡ã‚ã‚“ã€interceptor を実装ã™ã‚‹æ–¹æ³•ã‚’見ã¤ã‘ã€ç’°å¢ƒã‚’セットアップã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernateã®Webサイトã«ã‚ã‚‹tipsã¨ä¾‹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ˆÈ~‚ÌŽÀ‘•‚Ƀ`ƒƒƒŒƒ“ƒW‚µ‚Ä‚­‚¾‚³‚¢B - Hibernate‚Í’Pƒ‚È‚±‚̃pƒ^[ƒ“‚Ì‚½‚ß‚ÉA—\‚ß‘g‚Ýž‚܂ꂽ - ucurrent sessionv‚ÌŠÇ—‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ƒT[ƒo[ƒŠƒNƒGƒXƒg‚ðˆ—‚·‚éۂ̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚»‚µ‚ÄAƒŒƒXƒ|ƒ“ƒX‚ðƒNƒ‰ƒCƒAƒ“ƒg‚É‘—M‚·‚é‘O‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðI‚í‚点‚Ü‚·B - D‚«‚È•û–@‚ÅŽÀŒ»‚Å‚«‚Ü‚·Bˆê”Ê“I‚ȉðŒˆô‚Í ServletFilter ‚â - ƒT[ƒrƒXƒƒ\ƒbƒh‚ðƒ|ƒCƒ“ƒgƒJƒbƒg‚µ‚ÄAOPƒCƒ“ƒ^[ƒZƒvƒ^[A - proxy/interception ƒRƒ“ƒeƒi‚Å‚·B - EJBƒRƒ“ƒeƒi‚ÍEJBƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚ðƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚Ä - ƒAƒXƒyƒNƒg‚ðƒNƒƒXƒJƒbƒg‚·‚éŽÀ‘•‚Ì•W€“I‚È•û–@‚Å‚·iCMT‚É‚æ‚é錾“IjB - ƒvƒƒOƒ‰ƒ€‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽg‚¤‚ÆŒˆ‚ß‚½ê‡A - ŠÈ’P‚ÉŽg‚¤‚½‚ßAŒÝŠ·«‚Ì‚ ‚éƒR[ƒh‚É‚·‚邽‚ß‚ÉA - ‚±‚ÌÍ‚ÌŒã‚Ì‚Ù‚¤‚É‚ ‚éHibernate Transaction API‚Ì‚Ù‚¤‚ª‚æ‚¢‚Å‚·B + 以é™ã®å®Ÿè£…ã«ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã—ã¦ãã ã•ã„。 + Hibernateã¯å˜ç´”ãªã“ã®ãƒ‘ターンã®ãŸã‚ã«ã€äºˆã‚組ã¿è¾¼ã¾ã‚ŒãŸ + 「current sessionã€ã®ç®¡ç†ã‚’æä¾›ã—ã¾ã™ã€‚ + サーãƒãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’処ç†ã™ã‚‹éš›ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’開始ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ãã—ã¦ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’クライアントã«é€ä¿¡ã™ã‚‹å‰ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’終ã‚らã›ã¾ã™ã€‚ + 好ããªæ–¹æ³•ã§å®Ÿç¾ã§ãã¾ã™ã€‚一般的ãªè§£æ±ºç­–㯠ServletFilter ã‚„ + サービスメソッドをãƒã‚¤ãƒ³ãƒˆã‚«ãƒƒãƒˆã—ã¦AOPインターセプター〠+ proxy/interception コンテナã§ã™ã€‚ + EJBコンテナã¯EJBセッションビーンをトランザクション境界ã¨ã—㦠+ アスペクトをクロスカットã™ã‚‹å®Ÿè£…ã®æ¨™æº–çš„ãªæ–¹æ³•ã§ã™ï¼ˆCMTã«ã‚ˆã‚‹å®£è¨€çš„)。 + プログラムã«ã‚ˆã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’使ã†ã¨æ±ºã‚ãŸå ´åˆã€ + ç°¡å˜ã«ä½¿ã†ãŸã‚ã€äº’æ›æ€§ã®ã‚るコードã«ã™ã‚‹ãŸã‚ã«ã€ + ã“ã®ç« ã®å¾Œã®ã»ã†ã«ã‚ã‚‹Hibernate Transaction APIã®ã»ã†ãŒã‚ˆã„ã§ã™ã€‚ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚ÍA•K—v‚È‚Æ‚«‚É‚Ç‚±‚Å‚àA‰½‰ñ‚Å‚àA - ’P‚É sessionFactory.getCurrentSession() ‚ðŒÄ‚Ño‚·‚¾‚¯‚Å - uŒ»Ý‚̃ZƒbƒVƒ‡ƒ“v‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B - Œ»Ý‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ö‚Ì ƒZƒbƒVƒ‡ƒ“ ‚ðí‚Ɏ擾‚µ‚Ü‚·B - ƒŠƒ\[ƒXEƒ[ƒJƒ‹‚Ȋ‹«A‚à‚µ‚­‚ÍJTAŠÂ‹«‚ð\¬‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ - i ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢jB + アプリケーションã®ã‚³ãƒ¼ãƒ‰ã¯ã€å¿…è¦ãªã¨ãã«ã©ã“ã§ã‚‚ã€ä½•å›žã§ã‚‚〠+ å˜ã« sessionFactory.getCurrentSession() を呼ã³å‡ºã™ã ã‘㧠+ 「ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ + ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¸ã® セッション を常ã«å–å¾—ã—ã¾ã™ã€‚ + リソース・ローカルãªç’°å¢ƒã€ã‚‚ã—ãã¯JTA環境を構æˆã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + ( ã‚’å‚ç…§ã—ã¦ãã ã•ã„)。 - ‚Æ‚«‚Ç‚«Auƒrƒ…[‚ð•`‰æ‚·‚év‚Ü‚Å ƒZƒbƒVƒ‡ƒ“ - ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃XƒR[ƒv‚ðŠg’£‚·‚é‚Æ•Ö—˜‚È‚±‚Æ‚ª‚ ‚è‚Ü‚·B - ‚±‚ê‚ÍA—v‹‚̈—‚Æ•`‰æ‚̃tƒF[ƒY‚𕪂¯‚Ä‚¢‚é - ƒT[ƒuƒŒƒbƒgƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¢‚Ä“Á‚ɖ𗧂¿‚Ü‚·B - “ÆŽ©‚̃Cƒ“ƒ^[ƒZƒvƒ^‚ðŽÀ‘•‚·‚ê‚ÎA - ƒrƒ…[‚ð•`‰æ‚·‚é‚܂Ńf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠg’£‚·‚é‚Ì‚ÍŠÈ’P‚Å‚·B - ‚µ‚©‚µAƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌEJB‚É—Š‚éꇂÍAŠÈ’P‚É‚Í‚Å‚«‚Ü‚¹‚ñB - ‚È‚º‚È‚çAƒrƒ…[‚Ì•`‰æ‚ðŠJŽn‚·‚é‘O‚ÉAEJB‚̃ƒ\ƒbƒh‚ªƒŠƒ^[ƒ“‚µ‚½Û‚ÉA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚·‚邽‚ß‚Å‚·B - ‚±‚Ì Open Session in View ƒpƒ^[ƒ“‚ÉŠÖ˜A‚·‚éƒqƒ“ƒg‚Æ—á‚ɂ‚¢‚Ä‚ÍA - Hibernate‚ÌWebƒTƒCƒg‚âƒtƒH[ƒ‰ƒ€‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + ã¨ãã©ãã€ã€Œãƒ“ューをæç”»ã™ã‚‹ã€ã¾ã§ セッション + ã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¹ã‚³ãƒ¼ãƒ—ã‚’æ‹¡å¼µã™ã‚‹ã¨ä¾¿åˆ©ãªã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯ã€è¦æ±‚ã®å‡¦ç†ã¨æç”»ã®ãƒ•ã‚§ãƒ¼ã‚ºã‚’分ã‘ã¦ã„ã‚‹ + サーブレットアプリケーションã«ãŠã„ã¦ç‰¹ã«å½¹ç«‹ã¡ã¾ã™ã€‚ + 独自ã®ã‚¤ãƒ³ã‚¿ãƒ¼ã‚»ãƒ—タを実装ã™ã‚Œã°ã€ + ビューをæç”»ã™ã‚‹ã¾ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’æ‹¡å¼µã™ã‚‹ã®ã¯ç°¡å˜ã§ã™ã€‚ + ã—ã‹ã—ã€ã‚³ãƒ³ãƒ†ãƒŠç®¡ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®EJBã«é ¼ã‚‹å ´åˆã¯ã€ç°¡å˜ã«ã¯ã§ãã¾ã›ã‚“。 + ãªãœãªã‚‰ã€ãƒ“ューã®æ画を開始ã™ã‚‹å‰ã«ã€EJBã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒãƒªã‚¿ãƒ¼ãƒ³ã—ãŸéš›ã«ã€ + トランザクションãŒå®Œäº†ã™ã‚‹ãŸã‚ã§ã™ã€‚ + ã“ã® Open Session in View パターンã«é–¢é€£ã™ã‚‹ãƒ’ントã¨ä¾‹ã«ã¤ã„ã¦ã¯ã€ + Hibernateã®Webサイトやフォーラムをå‚ç…§ã—ã¦ãã ã•ã„。 - ’·‚¢‘Θb + é•·ã„対話 - session-per-requestƒpƒ^[ƒ“‚ÍAì‹Æ’PˆÊ‚ðÝŒv‚·‚éۂɖ𗧂Âl‚¦‚Æ‚¢‚¤‚¾‚¯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ‘½‚­‚̃rƒWƒlƒXƒvƒƒZƒX‚ÍAƒ†[ƒU[‚Ƃ̈ê˜A‚Ì‘ŠŒÝì—p‘S‘Ì‚ð—v‹‚µ‚Ü‚·B - ‚»‚Ì‘ŠŒÝì—p‚É‚ÍAƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚ªŠÜ‚Ü‚ê‚Ü‚·B + session-per-requestパターンã¯ã€ä½œæ¥­å˜ä½ã‚’設計ã™ã‚‹éš›ã«å½¹ç«‹ã¤è€ƒãˆã¨ã„ã†ã ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + 多ãã®ãƒ“ジãƒã‚¹ãƒ—ロセスã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã®ä¸€é€£ã®ç›¸äº’作用全体をè¦æ±‚ã—ã¾ã™ã€‚ + ãã®ç›¸äº’作用ã«ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¢ã‚¯ã‚»ã‚¹ãŒå«ã¾ã‚Œã¾ã™ã€‚ - Web‚ƃGƒ“ƒ^[ƒvƒ‰ƒCƒYƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª - ƒ†[ƒU‚Æ‚Ì‘ŠŒÝì—p‚É‚Ü‚Å“n‚邱‚Æ‚Í‹–‚³‚ê‚Ü‚¹‚ñB + Webã¨ã‚¨ãƒ³ã‚¿ãƒ¼ãƒ—ライズアプリケーションã§ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒ + ユーザã¨ã®ç›¸äº’作用ã«ã¾ã§æ¸¡ã‚‹ã“ã¨ã¯è¨±ã•ã‚Œã¾ã›ã‚“。 - ŽŸ‚Ì—á‚ð‚æ‚­l‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B + 次ã®ä¾‹ã‚’よã考ãˆã¦ã¿ã¦ãã ã•ã„。 - ƒ_ƒCƒAƒƒO‚Ìʼn‚̉æ–Ê‚ªŠJ‚«AŒÂX‚Ì Session - ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚Ń[ƒh‚³‚ꂽƒf[ƒ^‚ðƒ†[ƒU[‚ÉŒ©‚¹‚Ü‚·B - ƒ†[ƒU[‚̓IƒuƒWƒFƒNƒg‚ðŽ©—R‚ÉC³‚Å‚«‚Ü‚·B + ダイアログã®æœ€åˆã®ç”»é¢ãŒé–‹ãã€å€‹ã€…ã® Session + ã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ä¸­ã§ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã‚’ユーザーã«è¦‹ã›ã¾ã™ã€‚ + ユーザーã¯ã‚ªãƒ–ジェクトを自由ã«ä¿®æ­£ã§ãã¾ã™ã€‚ - 5•ªŒã‚Ƀ†[ƒU[‚ÍuSavev‚ðƒNƒŠƒbƒN‚µAC³‚ª‰i‘±‰»‚³‚ê‚é‚Ì‚ðŠú‘Ò‚µ‚Ü‚·B - ‚Ü‚½A‚±‚Ìî•ñ‚ð•ÒW‚µ‚½‚Ì‚ÍŽ©•ª‚Pl‚¾‚¯‚ÅA - C³‚̃Rƒ“ƒtƒŠƒNƒg‚Í”­¶‚µ‚È‚¢‚ÆŠú‘Ò‚µ‚Ü‚·B + 5分後ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã€ŒSaveã€ã‚’クリックã—ã€ä¿®æ­£ãŒæ°¸ç¶šåŒ–ã•ã‚Œã‚‹ã®ã‚’期待ã—ã¾ã™ã€‚ + ã¾ãŸã€ã“ã®æƒ…報を編集ã—ãŸã®ã¯è‡ªåˆ†ï¼‘人ã ã‘ã§ã€ + 修正ã®ã‚³ãƒ³ãƒ•ãƒªã‚¯ãƒˆã¯ç™ºç”Ÿã—ãªã„ã¨æœŸå¾…ã—ã¾ã™ã€‚ - ‚±‚Ìì‹Æ’PˆÊ‚ðiƒ†[ƒU[‚ÌŽ‹“_‚Åj’·Šú‚Ì ‘Θb - i‚à‚µ‚­‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ j‚ƌĂт܂·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚±‚ê‚ðŽÀ‘•‚·‚é•û–@‚Í‚½‚­‚³‚ñ‚ ‚è‚Ü‚·B + ã“ã®ä½œæ¥­å˜ä½ã‚’(ユーザーã®è¦–点ã§ï¼‰é•·æœŸã® 対話 + (もã—ãã¯ã€ã‚¢ãƒ—リケーショントランザクション )ã¨å‘¼ã³ã¾ã™ã€‚ + アプリケーションã«ã“れを実装ã™ã‚‹æ–¹æ³•ã¯ãŸãã•ã‚“ã‚ã‚Šã¾ã™ã€‚ - ʼn‚ÉŽv‚¢‚‚­ŽÀ‘•‚ÍAƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔASession - ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚µ‚Ä‚¨‚­‚±‚Æ‚Å‚·B - “¯Žž‚ÉC³‚³‚ꂸA•ª—£‚ÆŒ´Žq«‚ª•ÛØ‚³‚ê‚é‚悤‚ÉA - ƒf[ƒ^ƒx[ƒX“à‚̃ƒbƒN‚Í•ÛŽ‚µ‚½‚Ü‚Ü‚É‚µ‚Ü‚·B - ‚à‚¿‚ë‚ñA‚±‚ê‚̓Aƒ“ƒ`ƒpƒ^[ƒ“‚Å‚·B - ‚È‚º‚È‚çAƒƒbƒN‚Ì‹£‡‚ª”­¶‚·‚é‚ÆA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“¯Žžƒ†[ƒU[”‚ɉž‚¶‚ăXƒP[ƒ‹ƒAƒbƒv‚Å‚«‚È‚­‚È‚é‚©‚ç‚Å‚·B + 最åˆã«æ€ã„ã¤ã実装ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè€ƒãˆã¦ã„ã‚‹é–“ã€Session + ã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’é–‹ã„ãŸã¾ã¾ã«ã—ã¦ãŠãã“ã¨ã§ã™ã€‚ + åŒæ™‚ã«ä¿®æ­£ã•ã‚Œãšã€åˆ†é›¢ã¨åŽŸå­æ€§ãŒä¿è¨¼ã•ã‚Œã‚‹ã‚ˆã†ã«ã€ + データベース内ã®ãƒ­ãƒƒã‚¯ã¯ä¿æŒã—ãŸã¾ã¾ã«ã—ã¾ã™ã€‚ + ã‚‚ã¡ã‚ã‚“ã€ã“ã‚Œã¯ã‚¢ãƒ³ãƒãƒ‘ターンã§ã™ã€‚ + ãªãœãªã‚‰ã€ãƒ­ãƒƒã‚¯ã®ç«¶åˆãŒç™ºç”Ÿã™ã‚‹ã¨ã€ + アプリケーションãŒåŒæ™‚ユーザー数ã«å¿œã˜ã¦ã‚¹ã‚±ãƒ¼ãƒ«ã‚¢ãƒƒãƒ—ã§ããªããªã‚‹ã‹ã‚‰ã§ã™ã€‚ - –¾‚ç‚©‚ÉA‘Θb‚ðŽÀ‘•‚·‚邽‚ß‚É‚ÍA - ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg—p‚·‚é‚ׂ«‚Å‚·B - ‚±‚Ìê‡AƒrƒWƒlƒXƒvƒƒZƒX‚Ì•ª—£‚ðˆÛŽ‚·‚邱‚Æ‚ÍA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‘w‚ÌÓ–±‚Ì‚P‚‚ɂȂè‚Ü‚·B - ‚P‚‚̑Θb‚ÍA - ’Êí‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‹y‚Ñ‚Ü‚·B - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚P‚‚̂ÝiÅŒã‚Ì‚P‚Âj‚ªXV‚µ‚½ƒf[ƒ^‚ð•Û‘¶‚µA - ‘¼‚̓f[ƒ^‚ð“Ç‚Þ‚¾‚¯‚Å‚ ‚ê‚ÎA‚»‚ê‚̓Aƒgƒ~ƒbƒN‚Å‚· - i—Ⴆ‚ÎA‚¢‚­‚‚©‚Ì—v‹^‰ž“š‚ðŒJ‚è•Ô‚·ƒEƒBƒU[ƒhŒ`Ž®‚̃_ƒCƒAƒƒOjB - ‚±‚ê‚Í•·‚­‚æ‚èAŽÀ‘•‚µ‚½‚Ù‚¤‚ªŠÈ’P‚Å‚·B - Hibernate‚Ì‹@”\‚ðŽg‚¤‚Ì‚Å‚ ‚ê‚ÎA“Á‚ÉŠÈ’P‚Å‚·B + 明らã‹ã«ã€å¯¾è©±ã‚’実装ã™ã‚‹ãŸã‚ã«ã¯ã€ + ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’使用ã™ã‚‹ã¹ãã§ã™ã€‚ + ã“ã®å ´åˆã€ãƒ“ジãƒã‚¹ãƒ—ロセスã®åˆ†é›¢ã‚’維æŒã™ã‚‹ã“ã¨ã¯ã€ + アプリケーション層ã®è²¬å‹™ã®ï¼‘ã¤ã«ãªã‚Šã¾ã™ã€‚ + 1ã¤ã®å¯¾è©±ã¯ã€ + 通常ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«åŠã³ã¾ã™ã€‚ + データベーストランザクションã®ï¼‘ã¤ã®ã¿ï¼ˆæœ€å¾Œã®ï¼‘ã¤ï¼‰ãŒæ›´æ–°ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’ä¿å­˜ã—〠+ ä»–ã¯ãƒ‡ãƒ¼ã‚¿ã‚’読むã ã‘ã§ã‚ã‚Œã°ã€ãã‚Œã¯ã‚¢ãƒˆãƒŸãƒƒã‚¯ã§ã™ + (例ãˆã°ã€ã„ãã¤ã‹ã®è¦æ±‚ï¼å¿œç­”ã‚’ç¹°ã‚Šè¿”ã™ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰å½¢å¼ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ï¼‰ã€‚ + ã“ã‚Œã¯èžãよりã€å®Ÿè£…ã—ãŸã»ã†ãŒç°¡å˜ã§ã™ã€‚ + Hibernateã®æ©Ÿèƒ½ã‚’使ã†ã®ã§ã‚ã‚Œã°ã€ç‰¹ã«ç°¡å˜ã§ã™ã€‚ - Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO - - Hibernate‚ÍŽ©“®“I‚ÉŠyŠÏ“I“¯ŽžŽÀs§Œä‚ª‚Å‚«‚Ü‚·B - ƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔ‚É“¯Žž‚ÉC³‚ª‚¨‚«‚½ê‡AŽ©“®“I‚ÉŒŸo‚Å‚«‚Ü‚·B - ’ÊíA‘Θb‚ÌI—¹Žž‚Ƀ`ƒFƒbƒN‚·‚邾‚¯‚Å‚·B + 自動ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚° + - Hibernateã¯è‡ªå‹•çš„ã«æ¥½è¦³çš„åŒæ™‚実行制御ãŒã§ãã¾ã™ã€‚ + ユーザーãŒè€ƒãˆã¦ã„ã‚‹é–“ã«åŒæ™‚ã«ä¿®æ­£ãŒãŠããŸå ´åˆã€è‡ªå‹•çš„ã«æ¤œå‡ºã§ãã¾ã™ã€‚ + 通常ã€å¯¾è©±ã®çµ‚了時ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã ã‘ã§ã™ã€‚ - •ª—£iDetachedjƒIƒuƒWƒFƒNƒg - ‚·‚Å‚É‹c˜_‚µ‚½ - session-per-request ƒpƒ^[ƒ“‚ðŽg‚¤‚ÆŒˆ’肵‚½ê‡A - ƒ[ƒh‚³‚ꂽ‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ÍAƒ†[ƒU‚ªl‚¦‚Ä‚¢‚éŠÔ‚ÍA - ƒZƒbƒVƒ‡ƒ“‚©‚番—£‚³‚ꂽó‘Ô‚É‚È‚è‚Ü‚·B - ƒIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“‚ÉĒljÁ‚µAC³‚ð‰i‘±‰»‚Å‚«‚Ü‚·B - ‚±‚ê‚ð session-per-request-with-detached-objects - ƒpƒ^[ƒ“‚ƌĂт܂·B - Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚¤‚±‚Æ‚ÅA“¯Žž‚És‚í‚ê‚éC³‚𕪗£‚Å‚«‚Ü‚·B + 分離(Detached)オブジェクト - ã™ã§ã«è­°è«–ã—㟠+ session-per-request パターンを使ã†ã¨æ±ºå®šã—ãŸå ´åˆã€ + ロードã•ã‚ŒãŸã™ã¹ã¦ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ãƒ¦ãƒ¼ã‚¶ãŒè€ƒãˆã¦ã„ã‚‹é–“ã¯ã€ + セッションã‹ã‚‰åˆ†é›¢ã•ã‚ŒãŸçŠ¶æ…‹ã«ãªã‚Šã¾ã™ã€‚ + オブジェクトをセッションã«å†è¿½åŠ ã—ã€ä¿®æ­£ã‚’永続化ã§ãã¾ã™ã€‚ + ã“れを session-per-request-with-detached-objects + パターンã¨å‘¼ã³ã¾ã™ã€‚ + 自動ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚’使ã†ã“ã¨ã§ã€åŒæ™‚ã«è¡Œã‚れる修正を分離ã§ãã¾ã™ã€‚ - Šg’£i‚à‚µ‚­‚ÍA’·‚¢jƒZƒbƒVƒ‡ƒ“ - - Hibernate‚Ì Session ‚ÍA - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒRƒ~ƒbƒg‚µ‚½ŒãA - — ‚ÅŒ‹‚т‚¢‚Ä‚¢‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðØ’f‚Å‚«‚Ü‚·B - ‚»‚µ‚ÄAƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç‚ÌV‚µ‚¢—v‹‚ª”­¶‚µ‚½Û‚ÉAÄÚ‘±‚Å‚«‚Ü‚·B - ‚±‚̃pƒ^[ƒ“‚ÍAsession-per-conversation - ‚Æ‚¢‚¤–¼‚Å’m‚ç‚ê‚Ä‚¨‚èAƒIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“‚ÖĒljÁ‚·‚邱‚Æ‚³‚¦•s—v‚É‚µ‚Ü‚·B - Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚¤‚±‚Æ‚ÅA“¯Žž‚És‚í‚ê‚éC³‚𕪗£‚Å‚«‚Ü‚·B + 拡張(もã—ãã¯ã€é•·ã„)セッション + - Hibernateã® Session ã¯ã€ + データベーストランザクションをコミットã—ãŸå¾Œã€ + è£ã§çµã³ã¤ã„ã¦ã„ã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’切断ã§ãã¾ã™ã€‚ + ãã—ã¦ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‹ã‚‰ã®æ–°ã—ã„è¦æ±‚ãŒç™ºç”Ÿã—ãŸéš›ã«ã€å†æŽ¥ç¶šã§ãã¾ã™ã€‚ + ã“ã®ãƒ‘ターンã¯ã€session-per-conversation + ã¨ã„ã†åã§çŸ¥ã‚‰ã‚Œã¦ãŠã‚Šã€ã‚ªãƒ–ジェクトをセッションã¸å†è¿½åŠ ã™ã‚‹ã“ã¨ã•ãˆä¸è¦ã«ã—ã¾ã™ã€‚ + 自動ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚’使ã†ã“ã¨ã§ã€åŒæ™‚ã«è¡Œã‚れる修正を分離ã§ãã¾ã™ã€‚ - ’Êí Session ‚ðŽ©“®“I‚Ƀtƒ‰ƒbƒVƒ…‚³‚¹‚¸A - –¾Ž¦“I‚Ƀtƒ‰ƒbƒVƒ…‚µ‚Ü‚·B + 通常 Session を自動的ã«ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã•ã›ãšã€ + 明示的ã«ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã™ã€‚ - session-per-request-with-detached-objects ‚Æ - session-per-conversation ‚Ì‚Q‚‚ÍA - —˜“_‚ÆŒ‡“_‚ðŽ‚Á‚Ä‚¢‚Ü‚·B - ‚±‚ê‚ɂ‚¢‚Ä‚ÍA‚±‚ÌÍ‚ÌŒã‚Ì‚Ù‚¤‚ÅAŠyŠÏ“I“¯ŽžŽÀs§Œä‚Ì•¶–¬‚Ì’†‚Å‹c˜_‚µ‚Ü‚·B + session-per-request-with-detached-objects 㨠+ session-per-conversation ã®ï¼’ã¤ã¯ã€ + 利点ã¨æ¬ ç‚¹ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + ã“ã‚Œã«ã¤ã„ã¦ã¯ã€ã“ã®ç« ã®å¾Œã®ã»ã†ã§ã€æ¥½è¦³çš„åŒæ™‚実行制御ã®æ–‡è„ˆã®ä¸­ã§è­°è«–ã—ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ðl‚¦‚é + オブジェクト識別å­ã‚’考ãˆã‚‹ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA‚Q‚‚̈قȂé Session ‚©‚ç - “¯‚¶‰i‘±ó‘Ô‚É“¯Žž‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B - ‚µ‚©‚µA‚Q‚Â‚Ì Session ƒCƒ“ƒXƒ^ƒ“ƒX‚ª - ‰i‘±«ƒNƒ‰ƒX‚Ì‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - ‚䂦‚ÉAŽ¯•ÊŽq‚É‚Í‚Q‚‚̈قȂéŠT”O‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B + アプリケーションã¯ã€ï¼’ã¤ã®ç•°ãªã‚‹ Session ã‹ã‚‰ + åŒã˜æ°¸ç¶šçŠ¶æ…‹ã«åŒæ™‚ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ + ã—ã‹ã—ã€ï¼’ã¤ã® Session インスタンス㌠+ 永続性クラスã®ï¼‘ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’共有ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + ゆãˆã«ã€è­˜åˆ¥å­ã«ã¯ï¼’ã¤ã®ç•°ãªã‚‹æ¦‚念ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ - ƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq + ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹è­˜åˆ¥å­ foo.getId().equals( bar.getId() ) @@ -301,7 +303,7 @@ - JVMŽ¯•ÊŽq + JVMè­˜åˆ¥å­ foo==bar @@ -311,105 +313,105 @@ - ŒÂX‚Ì Session ‚ɒljÁ‚³‚ꂽƒIƒuƒWƒFƒNƒg‚É‚Æ‚Á‚Ä - i‚·‚È‚í‚¿A‚P‚Â‚Ì Session ‚̃XƒR[ƒv‚Ì’†‚Å‚ÍjA‚Q‚‚̊T”O‚Í“¯‚¶‚Å‚·B - ƒf[ƒ^ƒx[ƒX“¯ˆê«‚ÆJVM“¯ˆê«‚ªˆê’v‚·‚邱‚Æ‚ðAHibernate‚ª•ÛØ‚µ‚Ü‚·B - ‚µ‚©‚µAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚Q‚‚̈قȂéƒZƒbƒVƒ‡ƒ“‚©‚ç - u“¯‚¶vi‰i‘±«Ž¯•ÊŽq‚ÌjƒrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚É“¯Žž‚ɃAƒNƒZƒX‚·‚éŒÀ‚èA - ‚Q‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍŽÀÛ‚ÉiJVMŽ¯•ÊŽq‚ªjuˆÙ‚È‚èv‚Ü‚·B - ŠyŠÏ“IƒAƒvƒ[ƒ`‚É‚æ‚Á‚ÄAiŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚Ìjƒtƒ‰ƒbƒVƒ…^ƒRƒ~ƒbƒgŽž‚É - ƒRƒ“ƒtƒŠƒNƒg‚ª‰ðŒˆ‚³‚ê‚Ü‚·B + 個々㮠Session ã«è¿½åŠ ã•ã‚ŒãŸã‚ªãƒ–ジェクトã«ã¨ã£ã¦ + (ã™ãªã‚ã¡ã€ï¼‘ã¤ã® Session ã®ã‚¹ã‚³ãƒ¼ãƒ—ã®ä¸­ã§ã¯ï¼‰ã€ï¼’ã¤ã®æ¦‚念ã¯åŒã˜ã§ã™ã€‚ + データベースåŒä¸€æ€§ã¨JVMåŒä¸€æ€§ãŒä¸€è‡´ã™ã‚‹ã“ã¨ã‚’ã€HibernateãŒä¿è¨¼ã—ã¾ã™ã€‚ + ã—ã‹ã—ã€ã‚¢ãƒ—リケーションãŒï¼’ã¤ã®ç•°ãªã‚‹ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‹ã‚‰ + 「åŒã˜ã€ï¼ˆæ°¸ç¶šæ€§è­˜åˆ¥å­ã®ï¼‰ãƒ“ジãƒã‚¹ã‚ªãƒ–ジェクトã«åŒæ™‚ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹é™ã‚Šã€ + ï¼’ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯å®Ÿéš›ã«ï¼ˆJVM識別å­ãŒï¼‰ã€Œç•°ãªã‚Šã€ã¾ã™ã€‚ + 楽観的アプローãƒã«ã‚ˆã£ã¦ã€ï¼ˆè‡ªå‹•ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã®ï¼‰ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ï¼ã‚³ãƒŸãƒƒãƒˆæ™‚ã« + コンフリクトãŒè§£æ±ºã•ã‚Œã¾ã™ã€‚ - ‚±‚̃Aƒvƒ[ƒ`‚Å‚ÍAHibernate‚ƃf[ƒ^ƒx[ƒX‚É“¯ŽžŽÀs‚ɂ‚¢‚Ä‚ÌS”z‚ªŽc‚è‚Ü‚·B - ˆê•û‚ÅAÅ‚‚̃XƒP[ƒ‰ƒrƒŠƒeƒB‚ª’ñ‹Ÿ‚³‚ê‚Ü‚·B - ‚È‚º‚È‚çA‚PƒXƒŒƒbƒh‚Ìì‹Æ’PˆÊ‚Ì’†‚ňêˆÓ«‚ª•ÛØ‚³‚ê‚ê‚ÎA - ‚‰¿‚ȃƒbƒN‚⓯Šú‰»‚ª•s—v‚ɂȂ邽‚ß‚Å‚·B - Session ‚²‚Æ‚É‚P‚‚̃XƒŒƒbƒh‚ð“\‚è•t‚¯‚éŒÀ‚èA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓rƒWƒlƒXƒIƒuƒWƒFƒNƒg‚ðsynchronize‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - Session “à‚Å‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓IƒuƒWƒFƒNƒg‚ð”äŠr‚·‚邽‚ß‚ÉA - == ‚ðˆÀ‘S‚ÉŽg—p‚Å‚«‚Ü‚·B + ã“ã®ã‚¢ãƒ—ローãƒã§ã¯ã€Hibernateã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«åŒæ™‚実行ã«ã¤ã„ã¦ã®å¿ƒé…ãŒæ®‹ã‚Šã¾ã™ã€‚ + 一方ã§ã€æœ€é«˜ã®ã‚¹ã‚±ãƒ¼ãƒ©ãƒ“リティãŒæä¾›ã•ã‚Œã¾ã™ã€‚ + ãªãœãªã‚‰ã€ï¼‘スレッドã®ä½œæ¥­å˜ä½ã®ä¸­ã§ä¸€æ„性ãŒä¿è¨¼ã•ã‚Œã‚Œã°ã€ + 高価ãªãƒ­ãƒƒã‚¯ã‚„åŒæœŸåŒ–ãŒä¸è¦ã«ãªã‚‹ãŸã‚ã§ã™ã€‚ + Session ã”ã¨ã«ï¼‘ã¤ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’貼り付ã‘ã‚‹é™ã‚Šã€ + アプリケーションã¯ãƒ“ジãƒã‚¹ã‚ªãƒ–ジェクトをsynchronizeã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + Session 内ã§ã¯ã€ã‚¢ãƒ—リケーションã¯ã‚ªãƒ–ジェクトを比較ã™ã‚‹ãŸã‚ã«ã€ + == を安全ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ - ‚¯‚ê‚Ç‚àASession ‚ÌŠO‚Å == - ‚ðŽg‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA—\Šú‚µ‚È‚¢Œ‹‰Ê‚É‘˜‹ö‚µ‚Ü‚·B - ‚±‚ê‚Í—\Šú‚µ‚È‚¢êŠ‚Å‹N‚±‚肦‚Ü‚·B - —Ⴆ‚ÎA‚Q‚‚̕ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚𓯂¶ Set ‚É - put‚µ‚½‚Æ‚«‚È‚Ç‚Å‚·B - —¼•û‚Æ‚à“¯‚¶ƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ðŽ‚¿‚Ü‚·i‚·‚È‚í‚¿A“¯‚¶s‚ð•\‚µ‚Ü‚·jB - ‚µ‚©‚µA•ª—£ó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚ÌJVMŽ¯•ÊŽq‚Í“–‘R•ÛØ‚³‚ê‚Ü‚¹‚ñB - ŠJ”­ŽÒ‚ÍA‰i‘±«ƒNƒ‰ƒX‚Ì equals() ‚Æ hashCode() - ƒƒ\ƒbƒh‚ðƒI[ƒo[ƒ‰ƒCƒh‚µAƒIƒuƒWƒFƒNƒg“™‰¿«‚ÌŠT”O‚ðŽÀ‘•‚·‚ׂ«‚Å‚·B - Œx‚ª‚P‚‚ ‚è‚Ü‚·B“™‰¿«‚ÌŽÀ‘•‚Ƀf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ðŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢B - ƒ†ƒj[ƒN‚Èi•’Ê‚Í•s•Ï‚Ìj‘®«‚Ì‘g‚݇‚킹‚Å‚ ‚éƒrƒWƒlƒXƒL[‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - ‚à‚µAˆêŽžƒIƒuƒWƒFƒNƒg‚ª‰i‘±‰»‚³‚ꂽê‡Aƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ª•Ï‚í‚è‚Ü‚·B - ˆêŽžƒIƒuƒWƒFƒNƒg‚ði’Ê핪—£ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‹¤‚Éj Set - ‚É•ÛŽ‚·‚éê‡AƒnƒbƒVƒ…ƒR[ƒh‚ª•Ï‚í‚é‚Æ‚¢‚¤‚±‚Æ‚ÍASet - ‚ÌŒ_–ñ‚ð”j‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ƒrƒWƒlƒXƒL[‚Ì‚½‚ß‚Ì‘®«‚ÍAƒf[ƒ^ƒx[ƒX‚ÌŽåƒL[‚قLjÀ’è‚·‚ׂ«‚Å‚Í‚È‚¢‚Å‚·B - ƒIƒuƒWƒFƒNƒg‚ª“¯‚¶ Set ‚Ì’†‚É‚¢‚éŠÔ‚¾‚¯AˆÀ’è‚ð•ÛØ‚·‚ׂ«‚Å‚·B - ‚±‚Ì–â‘è‚Ì‚æ‚è“O’ê“I‚È‹c˜_‚ÍAHibernate‚ÌWebƒTƒCƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½A‚±‚ê‚ÍHibernate‚Ì–â‘è‚Å‚Í‚È‚­A’P‚ÉJavaƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚â“™‰¿«‚ð - ‚ǂ̂悤‚ÉŽÀ‘•‚·‚ׂ«‚©‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + ã‘ã‚Œã©ã‚‚ã€Session ã®å¤–㧠== + を使ã†ã‚¢ãƒ—リケーションã¯ã€äºˆæœŸã—ãªã„çµæžœã«é­é‡ã—ã¾ã™ã€‚ + ã“ã‚Œã¯äºˆæœŸã—ãªã„場所ã§èµ·ã“ã‚Šãˆã¾ã™ã€‚ + 例ãˆã°ã€ï¼’ã¤ã®åˆ†é›¢ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’åŒã˜ Set ã« + putã—ãŸã¨ããªã©ã§ã™ã€‚ + 両方ã¨ã‚‚åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹è­˜åˆ¥å­ã‚’æŒã¡ã¾ã™ï¼ˆã™ãªã‚ã¡ã€åŒã˜è¡Œã‚’表ã—ã¾ã™ï¼‰ã€‚ + ã—ã‹ã—ã€åˆ†é›¢çŠ¶æ…‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®JVM識別å­ã¯å½“然ä¿è¨¼ã•ã‚Œã¾ã›ã‚“。 + 開発者ã¯ã€æ°¸ç¶šæ€§ã‚¯ãƒ©ã‚¹ã® equals() 㨠hashCode() + メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã€ã‚ªãƒ–ジェクト等価性ã®æ¦‚念を実装ã™ã¹ãã§ã™ã€‚ + 警告ãŒï¼‘ã¤ã‚ã‚Šã¾ã™ã€‚等価性ã®å®Ÿè£…ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹è­˜åˆ¥å­ã‚’使ã‚ãªã„ã§ãã ã•ã„。 + ユニークãªï¼ˆæ™®é€šã¯ä¸å¤‰ã®ï¼‰å±žæ€§ã®çµ„ã¿åˆã‚ã›ã§ã‚るビジãƒã‚¹ã‚­ãƒ¼ã‚’使ã£ã¦ãã ã•ã„。 + ã‚‚ã—ã€ä¸€æ™‚オブジェクトãŒæ°¸ç¶šåŒ–ã•ã‚ŒãŸå ´åˆã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹è­˜åˆ¥å­ãŒå¤‰ã‚ã‚Šã¾ã™ã€‚ + 一時オブジェクトを(通常分離インスタンスã¨å…±ã«ï¼‰ Set + ã«ä¿æŒã™ã‚‹å ´åˆã€ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰ãŒå¤‰ã‚ã‚‹ã¨ã„ã†ã“ã¨ã¯ã€Set + ã®å¥‘ç´„ã‚’ç ´ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + ビジãƒã‚¹ã‚­ãƒ¼ã®ãŸã‚ã®å±žæ€§ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸»ã‚­ãƒ¼ã»ã©å®‰å®šã™ã¹ãã§ã¯ãªã„ã§ã™ã€‚ + オブジェクトãŒåŒã˜ Set ã®ä¸­ã«ã„ã‚‹é–“ã ã‘ã€å®‰å®šã‚’ä¿è¨¼ã™ã¹ãã§ã™ã€‚ + ã“ã®å•é¡Œã®ã‚ˆã‚Šå¾¹åº•çš„ãªè­°è«–ã¯ã€Hibernateã®Webサイトをå‚ç…§ã—ã¦ãã ã•ã„。 + ã¾ãŸã€ã“ã‚Œã¯Hibernateã®å•é¡Œã§ã¯ãªãã€å˜ã«Javaオブジェクトã®è­˜åˆ¥å­ã‚„等価性を + ã©ã®ã‚ˆã†ã«å®Ÿè£…ã™ã¹ãã‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - ˆê”Ê“I‚È–â‘è + 一般的ãªå•é¡Œ - session-per-user-session ‚Æ - session-per-application ƒAƒ“ƒ`ƒpƒ^[ƒ“ - ‚ÍŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñi‚à‚¿‚ë‚ñA‚Ü‚ê‚É—áŠO‚ª‚ ‚è‚Ü‚·jB - ’ˆÓF‰º‹L‚Ì–â‘è‚Ì‚¢‚­‚‚©‚ÍA„§‚³‚ê‚éƒpƒ^[ƒ“‚Æ‚µ‚Ä‚àoŒ»‚µ‚Ü‚·B - ÝŒv‚ðŒˆ’è‚·‚é‘O‚ÉA— ‚̈Ӗ¡‚ð—‰ð‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B + session-per-user-session 㨠+ session-per-application アンãƒãƒ‘ターン + ã¯ä½¿ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“(もã¡ã‚ã‚“ã€ã¾ã‚Œã«ä¾‹å¤–ãŒã‚ã‚Šã¾ã™ï¼‰ã€‚ + 注æ„:下記ã®å•é¡Œã®ã„ãã¤ã‹ã¯ã€æŽ¨å¥¨ã•ã‚Œã‚‹ãƒ‘ターンã¨ã—ã¦ã‚‚出ç¾ã—ã¾ã™ã€‚ + 設計を決定ã™ã‚‹å‰ã«ã€è£ã®æ„味をç†è§£ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 - Session ‚̓XƒŒƒbƒhƒZ[ƒt‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - HTTPƒŠƒNƒGƒXƒgAƒZƒbƒVƒ‡ƒ“BeanASwingƒ[ƒJ[‚̂悤‚ÉA - “¯ŽžŽÀs‚ª‰Â”\‚È‚à‚Ì‚ª Session ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚é‚ÆA - ‹£‡ó‘Ô‚ðˆø‚«‹N‚±‚µ‚Ü‚·B - iŒã‚Å‹c˜_‚·‚éjHttpSession ‚Ì’†‚Å - Hibernate Session ‚ð•ÛŽ‚·‚éê‡A - HttpSession‚ւ̃AƒNƒZƒX‚𓯊ú‰»‚·‚邱‚Æ‚ðl—¶‚·‚ׂ«‚Å‚·B - ‚³‚à‚È‚¯‚ê‚ÎAƒ†[ƒU[‚ª\•ª‘‚­ƒŠƒ[ƒh‚ðƒNƒŠƒbƒN‚·‚é‚ÆA - “¯Žž‚É‘–‚é‚Q‚‚̃XƒŒƒbƒh‚Ì’†‚ÅA“¯‚¶ Session ‚ªŽg‚í‚ê‚Ü‚·B + Session ã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + HTTPリクエストã€ã‚»ãƒƒã‚·ãƒ§ãƒ³Beanã€Swingワーカーã®ã‚ˆã†ã«ã€ + åŒæ™‚実行ãŒå¯èƒ½ãªã‚‚ã®ãŒ Session インスタンスを共有ã™ã‚‹ã¨ã€ + 競åˆçŠ¶æ…‹ã‚’引ãèµ·ã“ã—ã¾ã™ã€‚ + (後ã§è­°è«–ã™ã‚‹ï¼‰HttpSession ã®ä¸­ã§ + Hibernate Session ã‚’ä¿æŒã™ã‚‹å ´åˆã€ + HttpSessionã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’åŒæœŸåŒ–ã™ã‚‹ã“ã¨ã‚’考慮ã™ã¹ãã§ã™ã€‚ + ã•ã‚‚ãªã‘ã‚Œã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå分早ãリロードをクリックã™ã‚‹ã¨ã€ + åŒæ™‚ã«èµ°ã‚‹ï¼’ã¤ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã®ä¸­ã§ã€åŒã˜ Session ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ - Hibernate‚ª—áŠO‚ð“Š‚°‚½ê‡‚ÍAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µA - ’¼‚¿‚É Session ‚ð•Â‚¶‚é‚ׂ«‚Å‚·iÚׂðŒã‚Å‹c˜_‚µ‚Ü‚·jB - Session ‚ªƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ä‚¢‚é‚Ì‚Å‚ ‚ê‚ÎA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð’âŽ~‚·‚ׂ«‚Å‚·B - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚Ä‚àAƒrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚Í - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µ‚½‚Æ‚«‚Ìó‘Ô‚É–ß‚è‚Ü‚¹‚ñB - ‚±‚ê‚ÍAƒf[ƒ^ƒx[ƒX‚Ìó‘ԂƃrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚Í“¯Šú‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B - ’Ê킱‚ê‚Í–â‘è‚É‚È‚è‚Ü‚¹‚ñB - ‚È‚º‚È‚çA—áŠO‚͉ñ•œ‚Å‚«‚È‚¢‚©‚ç‚Å‚·B - ‚Æ‚É‚©‚­ƒ[ƒ‹ƒoƒbƒN‚µ‚½Œã‚É‚â‚è’¼‚·‚ׂ«‚Å‚·B + HibernateãŒä¾‹å¤–を投ã’ãŸå ´åˆã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ロールãƒãƒƒã‚¯ã—〠+ ç›´ã¡ã« Session ã‚’é–‰ã˜ã‚‹ã¹ãã§ã™ï¼ˆè©³ç´°ã‚’後ã§è­°è«–ã—ã¾ã™ï¼‰ã€‚ + Session ãŒã‚¢ãƒ—リケーションã«çµã³ä»˜ã‘られã¦ã„ã‚‹ã®ã§ã‚ã‚Œã°ã€ + アプリケーションをåœæ­¢ã™ã¹ãã§ã™ã€‚ + データベーストランザクションをロールãƒãƒƒã‚¯ã—ã¦ã‚‚ã€ãƒ“ジãƒã‚¹ã‚ªãƒ–ジェクト㯠+ トランザクションを開始ã—ãŸã¨ãã®çŠ¶æ…‹ã«æˆ»ã‚Šã¾ã›ã‚“。 + ã“ã‚Œã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®çŠ¶æ…‹ã¨ãƒ“ジãƒã‚¹ã‚ªãƒ–ジェクトã¯åŒæœŸã—ã¦ã„ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ + 通常ã“ã‚Œã¯å•é¡Œã«ãªã‚Šã¾ã›ã‚“。 + ãªãœãªã‚‰ã€ä¾‹å¤–ã¯å›žå¾©ã§ããªã„ã‹ã‚‰ã§ã™ã€‚ + ã¨ã«ã‹ãロールãƒãƒƒã‚¯ã—ãŸå¾Œã«ã‚„ã‚Šç›´ã™ã¹ãã§ã™ã€‚ - Session ‚͉i‘±ipersistentjó‘Ô‚Ì‚·‚ׂẴIƒuƒWƒFƒNƒg‚ð - ƒLƒƒƒbƒVƒ…‚µ‚Ü‚·iHibernate‚ÍŠÄŽ‹‚µAƒ_[ƒeƒBó‘Ô‚©ƒ`ƒFƒbƒN‚µ‚Ü‚·jB - ‚±‚ê‚ÍA’·‚¢ŠÔƒZƒbƒVƒ‡ƒ“‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚©A - ”ñí‚É‘½‚­‚̃f[ƒ^‚ðƒ[ƒh‚µ‘±‚¯‚é‚©‚µ‚½ê‡‚ÍA - OutOfMemoryException‚ª”­¶‚·‚é‚Ü‚Å–³ŒÀ‚É‘å‚«‚­‚Ȃ邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B - ‰ðŒˆô‚Ì‚P‚‚ÍASession ƒLƒƒƒbƒVƒ…‚ðŠÇ—‚·‚邽‚ß‚ÉA - clear() ‚© evict() ‚ðŒÄ‚Ô‚±‚Æ‚Å‚·B - ‚µ‚©‚µA‘å‚«‚ȃf[ƒ^‚ðˆ—‚·‚é•K—v‚ª‚ ‚é‚È‚çA - ‚½‚Ô‚ñƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðl—¶‚·‚é‚ׂ«‚Å‚µ‚傤B - ‚¢‚­‚‚©‚̉ðŒˆô‚ÍA ‚ÅЉ‚ê‚Ä‚¢‚Ü‚·B - ƒ†[ƒU[ƒZƒbƒVƒ‡ƒ“‚ÌŠÔASession ‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚Æ‚¢‚¤‚±‚Æ‚ÍA - ƒf[ƒ^‚ªV‘N‚Å‚È‚­‚È‚éŠm—¦‚ª‚‚­‚Ȃ邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + Session ã¯æ°¸ç¶šï¼ˆpersistent)状態ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを + キャッシュã—ã¾ã™ï¼ˆHibernateã¯ç›£è¦–ã—ã€ãƒ€ãƒ¼ãƒ†ã‚£çŠ¶æ…‹ã‹ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ï¼‰ã€‚ + ã“ã‚Œã¯ã€é•·ã„間セッションを開ã„ãŸã¾ã¾ã«ã™ã‚‹ã‹ã€ + éžå¸¸ã«å¤šãã®ãƒ‡ãƒ¼ã‚¿ã‚’ロードã—続ã‘ã‚‹ã‹ã—ãŸå ´åˆã¯ã€ + OutOfMemoryExceptionãŒç™ºç”Ÿã™ã‚‹ã¾ã§ç„¡é™ã«å¤§ãããªã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ + 解決策ã®ï¼‘ã¤ã¯ã€Session キャッシュを管ç†ã™ã‚‹ãŸã‚ã«ã€ + clear() ã‹ evict() を呼ã¶ã“ã¨ã§ã™ã€‚ + ã—ã‹ã—ã€å¤§ããªãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãªã‚‰ã€ + ãŸã¶ã‚“ストアドプロシージャを考慮ã™ã‚‹ã¹ãã§ã—ょã†ã€‚ + ã„ãã¤ã‹ã®è§£æ±ºç­–ã¯ã€ ã§ç´¹ä»‹ã•ã‚Œã¦ã„ã¾ã™ã€‚ + ユーザーセッションã®é–“ã€Session ã‚’é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹ã¨ã„ã†ã“ã¨ã¯ã€ + データãŒæ–°é®®ã§ãªããªã‚‹ç¢ºçŽ‡ãŒé«˜ããªã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ @@ -419,90 +421,90 @@ - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE + データベーストランザクション境界 - ƒf[ƒ^ƒx[ƒXi‚à‚µ‚­‚̓VƒXƒeƒ€jƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‹«ŠE‚ÍAí‚É•K—v‚Å‚·B - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠO‚ÅAƒf[ƒ^ƒx[ƒX‚Æ‚Ì’ÊM‚Í‹N‚«‚Ü‚¹‚ñ - i‚±‚ê‚ÍŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚ÉŠµ‚ê‚Ä‚¢‚鑽‚­‚ÌŠJ”­ŽÒ‚𬗂³‚¹‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñjB - “Ç‚Ýž‚Þ‚¾‚¯‚Ì‘€ì‚É‚Å‚àA‚¢‚Â‚à–¾Šm‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B - •ª—£ƒŒƒxƒ‹‚ƃf[ƒ^ƒx[ƒX‚Ì”\—ÍŽŸ‘æ‚ÅA‚±‚ê‚Í•K—v‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA - í‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚𖾎¦“I‚ÉŽw’肵‚Ä‚àAƒ}ƒCƒiƒX–Ê‚Í‘S‚­‚ ‚è‚Ü‚¹‚ñB + データベース(もã—ãã¯ã‚·ã‚¹ãƒ†ãƒ ï¼‰ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å¢ƒç•Œã¯ã€å¸¸ã«å¿…è¦ã§ã™ã€‚ + データベーストランザクションã®å¤–ã§ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨ã®é€šä¿¡ã¯èµ·ãã¾ã›ã‚“ + (ã“ã‚Œã¯è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆãƒ¢ãƒ¼ãƒ‰ã«æ…£ã‚Œã¦ã„る多ãã®é–‹ç™ºè€…ã‚’æ··ä¹±ã•ã›ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)。 + 読ã¿è¾¼ã‚€ã ã‘ã®æ“作ã«ã§ã‚‚ã€ã„ã¤ã‚‚明確ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’使用ã—ã¦ãã ã•ã„。 + 分離レベルã¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®èƒ½åŠ›æ¬¡ç¬¬ã§ã€ã“ã‚Œã¯å¿…è¦ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€ + 常ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’明示的ã«æŒ‡å®šã—ã¦ã‚‚ã€ãƒžã‚¤ãƒŠã‚¹é¢ã¯å…¨ãã‚ã‚Šã¾ã›ã‚“。 - Šm‚©‚ÉA‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Í‘½”‚̬‚³‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚æ‚è - iƒf[ƒ^‚Ì“Ç‚Ýž‚Ý‚Å‚ ‚Á‚Ä‚àjƒpƒtƒH[ƒ}ƒ“ƒX‚ª‚·‚®‚ê‚Ä‚¢‚Ü‚·B + 確ã‹ã«ã€ï¼‘ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯å¤šæ•°ã®å°ã•ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚ˆã‚Š + (データã®èª­ã¿è¾¼ã¿ã§ã‚ã£ã¦ã‚‚)パフォーマンスãŒã™ãã‚Œã¦ã„ã¾ã™ã€‚ - J2EEŠÂ‹«‚ÉŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ó‘Ô - i‚·‚È‚í‚¿AƒXƒ^ƒ“ƒhƒAƒƒ“A’Pƒ‚ÈWeb‚âSwingƒAƒvƒŠƒP[ƒVƒ‡ƒ“j‚Å‚àA - ŠÇ—‚³‚ꂽó‘Ô‚Å‚àAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚Å‚«‚Ü‚·B - ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚Å‚ÍAHiberante‚ªƒf[ƒ^ƒx[ƒX‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ð’ñ‹Ÿ‚µ‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚ÍAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽè“®‚Åݒ肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Œ¾‚¢Š·‚¦‚é‚ÆAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽnAƒRƒ~ƒbƒgAƒ[ƒ‹ƒoƒbƒN‚ð - ŠJ”­ŽÒŽ©g‚ªÝ’è‚·‚é•K—v‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + J2EE環境ã«ç®¡ç†ã•ã‚Œã¦ã„ãªã„状態 + (ã™ãªã‚ã¡ã€ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ³ã€å˜ç´”ãªWebã‚„Swingアプリケーション)ã§ã‚‚〠+ 管ç†ã•ã‚ŒãŸçŠ¶æ…‹ã§ã‚‚ã€Hibernateアプリケーションを実行ã§ãã¾ã™ã€‚ + 管ç†ã•ã‚Œã¦ã„ãªã„環境ã§ã¯ã€HiberanteãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールをæä¾›ã—ã¾ã™ã€‚ + アプリケーション開発者ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’手動ã§è¨­å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 言ã„æ›ãˆã‚‹ã¨ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®é–‹å§‹ã€ã‚³ãƒŸãƒƒãƒˆã€ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ã‚’ + 開発者自身ãŒè¨­å®šã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - ’ÊíAŠÇ—‚³‚ꂽŠÂ‹«‚Å‚ÍAƒRƒ“ƒeƒiŠÇ—‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iCMTj‚ª’ñ‹Ÿ‚³‚ê‚Ü‚·B - —Ⴆ‚ÎAƒZƒbƒVƒ‡ƒ“Bean‚̃fƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Å錾“I‚É’è‹`‚µA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‘g‚Ý—§‚Ä‚Ü‚·B - ƒvƒƒOƒ‰ƒ€‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Í‚à‚¤•K—v‚ ‚è‚Ü‚¹‚ñB + 通常ã€ç®¡ç†ã•ã‚ŒãŸç’°å¢ƒã§ã¯ã€ã‚³ãƒ³ãƒ†ãƒŠç®¡ç†ã«ã‚ˆã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆCMT)ãŒæä¾›ã•ã‚Œã¾ã™ã€‚ + 例ãˆã°ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³Beanã®ãƒ‡ãƒ—ロイメントディスクリプタã§å®£è¨€çš„ã«å®šç¾©ã—〠+ トランザクションを組ã¿ç«‹ã¦ã¾ã™ã€‚ + プログラムã«ã‚ˆã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã¯ã‚‚ã†å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 - ‚µ‚©‚µ‚È‚ª‚çAŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒŠƒ\[ƒXEƒ[ƒJƒ‹‚Ȋ‹«‚Æ - JTA‚Ɉˑ¶‚µ‚½ƒVƒXƒeƒ€iCMT‚Å‚Í‚È‚­BMTj‚Ì—¼•û‚ÉA - ‰i‘±‰»‘w‚ðƒ|[ƒ^ƒuƒ‹‚ɕۂ‚̂ÍA‚µ‚΂µ‚Ζ]‚Ü‚µ‚¢‚±‚Æ‚Å‚·B + ã—ã‹ã—ãªãŒã‚‰ã€ç®¡ç†ã•ã‚Œã¦ã„ãªã„リソース・ローカルãªç’°å¢ƒã¨ + JTAã«ä¾å­˜ã—ãŸã‚·ã‚¹ãƒ†ãƒ ï¼ˆCMTã§ã¯ãªãBMT)ã®ä¸¡æ–¹ã«ã€ + 永続化層をãƒãƒ¼ã‚¿ãƒ–ルã«ä¿ã¤ã®ã¯ã€ã—ã°ã—ã°æœ›ã¾ã—ã„ã“ã¨ã§ã™ã€‚ - ƒfƒvƒƒCŠÂ‹«‚̃lƒCƒeƒBƒu‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒVƒXƒeƒ€‚ðŒÄ‚Ño‚· - Transaction ‚Æ‚¢‚¤ƒ‰ƒbƒp[API‚ðHibernate‚ª’ñ‹Ÿ‚µ‚Ü‚·B - ‚±‚ÌAPI‚ðŽg‚¤‚©‚Í”CˆÓ‚Å‚·‚ªACMT‚̃ZƒbƒVƒ‡ƒ“Bean‚ðŽg‚í‚È‚¢‚Ì‚Å‚ ‚ê‚ÎAŽg‚¤‚±‚Æ‚ð‹­‚­„§‚µ‚Ü‚·B + デプロイ環境ã®ãƒã‚¤ãƒ†ã‚£ãƒ–ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚·ã‚¹ãƒ†ãƒ ã‚’呼ã³å‡ºã™ + Transaction ã¨ã„ã†ãƒ©ãƒƒãƒ‘ーAPIã‚’HibernateãŒæä¾›ã—ã¾ã™ã€‚ + ã“ã®APIを使ã†ã‹ã¯ä»»æ„ã§ã™ãŒã€CMTã®ã‚»ãƒƒã‚·ãƒ§ãƒ³Beanを使ã‚ãªã„ã®ã§ã‚ã‚Œã°ã€ä½¿ã†ã“ã¨ã‚’å¼·ã推奨ã—ã¾ã™ã€‚ - ’ÊíASession I—¹‚ÍA‚S‚‚̈قȂéƒtƒF[ƒY‚ðŠÜ‚Ý‚Ü‚·B + 通常ã€Session 終了ã¯ã€ï¼”ã¤ã®ç•°ãªã‚‹ãƒ•ã‚§ãƒ¼ã‚ºã‚’å«ã¿ã¾ã™ã€‚ - ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ… + セッションã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃Rƒ~ƒbƒg + トランザクションã®ã‚³ãƒŸãƒƒãƒˆ - ƒZƒbƒVƒ‡ƒ“‚̃Nƒ[ƒY + セッションã®ã‚¯ãƒ­ãƒ¼ã‚º - —áŠO‚̃nƒ“ƒhƒŠƒ“ƒO + 例外ã®ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚° - ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ…‚ɂ‚¢‚Ä‚ÍA‘O‚Ì‚Ù‚¤‚Å‚·‚Å‚É‹c˜_‚µ‚Ü‚µ‚½B - ŠÇ—‚³‚ꂽŠÂ‹«‚ÆŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚Ì—¼•û‚ɂ‚¢‚ÄA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ—áŠOƒnƒ“ƒhƒŠƒ“ƒO‚ð‚à‚Á‚ÆÚ‚µ‚­Œ©‚Ä‚¢‚«‚Ü‚µ‚傤B + セッションã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã«ã¤ã„ã¦ã¯ã€å‰ã®ã»ã†ã§ã™ã§ã«è­°è«–ã—ã¾ã—ãŸã€‚ + 管ç†ã•ã‚ŒãŸç’°å¢ƒã¨ç®¡ç†ã•ã‚Œã¦ã„ãªã„環境ã®ä¸¡æ–¹ã«ã¤ã„ã¦ã€ + トランザクション境界ã¨ä¾‹å¤–ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’ã‚‚ã£ã¨è©³ã—ã見ã¦ã„ãã¾ã—ょã†ã€‚ - ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹« + 管ç†ã•ã‚Œã¦ã„ãªã„環境 - Hibernate‰i‘±‰»‘w‚ðŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚ÅŽÀ‘•‚·‚éꇂÍA + Hibernate永続化層を管ç†ã•ã‚Œã¦ã„ãªã„環境ã§å®Ÿè£…ã™ã‚‹å ´åˆã¯ã€ - ’Êí’Pƒ‚ȃRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹i‚·‚È‚í‚¿DataSource‚Å‚Í‚È‚¢j‚É‚æ‚Á‚ÄA - ƒf[ƒ^ƒx[ƒXƒRƒlƒNƒVƒ‡ƒ“‚ð§Œä‚µ‚Ü‚·B - Hibernate‚Í‚»‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚©‚ç•K—v‚ȃRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚µ‚Ü‚·B + 通常å˜ç´”ãªã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ール(ã™ãªã‚ã¡DataSourceã§ã¯ãªã„)ã«ã‚ˆã£ã¦ã€ + データベースコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’制御ã—ã¾ã™ã€‚ + Hibernateã¯ãã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールã‹ã‚‰å¿…è¦ãªã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å–å¾—ã—ã¾ã™ã€‚ - ƒZƒbƒVƒ‡ƒ“^ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“§Œä‚̃CƒfƒBƒIƒ€‚ÍŽŸ‚̂悤‚É‚È‚è‚Ü‚·B + セッションï¼ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³åˆ¶å¾¡ã®ã‚¤ãƒ‡ã‚£ã‚ªãƒ ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ - –¾Ž¦“I‚É Session ‚Ì flush() ‚ðŒÄ‚Ño‚·‚ׂ«‚Å‚Í‚È‚­A - commit() ‚ðŒÄ‚Ño‚·‚±‚Æ‚É‚æ‚èAŽ©“®“I‚É“¯Šú‰»ˆ—‚ªŽÀs‚³‚ê‚Ü‚· - iƒZƒbƒVƒ‡ƒ“‚Ì FlushMode ‚Ɉˑ¶‚µ‚Ä‚¢‚éjB + 明示的㫠Session ã® flush() を呼ã³å‡ºã™ã¹ãã§ã¯ãªã〠+ commit() を呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã‚Šã€è‡ªå‹•çš„ã«åŒæœŸåŒ–処ç†ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ + (セッション㮠FlushMode ã«ä¾å­˜ã—ã¦ã„る)。 - close() ‚ðŒÄ‚Ño‚·‚±‚Æ‚É‚æ‚èAƒZƒbƒVƒ‡ƒ“‚ÌI‚í‚è‚𖾊m‚É‚µ‚Ü‚·B - close() ‚ªˆÃ–Ù“I‚És‚¤Žå‚È‚±‚Æ‚ÍA - ƒZƒbƒVƒ‡ƒ“‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠJ•ú‚·‚邱‚Æ‚Å‚·B + close() を呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã‚Šã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®çµ‚ã‚りを明確ã«ã—ã¾ã™ã€‚ + close() ãŒæš—黙的ã«è¡Œã†ä¸»ãªã“ã¨ã¯ã€ + セッションãŒJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’開放ã™ã‚‹ã“ã¨ã§ã™ã€‚ - ã‹L‚ÌJavaƒR[ƒh‚̓|[ƒ^ƒuƒ‹‚Å‚ ‚èAŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚ÆJTAŠÂ‹«‚Ì—¼•û‚ÅŽÀs‚Å‚«‚Ü‚·B + 上記ã®Javaコードã¯ãƒãƒ¼ã‚¿ãƒ–ルã§ã‚ã‚Šã€ç®¡ç†ã•ã‚Œã¦ã„ãªã„環境ã¨JTA環境ã®ä¸¡æ–¹ã§å®Ÿè¡Œã§ãã¾ã™ã€‚ - ‚æ‚è“K‰ž«‚Ì‚ ‚é‰ðŒˆô‚ÍAHibernate‚É—\‚ß‘g‚Ýž‚Ü‚ê‚Ä‚¢‚é - ucurrent sessionvƒRƒ“ƒeƒLƒXƒgŠÇ—‚Å‚·B - Œ¾—t‚Åà–¾‚·‚é‚æ‚艺‹L‚ðŒ©‚½‚Ù‚¤‚ª‘¬‚¢‚Å‚µ‚傤B + よりé©å¿œæ€§ã®ã‚る解決策ã¯ã€Hibernateã«äºˆã‚組ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ + 「current sessionã€ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç®¡ç†ã§ã™ã€‚ + 言葉ã§èª¬æ˜Žã™ã‚‹ã‚ˆã‚Šä¸‹è¨˜ã‚’見ãŸã»ã†ãŒé€Ÿã„ã§ã—ょã†ã€‚ - ³‹K‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚Å‚ÍA‚±‚̂悤‚ȃR[ƒh‚ÌØ‚ê’[‚ðŒˆ‚µ‚ÄŒ©‚È‚¢‚Å‚µ‚傤B - ’v–½“I‚ÈiƒVƒXƒeƒ€j—áŠO‚ÍAí‚ÉuÅãˆÊv‚ŃLƒƒƒbƒ`‚·‚ׂ«‚Å‚·B - Œ¾‚¢Š·‚¦‚ê‚ÎAi‰i‘±‰»‘w‚ÅjHibernateŒÄ‚Ño‚µ‚ðŽÀs‚·‚éƒR[ƒh‚ÆA - RuntimeException ‚ð§Œä‚·‚é - i’Êí‚̓NƒŠ[ƒ“ƒAƒbƒv‚ÆI—¹‚Ì‚Ýs‚¤‚±‚Æ‚ª‚Å‚«‚éjƒR[ƒh‚ÍA•ÊX‚Ì‘w‚Ì’†‚É‚ ‚è‚Ü‚·B - Hibernate‚É‚æ‚éƒJƒŒƒ“ƒgƒRƒ“ƒeƒLƒXƒgŠÇ—‚ÍA‚±‚ÌÝŒv‚ð‚©‚È‚è’Pƒ‚É‚µ‚Ü‚·B - •K—v‚È‚Ì‚ÍASessionFactory ‚ɃAƒNƒZƒX‚·‚邱‚Æ‚¾‚¯‚Å‚·B - —áŠOˆ—‚ÍA‚±‚ÌÍ‚ÌŒã‚Ì‚Ù‚¤‚Å‹c˜_‚µ‚Ü‚·B + æ­£è¦ã®ã‚¢ãƒ—リケーションã®ä¸­ã§ã¯ã€ã“ã®ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰ã®åˆ‡ã‚Œç«¯ã‚’決ã—ã¦è¦‹ãªã„ã§ã—ょã†ã€‚ + 致命的ãªï¼ˆã‚·ã‚¹ãƒ†ãƒ ï¼‰ä¾‹å¤–ã¯ã€å¸¸ã«ã€Œæœ€ä¸Šä½ã€ã§ã‚­ãƒ£ãƒƒãƒã™ã¹ãã§ã™ã€‚ + 言ã„æ›ãˆã‚Œã°ã€ï¼ˆæ°¸ç¶šåŒ–層ã§ï¼‰Hibernate呼ã³å‡ºã—を実行ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¨ã€ + RuntimeException を制御ã™ã‚‹ + (通常ã¯ã‚¯ãƒªãƒ¼ãƒ³ã‚¢ãƒƒãƒ—ã¨çµ‚了ã®ã¿è¡Œã†ã“ã¨ãŒã§ãる)コードã¯ã€åˆ¥ã€…ã®å±¤ã®ä¸­ã«ã‚ã‚Šã¾ã™ã€‚ + Hibernateã«ã‚ˆã‚‹ã‚«ãƒ¬ãƒ³ãƒˆã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç®¡ç†ã¯ã€ã“ã®è¨­è¨ˆã‚’ã‹ãªã‚Šå˜ç´”ã«ã—ã¾ã™ã€‚ + å¿…è¦ãªã®ã¯ã€SessionFactory ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ã ã‘ã§ã™ã€‚ + 例外処ç†ã¯ã€ã“ã®ç« ã®å¾Œã®ã»ã†ã§è­°è«–ã—ã¾ã™ã€‚ - ’ˆÓFiƒfƒtƒHƒ‹ƒg‚Å‚·‚ªj + 注æ„:(デフォルトã§ã™ãŒï¼‰ org.hibernate.transaction.JDBCTransactionFactory - ‚ð‘I‘ð‚·‚é‚ׂ«‚Å‚·B - ‘æ2‚Ì—p—á‚Æ‚µ‚Ä‚ÍA - hibernate.current_session_context_class ‚ð - "thread" ‚Æ‚·‚é‚Æ‚æ‚¢‚Å‚µ‚傤B + ã‚’é¸æŠžã™ã‚‹ã¹ãã§ã™ã€‚ + 第2ã®ç”¨ä¾‹ã¨ã—ã¦ã¯ã€ + hibernate.current_session_context_class ã‚’ + "thread" ã¨ã™ã‚‹ã¨ã‚ˆã„ã§ã—ょã†ã€‚ - JTA‚ðŽg—p‚·‚é + JTAを使用ã™ã‚‹ - ‰i‘±‰»‘w‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[i—Ⴆ‚ÎAEJBƒZƒbƒVƒ‡ƒ“Bean‚Ì”wŒãj‚ÅŽÀs‚·‚éê‡A - Hibernate‚©‚çŽæ“¾‚·‚é‚·‚ׂẴf[ƒ^ƒ\[ƒXƒRƒlƒNƒVƒ‡ƒ“‚ÍA - Ž©“®“I‚ɃOƒ[ƒoƒ‹JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̈ꕔ‚É‚È‚è‚Ü‚·B + 永続化層をアプリケーションサーãƒãƒ¼ï¼ˆä¾‹ãˆã°ã€EJBセッションBeanã®èƒŒå¾Œï¼‰ã§å®Ÿè¡Œã™ã‚‹å ´åˆã€ + Hibernateã‹ã‚‰å–å¾—ã™ã‚‹ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚½ãƒ¼ã‚¹ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã¯ã€ + 自動的ã«ã‚°ãƒ­ãƒ¼ãƒãƒ«JTAトランザクションã®ä¸€éƒ¨ã«ãªã‚Šã¾ã™ã€‚ - EJB‚ðŽg‚킸‚ÉAƒXƒ^ƒ“ƒhƒAƒƒ“‚ÌJTAŽÀ‘•‚𓱓ü‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - JTA“‡‚Ì‚½‚ß‚ÉAHibernate‚Í‚Q‚‚Ìí—ª‚ð’ñ‹Ÿ‚µ‚Ü‚·B + EJBを使ã‚ãšã«ã€ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ³ã®JTA実装を導入ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + JTAçµ±åˆã®ãŸã‚ã«ã€Hibernateã¯ï¼’ã¤ã®æˆ¦ç•¥ã‚’æä¾›ã—ã¾ã™ã€‚ - BeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iBMTj‚ðŽg‚¢ATransaction API‚ðŽg‚¤ê‡A - Hibernate‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ÉBMTƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽn‚ÆI‚í‚è‚ð‚°‚Ü‚·B - ‚·‚È‚í‚¿Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—‚̃R[ƒh‚ÍAŠÇ—‚³‚ê‚È‚¢ŠÂ‹«‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B + Bean管ç†ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆBMT)を使ã„ã€Transaction APIを使ã†å ´åˆã€ + Hibernateã¯ã‚¢ãƒ—リケーションサーãƒãƒ¼ã«BMTトランザクションã®é–‹å§‹ã¨çµ‚ã‚ã‚Šã‚’å‘Šã’ã¾ã™ã€‚ + ã™ãªã‚ã¡ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ç®¡ç†ã®ã‚³ãƒ¼ãƒ‰ã¯ã€ç®¡ç†ã•ã‚Œãªã„環境ã¨åŒã˜ã«ãªã‚Šã¾ã™ã€‚ - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚Ä Session ‚ðŽg‚¢‚½‚¢ê‡A - ŠÈ’P‚ɃRƒ“ƒeƒLƒXƒg‚ð“`”d‚·‚é‹@”\‚Å‚ ‚é getCurrentSession() ‚ª‚ ‚é‚Ì‚ÅA - JTA‚Ì UserTransaction API‚ð’¼ÚŽg—p‚·‚ׂ«‚Å‚µ‚傤B + トランザクション境界ã¨ã—㦠Session を使ã„ãŸã„å ´åˆã€ + ç°¡å˜ã«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’ä¼æ’­ã™ã‚‹æ©Ÿèƒ½ã§ã‚ã‚‹ getCurrentSession() ãŒã‚ã‚‹ã®ã§ã€ + JTAã® UserTransaction APIを直接使用ã™ã¹ãã§ã—ょã†ã€‚ - CMT‚Å‚ÍAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðƒZƒbƒVƒ‡ƒ“Bean‚̃fƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Å’è‹`‚µA - ƒvƒƒOƒ‰ƒ€‚Å‚Ís‚¢‚Ü‚¹‚ñB - ‚䂦‚ÉAƒR[ƒh‚ÍŽŸ‚̂悤‚É­‚È‚­‚È‚è‚Ü‚·B + CMTã§ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã‚’セッションBeanã®ãƒ‡ãƒ—ロイメントディスクリプタã§å®šç¾©ã—〠+ プログラムã§ã¯è¡Œã„ã¾ã›ã‚“。 + ゆãˆã«ã€ã‚³ãƒ¼ãƒ‰ã¯æ¬¡ã®ã‚ˆã†ã«å°‘ãªããªã‚Šã¾ã™ã€‚ - CMT/EJB‚Ì’†‚Å‚ÍAí‚Ƀ[ƒ‹ƒoƒbƒN‚ªŽ©“®“I‚ÉŽÀŽ{‚³‚ê‚Ü‚·B - ‚È‚º‚È‚çAƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚̃ƒ\ƒbƒh‚É‚æ‚è“Š‚°‚ç‚ꂽ§Œä‚³‚ê‚Ä‚¢‚È‚¢ - RuntimeException ‚ÍAƒOƒ[ƒoƒ‹ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð - ƒ[ƒ‹ƒoƒbƒN‚·‚é‚悤‚ɃRƒ“ƒeƒi‚É“`‚¦‚邽‚ß‚Å‚·B - ‚±‚ê‚ÍABMT‚à‚µ‚­‚ÍCMT‚Æ‚¢‚Á‚µ‚å‚ÉHibernate Transaction - API‚ðŽg‚¤•K—v‚Í­‚µ‚à‚È‚¢‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B + CMT/EJBã®ä¸­ã§ã¯ã€å¸¸ã«ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒè‡ªå‹•çš„ã«å®Ÿæ–½ã•ã‚Œã¾ã™ã€‚ + ãªãœãªã‚‰ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ“ーンã®ãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚ˆã‚ŠæŠ•ã’られãŸåˆ¶å¾¡ã•ã‚Œã¦ã„ãªã„ + RuntimeException ã¯ã€ã‚°ãƒ­ãƒ¼ãƒãƒ«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ + ロールãƒãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«ã‚³ãƒ³ãƒ†ãƒŠã«ä¼ãˆã‚‹ãŸã‚ã§ã™ã€‚ + ã“ã‚Œã¯ã€BMTã‚‚ã—ãã¯CMTã¨ã„ã£ã—ょã«Hibernate Transaction + APIを使ã†å¿…è¦ã¯å°‘ã—ã‚‚ãªã„ã¨ã„ã†æ„味ã§ã™ã€‚ - Hibernate‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒtƒ@ƒNƒgƒŠ‚ðÝ’è‚·‚éÛ‚ÉA - JTA‚ð’¼ÚŽg‚¤iBMT‚Ìjê‡‚Í org.hibernate.transaction.JTATransactionFactory ‚ðA - CMTƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚Ì’†‚Å‚Í org.hibernate.transaction.CMTTransactionFactory ‚ð - ‘I‘ð‚·‚×‚«‚¾‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚¯ãƒˆãƒªã‚’設定ã™ã‚‹éš›ã«ã€ + JTAを直接使ã†ï¼ˆBMTã®ï¼‰å ´åˆã¯ org.hibernate.transaction.JTATransactionFactory を〠+ CMTセッションビーンã®ä¸­ã§ã¯ org.hibernate.transaction.CMTTransactionFactory ã‚’ + é¸æŠžã™ã¹ãã ã¨ã„ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 hibernate.transaction.manager_lookup_class - ‚ðƒZƒbƒg‚·‚邱‚Æ‚àŽv‚¢o‚µ‚Ä‚­‚¾‚³‚¢B - ‚È‚¨Ahibernate.current_session_context_class ‚ÍA - ƒZƒbƒg‚µ‚È‚¢‚©iŒã•ûŒÝŠ·jA"jta" ‚ðƒZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B + をセットã™ã‚‹ã“ã¨ã‚‚æ€ã„出ã—ã¦ãã ã•ã„。 + ãªãŠã€hibernate.current_session_context_class ã¯ã€ + セットã—ãªã„ã‹ï¼ˆå¾Œæ–¹äº’æ›ï¼‰ã€"jta" をセットã—ã¦ãã ã•ã„。 - getCurrentSession() ƒIƒyƒŒ[ƒVƒ‡ƒ“‚ÍAJTAŠÂ‹«‚Å‚Í‚P‚‚̌‡“_‚ðŽ‚¿‚Ü‚·B + getCurrentSession() オペレーションã¯ã€JTA環境ã§ã¯ï¼‘ã¤ã®æ¬ ç‚¹ã‚’æŒã¡ã¾ã™ã€‚ - ƒfƒtƒHƒ‹ƒg‚ÅŽg‚í‚ê‚é after_statement ƒRƒlƒNƒVƒ‡ƒ“ƒŠƒŠ[ƒXƒ‚[ƒh‚ðŽg—p‚·‚éã‚ÅA - Œx‚ª‚P‚‚ ‚è‚Ü‚·B + デフォルトã§ä½¿ã‚れる after_statement コãƒã‚¯ã‚·ãƒ§ãƒ³ãƒªãƒªãƒ¼ã‚¹ãƒ¢ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹ä¸Šã§ã€ + 警告ãŒï¼‘ã¤ã‚ã‚Šã¾ã™ã€‚ - JTAŽd—l‚Ì‹ð‚©‚È§–ñ‚Ì‚½‚ß‚ÉA - scroll() ‚Ü‚½‚Í iterate() ‚ª•Ô‚µ‚½A - •Â‚¶‚ç‚ê‚Ä‚¢‚È‚¢ ScrollableResults ‚Ü‚½‚Í Iterator - ƒCƒ“ƒXƒ^ƒ“ƒX‚ðHibernate‚ªŽ©“®“I‚ɃNƒŠ[ƒ“ƒAƒbƒv‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB + JTA仕様ã®æ„šã‹ãªåˆ¶ç´„ã®ãŸã‚ã«ã€ + scroll() ã¾ãŸã¯ iterate() ãŒè¿”ã—ãŸã€ + é–‰ã˜ã‚‰ã‚Œã¦ã„ãªã„ ScrollableResults ã¾ãŸã¯ Iterator + インスタンスをHibernateãŒè‡ªå‹•çš„ã«ã‚¯ãƒªãƒ¼ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - finally ƒuƒƒbƒN‚Ì’†‚ÅA - ScrollableResults.close() ‚Ü‚½‚Í - Hibernate.close(Iterator) ‚𖾎¦“I‚ɌĂÑo‚µ‚ÄA - — ‚Éö‚ñ‚¾ƒf[ƒ^ƒx[ƒXƒJ[ƒ\ƒ‹‚ð‰ð•ú ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + finally ブロックã®ä¸­ã§ã€ + ScrollableResults.close() ã¾ãŸã¯ + Hibernate.close(Iterator) を明示的ã«å‘¼ã³å‡ºã—ã¦ã€ + è£ã«æ½œã‚“ã ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚«ãƒ¼ã‚½ãƒ«ã‚’解放 ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - i‚à‚¿‚ë‚ñA‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍAJTA‚©CMTƒR[ƒh‚Å scroll() - ‚â iterate() ‚ÌŽg—p‚ð”ð‚¯‚é‚Ì‚Í—eˆÕ‚Å‚·Bj + (もã¡ã‚ã‚“ã€å¤šãã®ã‚¢ãƒ—リケーションã§ã¯ã€JTAã‹CMTコード㧠scroll() + ã‚„ iterate() ã®ä½¿ç”¨ã‚’é¿ã‘ã‚‹ã®ã¯å®¹æ˜“ã§ã™ã€‚) - —áŠOƒnƒ“ƒhƒŠƒ“ƒO + 例外ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚° - Session ‚ª—áŠOiSQLException‚ðŠÜ‚Þj‚ð“Š‚°‚½ê‡A - ’¼‚¿‚ÉAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µASession.close() - ‚ðŒÄ‚ÑASession ƒCƒ“ƒXƒ^ƒ“ƒX‚ð”jŠü‚·‚ׂ«‚Å‚·B - Session ‚Ì‚¢‚­‚‚©‚̃ƒ\ƒbƒh‚ÍA - ƒZƒbƒVƒ‡ƒ“‚Ìó‘Ô‚ð –µ‚‚µ‚½‚Ü‚Ü ‚É‚µ‚Ü‚·B - Hibernate‚ª“Š‚°‚½—áŠO‚ðA‰ñ•œ‚Å‚«‚é‚à‚Ì‚Æ‚µ‚Ĉµ‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB - finally ƒuƒƒbƒN‚Ì’†‚Å close() ‚ðŒÄ‚ñ‚ÅA - Session ‚ðŠmŽÀ‚ɕ‚¶‚Ä‚­‚¾‚³‚¢B + Session ãŒä¾‹å¤–(SQLExceptionã‚’å«ã‚€ï¼‰ã‚’投ã’ãŸå ´åˆã€ + ç›´ã¡ã«ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ロールãƒãƒƒã‚¯ã—ã€Session.close() + を呼ã³ã€Session インスタンスを破棄ã™ã¹ãã§ã™ã€‚ + Session ã®ã„ãã¤ã‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ + セッションã®çŠ¶æ…‹ã‚’ 矛盾ã—ãŸã¾ã¾ ã«ã—ã¾ã™ã€‚ + HibernateãŒæŠ•ã’ãŸä¾‹å¤–ã‚’ã€å›žå¾©ã§ãã‚‹ã‚‚ã®ã¨ã—ã¦æ‰±ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + finally ブロックã®ä¸­ã§ close() を呼んã§ã€ + Session を確実ã«é–‰ã˜ã¦ãã ã•ã„。 - HibernateException ‚ÍAHibernate‰i‘±‰»‘w‚Ì’†‚Å”­¶‚·‚鑽‚­‚̃Gƒ‰[‚ð - ƒ‰ƒbƒv‚·‚éAŒŸ¸‚³‚ê‚È‚¢—áŠO‚Å‚·iHibernate‚̌¢ƒo[ƒWƒ‡ƒ“‚͈Ⴂ‚Ü‚µ‚½jB - Ž„‚½‚¿‚̈ӌ©‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚ɉñ•œ•s‰Â”\‚È—áŠO‚ð - ‰º‘w‚ŃLƒƒƒbƒ`‚·‚邱‚Æ‚ð‹­—v‚·‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ‘½‚­‚̃VƒXƒeƒ€‚Å‚ÍAŒŸ¸‚³‚ê‚È‚¢—áŠO‚Æ’v–½“I‚È—áŠO‚ÍA - ƒR[ƒ‹ƒXƒ^ƒbƒN‚Ìʼn‚̃tƒŒ[ƒ€‚Ì‚P‚Âi—Ⴆ‚ÎAÅãˆÊ‚Ì‘w‚Åj‚Ńnƒ“ƒhƒŠƒ“ƒO‚µA - ƒGƒ‰[ƒƒbƒZ[ƒW‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ†[ƒU[‚É•\Ž¦‚µ‚Ü‚· - i‚à‚µ‚­‚ÍA‘¼‚Ì“K؂Ȉ—‚ðŽÀŽ{‚µ‚Ü‚·jB - Hibernate‚ÍAHibernateException ˆÈŠO‚ÌŒŸ¸‚³‚ê‚È‚¢—áŠO‚à - “Š‚°‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚ç‚à‚Ü‚½A‰ñ•œ•s‰Â”\‚Å‚ ‚èA“K؂Ȉ—‚ðŽÀŽ{‚·‚ׂ«‚Å‚·B + HibernateException ã¯ã€Hibernate永続化層ã®ä¸­ã§ç™ºç”Ÿã™ã‚‹å¤šãã®ã‚¨ãƒ©ãƒ¼ã‚’ + ラップã™ã‚‹ã€æ¤œæŸ»ã•ã‚Œãªã„例外ã§ã™ï¼ˆHibernateã®å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯é•ã„ã¾ã—ãŸï¼‰ã€‚ + ç§ãŸã¡ã®æ„見ã¯ã€ã‚¢ãƒ—リケーション開発者ã«å›žå¾©ä¸å¯èƒ½ãªä¾‹å¤–ã‚’ + 下層ã§ã‚­ãƒ£ãƒƒãƒã™ã‚‹ã“ã¨ã‚’å¼·è¦ã™ã¹ãã§ã¯ãªã„ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + 多ãã®ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã€æ¤œæŸ»ã•ã‚Œãªã„例外ã¨è‡´å‘½çš„ãªä¾‹å¤–ã¯ã€ + コールスタックã®æœ€åˆã®ãƒ•ãƒ¬ãƒ¼ãƒ ã®ï¼‘ã¤ï¼ˆä¾‹ãˆã°ã€æœ€ä¸Šä½ã®å±¤ã§ï¼‰ã§ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã—〠+ エラーメッセージをアプリケーションユーザーã«è¡¨ç¤ºã—ã¾ã™ + (もã—ãã¯ã€ä»–ã®é©åˆ‡ãªå‡¦ç†ã‚’実施ã—ã¾ã™ï¼‰ã€‚ + Hibernateã¯ã€HibernateException 以外ã®æ¤œæŸ»ã•ã‚Œãªã„例外も + 投ã’ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“れらもã¾ãŸã€å›žå¾©ä¸å¯èƒ½ã§ã‚ã‚Šã€é©åˆ‡ãªå‡¦ç†ã‚’実施ã™ã¹ãã§ã™ã€‚ - Hibernate‚ÍAƒf[ƒ^ƒx[ƒX‚Ƃ̑Θb’†‚É“Š‚°‚ç‚ꂽ SQLException ‚ð - JDBCException ‚щƒbƒv‚µ‚Ü‚·B - ŽÀ‚ÍA—áŠO‚ð‚æ‚èˆÓ–¡‚Ì‚ ‚é JDBCException ‚̃TƒuƒNƒ‰ƒX‚É - •ÏŠ·‚µ‚悤‚ÆŽŽ‚Ý‚Ü‚·B - Œ³‚Ì SQLException ‚ÍAJDBCException.getCause() - ‚É‚æ‚è‚¢‚Â‚Å‚à“¾‚ç‚ê‚Ü‚·B - Hibernate‚ÍASessionFactory ‚ɒljÁ‚³‚ê‚Ä‚¢‚é - SQLExceptionConverter ‚ðŽg‚¢ASQLException ‚ð - “K“–‚È JDBCException ƒTƒuƒNƒ‰ƒX‚É•ÏŠ·‚µ‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚ÍASQLExceptionConverter ‚Íݒ肳‚ê‚Ä‚¢‚éSQL•ûŒ¾‚É‚æ‚è - ’è‹`‚³‚ê‚Ü‚·B - ˆê•û‚ÅA“ÆŽ©‚ÌŽÀ‘•‚É·‚µ‘Ö‚¦‚邱‚Æ‚à‚Å‚«‚Ü‚· - iÚׂÍASQLExceptionConverterFactory ƒNƒ‰ƒX‚ÌJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢jB - •W€“I‚È JDBCException ‚̃Tƒuƒ^ƒCƒv‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B + Hibernateã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨ã®å¯¾è©±ä¸­ã«æŠ•ã’られ㟠SQLException ã‚’ + JDBCException ã§ãƒ©ãƒƒãƒ—ã—ã¾ã™ã€‚ + 実ã¯ã€ä¾‹å¤–をよりæ„味ã®ã‚ã‚‹ JDBCException ã®ã‚µãƒ–クラス㫠+ 変æ›ã—よã†ã¨è©¦ã¿ã¾ã™ã€‚ + 元㮠SQLException ã¯ã€JDBCException.getCause() + ã«ã‚ˆã‚Šã„ã¤ã§ã‚‚得られã¾ã™ã€‚ + Hibernateã¯ã€SessionFactory ã«è¿½åŠ ã•ã‚Œã¦ã„ã‚‹ + SQLExceptionConverter を使ã„ã€SQLException ã‚’ + é©å½“㪠JDBCException サブクラスã«å¤‰æ›ã—ã¾ã™ã€‚ + デフォルトã§ã¯ã€SQLExceptionConverter ã¯è¨­å®šã•ã‚Œã¦ã„ã‚‹SQL方言ã«ã‚ˆã‚Š + 定義ã•ã‚Œã¾ã™ã€‚ + 一方ã§ã€ç‹¬è‡ªã®å®Ÿè£…ã«å·®ã—替ãˆã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ + (詳細ã¯ã€SQLExceptionConverterFactory クラスã®Javadocã‚’å‚ç…§ã—ã¦ãã ã•ã„)。 + 標準的㪠JDBCException ã®ã‚µãƒ–タイプを下記ã«ç¤ºã—ã¾ã™ã€‚ JDBCConnectionException - - Šî‘b‚Æ‚È‚éJDBC’ÊM‚̃Gƒ‰[‚ð•\‚µ‚Ü‚·B + 基礎ã¨ãªã‚‹JDBC通信ã®ã‚¨ãƒ©ãƒ¼ã‚’表ã—ã¾ã™ã€‚ SQLGrammarException - - ”­s‚·‚éSQL‚Ì•¶–@‚à‚µ‚­‚Í\•¶‚Ì–â‘è‚ð•\‚µ‚Ü‚·B + 発行ã™ã‚‹SQLã®æ–‡æ³•ã‚‚ã—ãã¯æ§‹æ–‡ã®å•é¡Œã‚’表ã—ã¾ã™ã€‚ ConstraintViolationException - - ‰½‚ç‚©‚ÌŒ`Ž®‚ÌŠ®‘S«§–ñˆá”½‚ð•\‚µ‚Ü‚·B + 何らã‹ã®å½¢å¼ã®å®Œå…¨æ€§åˆ¶ç´„é•åを表ã—ã¾ã™ã€‚ LockAcquisitionException - - —v‹‚³‚ꂽ‘€ì‚ðŽÀŽ{‚·‚é‚Ì‚É•K—v‚ȃƒbƒNƒŒƒxƒ‹‚𓾂éۂ̃Gƒ‰[‚ð•\‚µ‚Ü‚·B + è¦æ±‚ã•ã‚ŒãŸæ“作を実施ã™ã‚‹ã®ã«å¿…è¦ãªãƒ­ãƒƒã‚¯ãƒ¬ãƒ™ãƒ«ã‚’å¾—ã‚‹éš›ã®ã‚¨ãƒ©ãƒ¼ã‚’表ã—ã¾ã™ã€‚ GenericJDBCException - - ‘¼‚̃JƒeƒSƒŠ‚Ɉê’v‚µ‚È‚©‚Á‚½ˆê”Ê“I‚È—áŠO‚Å‚·B + ä»–ã®ã‚«ãƒ†ã‚´ãƒªã«ä¸€è‡´ã—ãªã‹ã£ãŸä¸€èˆ¬çš„ãªä¾‹å¤–ã§ã™ã€‚ @@ -775,22 +777,22 @@ catch (RuntimeException e) { - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃^ƒCƒ€ƒAƒEƒg + トランザクションã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ - EJB‚̂悤‚ÈŠÇ—‚³‚ꂽŠÂ‹«‚ª’ñ‹Ÿ‚·‚é‚«‚í‚ß‚Äd—v‚È“Á’¥‚Ì‚P‚‚ÍA - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃^ƒCƒ€ƒAƒEƒg‚Å‚·B - ‚±‚ê‚ÍŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒR[ƒh‚É‚Í’ñ‹Ÿ‚Å‚«‚Ü‚¹‚ñB - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚ÍA•s•is‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª - ƒ†[ƒU[‚ɃŒƒXƒ|ƒ“ƒX‚ð•Ô‚³‚È‚¢‚Ü‚ÜA–³ŠúŒÀ‚ɃŠƒ\[ƒX‚ðŽg‚¢‘±‚¯‚È‚¢ - ‚±‚Æ‚ð•ÛႵ‚Ü‚·B - ŠÇ—‚³‚ꂽŠÂ‹«iJTAj‚ÌŠO‚Å‚ÍAHibernate‚Í‚±‚Ì‹@”\‚ðƒtƒ‹‚É’ñ‹Ÿ‚Å‚«‚Ü‚¹‚ñB - ‚µ‚©‚µ‚È‚ª‚çAHibernate‚ÍŽŸ‚̂悤‚ȃf[ƒ^ƒAƒNƒZƒX‘€ì‚̧Œä‚­‚ç‚¢‚Í‚Å‚«‚Ü‚·B - ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚̃fƒbƒhƒƒbƒN‚â‘å‚«‚ȃŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚·ƒNƒGƒŠ‚ð - ’è‹`‚³‚ꂽƒ^ƒCƒ€ƒAƒEƒg‚É‚æ‚Á‚ÄŠmŽÀ‚ɧŒÀ‚µ‚Ü‚·B - ŠÇ—‚³‚ꂽŠÂ‹«‚Å‚ÍAHibernate‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚ðJTA‚ɈÏ÷‚µ‚Ü‚·B - ‚±‚Ì‹@”\‚ÍAHibernate‚Ì Transaction ƒIƒuƒWƒFƒNƒg‚É - ‚æ‚Á‚Ä’ŠÛ‰»‚³‚ê‚Ä‚¢‚Ü‚·B + EJBã®ã‚ˆã†ãªç®¡ç†ã•ã‚ŒãŸç’°å¢ƒãŒæä¾›ã™ã‚‹ãã‚ã‚ã¦é‡è¦ãªç‰¹å¾´ã®ï¼‘ã¤ã¯ã€ + トランザクションã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã§ã™ã€‚ + ã“ã‚Œã¯ç®¡ç†ã•ã‚Œã¦ã„ãªã„コードã«ã¯æä¾›ã§ãã¾ã›ã‚“。 + トランザクションタイムアウトã¯ã€ä¸å“è¡Œãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒ + ユーザーã«ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’è¿”ã•ãªã„ã¾ã¾ã€ç„¡æœŸé™ã«ãƒªã‚½ãƒ¼ã‚¹ã‚’使ã„続ã‘ãªã„ + ã“ã¨ã‚’ä¿éšœã—ã¾ã™ã€‚ + 管ç†ã•ã‚ŒãŸç’°å¢ƒï¼ˆJTA)ã®å¤–ã§ã¯ã€Hibernateã¯ã“ã®æ©Ÿèƒ½ã‚’フルã«æä¾›ã§ãã¾ã›ã‚“。 + ã—ã‹ã—ãªãŒã‚‰ã€Hibernateã¯æ¬¡ã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ã‚¢ã‚¯ã‚»ã‚¹æ“作ã®åˆ¶å¾¡ãらã„ã¯ã§ãã¾ã™ã€‚ + データベースレベルã®ãƒ‡ãƒƒãƒ‰ãƒ­ãƒƒã‚¯ã‚„大ããªãƒªã‚¶ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’è¿”ã™ã‚¯ã‚¨ãƒªã‚’ + 定義ã•ã‚ŒãŸã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã«ã‚ˆã£ã¦ç¢ºå®Ÿã«åˆ¶é™ã—ã¾ã™ã€‚ + 管ç†ã•ã‚ŒãŸç’°å¢ƒã§ã¯ã€Hibernateã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚’JTAã«å§”è­²ã—ã¾ã™ã€‚ + ã“ã®æ©Ÿèƒ½ã¯ã€Hibernateã® Transaction オブジェクト㫠+ よã£ã¦æŠ½è±¡åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚ - CMTƒr[ƒ“‚Ì’†‚Å‚Í setTimeout() ‚ð - ŒÄ‚Ño‚¹‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚Í錾“I‚É’è‹`‚³‚ê‚é‚ׂ«‚Å‚·B + CMTビーンã®ä¸­ã§ã¯ setTimeout() ã‚’ + 呼ã³å‡ºã›ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + トランザクションタイムアウトã¯å®£è¨€çš„ã«å®šç¾©ã•ã‚Œã‚‹ã¹ãã§ã™ã€‚ @@ -824,32 +826,32 @@ finally { - ŠyŠÏ“I“¯ŽžŽÀs§Œä + 楽観的åŒæ™‚実行制御 - ‚‚¢•À—ñ«‚Æ‚‚¢ƒXƒP[ƒ‰ƒrƒŠƒeƒB‚Ì—¼•û‚ðŽÀŒ»‚·‚éƒAƒvƒ[ƒ`‚ÍA - ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚Á‚½ŠyŠÏ“I“¯ŽžŽÀs§Œä‚Ì‚Ý‚Å‚·B - XV‚ÌÕ“Ë‚ðŒ©‚Â‚¯‚邽‚ß‚Éi‚¨‚æ‚ÑAXV‚ªŽ¸‚í‚ê‚é‚Ì‚ð–h‚®‚½‚ß‚ÉjA - ƒo[ƒWƒ‡ƒ“”Ô†‚à‚µ‚­‚̓^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðŽg‚Á‚ÄAƒo[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B - Hibernate‚ÍAŠyŠÏ“I“¯ŽžŽÀs‚ðs‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒR[ƒh‚ð‘‚­‚½‚ß‚Ì - ƒAƒvƒ[ƒ`‚ð‚R‚Â’ñ‹Ÿ‚µ‚Ü‚·B - Ž„‚½‚¿‚ªŒ©‚¹‚郆[ƒXƒP[ƒX‚ÍA’·‚¢‘Θb‚ðŽ‚¿‚Ü‚·‚ªA - ƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚Í‚Ü‚¾‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚ÅXV‚ðŽ¸‚¤‚±‚Æ‚ð–h‚® - —˜“_‚àŽ‚Á‚Ä‚¢‚Ü‚·B + 高ã„並列性ã¨é«˜ã„スケーラビリティã®ä¸¡æ–¹ã‚’実ç¾ã™ã‚‹ã‚¢ãƒ—ローãƒã¯ã€ + ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚’使ã£ãŸæ¥½è¦³çš„åŒæ™‚実行制御ã®ã¿ã§ã™ã€‚ + æ›´æ–°ã®è¡çªã‚’見ã¤ã‘ã‚‹ãŸã‚ã«ï¼ˆãŠã‚ˆã³ã€æ›´æ–°ãŒå¤±ã‚れるã®ã‚’防ããŸã‚ã«ï¼‰ã€ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚‚ã—ãã¯ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—を使ã£ã¦ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ + Hibernateã¯ã€æ¥½è¦³çš„åŒæ™‚実行を行ã†ã‚¢ãƒ—リケーションコードを書ããŸã‚ã® + アプローãƒã‚’3ã¤æä¾›ã—ã¾ã™ã€‚ + ç§ãŸã¡ãŒè¦‹ã›ã‚‹ãƒ¦ãƒ¼ã‚¹ã‚±ãƒ¼ã‚¹ã¯ã€é•·ã„対話をæŒã¡ã¾ã™ãŒã€ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã¯ã¾ã ï¼‘ã¤ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ä¸­ã§æ›´æ–°ã‚’失ã†ã“ã¨ã‚’防ã + 利点もæŒã£ã¦ã„ã¾ã™ã€‚ - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN + アプリケーションã«ã‚ˆã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ - Hibernate‚É‚Ù‚Æ‚ñ‚Ç•‚¯‚Ä‚à‚ç‚킸‚ÉŽÀ‘•‚·‚éƒP[ƒX‚Å‚·B - ƒf[ƒ^ƒx[ƒX‚Æ‚Ì‚â‚èŽæ‚è‚ÍA‚»‚ꂼ‚êV‚µ‚¢ Session ‚Ì’†‚Å‹N‚±‚è‚Ü‚·B - ŠJ”­ŽÒ‚ÍA‚·‚ׂẲi‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‘€ì‚·‚é‘O‚ÉA - ƒf[ƒ^ƒx[ƒX‚©‚çÄ“Ç‚Ýž‚Ý‚·‚éÓ–±‚ª‚ ‚è‚Ü‚·B - ‚±‚̃Aƒvƒ[ƒ`‚Å‚ÍA‘Θbƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì•ª—£‚ðŽç‚邽‚ß‚ÉA - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“Ž©g‚ªƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðs‚¤•K—v‚ª‚ ‚è‚Ü‚·B - ‚±‚̃Aƒvƒ[ƒ`‚ÍAƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚Ì’†‚Å‚ÍAÅ‚à”ñŒø—¦‚Å‚·B - ƒGƒ“ƒeƒBƒeƒBEJB‚ÆÅ‚àŽ—‚Ä‚¢‚éƒAƒvƒ[ƒ`‚Å‚·B + Hibernateã«ã»ã¨ã‚“ã©åŠ©ã‘ã¦ã‚‚らã‚ãšã«å®Ÿè£…ã™ã‚‹ã‚±ãƒ¼ã‚¹ã§ã™ã€‚ + データベースã¨ã®ã‚„ã‚Šå–ã‚Šã¯ã€ãã‚Œãžã‚Œæ–°ã—ã„ Session ã®ä¸­ã§èµ·ã“ã‚Šã¾ã™ã€‚ + 開発者ã¯ã€ã™ã¹ã¦ã®æ°¸ç¶šæ€§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ“作ã™ã‚‹å‰ã«ã€ + データベースã‹ã‚‰å†èª­ã¿è¾¼ã¿ã™ã‚‹è²¬å‹™ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã®ã‚¢ãƒ—ローãƒã§ã¯ã€å¯¾è©±ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®åˆ†é›¢ã‚’守るãŸã‚ã«ã€ + アプリケーション自身ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã‚’è¡Œã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã®ã‚¢ãƒ—ローãƒã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¢ã‚¯ã‚»ã‚¹ã®ä¸­ã§ã¯ã€æœ€ã‚‚éžåŠ¹çŽ‡ã§ã™ã€‚ + エンティティEJBã¨æœ€ã‚‚ä¼¼ã¦ã„るアプローãƒã§ã™ã€‚ - <version> ‚ðŽg‚Á‚ÄAversion - ƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - Hibernate‚ÍAƒGƒ“ƒeƒBƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚éê‡Aƒtƒ‰ƒbƒVƒ…‚µA - ‚»‚ÌŠÔ‚É version ƒvƒƒpƒeƒB‚ðŽ©“®“I‚ɃCƒ“ƒNƒŠƒƒ“ƒg‚µ‚Ü‚·B + <version> を使ã£ã¦ã€version + プロパティをマッピングã—ã¾ã™ã€‚ + Hibernateã¯ã€ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã‚‹å ´åˆã€ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã—〠+ ãã®é–“ã« version プロパティを自動的ã«ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã—ã¾ã™ã€‚ - ‚à‚¿‚ë‚ñAƒf[ƒ^‚Ì•À—ñ«‚ª’á‚¢ŠÂ‹«‚ʼn^—p‚µ‚Ä‚¨‚èAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ª•s—v‚È‚çA - ‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¢Aƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðƒXƒLƒbƒv‚·‚邾‚¯‚Å‚·B - ‚»‚ÌꇂÍA’·‚¢‘Θb‚É‚ÍA - uÅŒã‚ɃRƒ~ƒbƒg‚µ‚½‚à‚Ì‚ªŸ‚Âv ‚ªƒfƒtƒHƒ‹ƒg‚Ìí—ª‚Å‚µ‚傤B - ‚±‚̃Aƒvƒ[ƒ`‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃†[ƒU[‚𬗂³‚¹‚é‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚ð - S‚É—¯‚ß‚Ä’u‚¢‚Ä‚­‚¾‚³‚¢B‚»‚ê‚ÍAƒGƒ‰[ƒƒbƒZ[ƒW‚â‹£‡‚µ‚½•ÏX‚ðƒ}[ƒW‚·‚é‹@‰ï‚ª - ‚È‚¢‚Ü‚ÜAXV‚ðŽ¸‚¤ŒoŒ±‚ð‚·‚é‚½‚ß‚Å‚·B + ã‚‚ã¡ã‚ã‚“ã€ãƒ‡ãƒ¼ã‚¿ã®ä¸¦åˆ—性ãŒä½Žã„環境ã§é‹ç”¨ã—ã¦ãŠã‚Šã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ãŒä¸è¦ãªã‚‰ã€ + ã“ã®ã‚¢ãƒ—ローãƒã‚’使ã„ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã‚’スキップã™ã‚‹ã ã‘ã§ã™ã€‚ + ãã®å ´åˆã¯ã€é•·ã„対話ã«ã¯ã€ + 「最後ã«ã‚³ãƒŸãƒƒãƒˆã—ãŸã‚‚ã®ãŒå‹ã¤ã€ ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æˆ¦ç•¥ã§ã—ょã†ã€‚ + ã“ã®ã‚¢ãƒ—ローãƒã¯ã€ã‚¢ãƒ—リケーションã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’æ··ä¹±ã•ã›ã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã‚’ + 心ã«ç•™ã‚ã¦ç½®ã„ã¦ãã ã•ã„。ãã‚Œã¯ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚„競åˆã—ãŸå¤‰æ›´ã‚’マージã™ã‚‹æ©Ÿä¼šãŒ + ãªã„ã¾ã¾ã€æ›´æ–°ã‚’失ã†çµŒé¨“ã‚’ã™ã‚‹ãŸã‚ã§ã™ã€‚ - Šm‚©‚ÉAƒ}ƒjƒ…ƒAƒ‹‚É‚æ‚éƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ÍA±×‚È‹VŽ®‚¾‚¯‚ÅŽÀs‚Å‚«‚Ü‚·‚ªA - ‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚ÄŽÀ—p“I‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ‚µ‚΂µ‚ÎA‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚Å‚È‚­A - C³‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÌŠ®‘S‚ȃOƒ‰ƒt‚ðƒ`ƒFƒbƒN‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Hibernate‚ÍAÝŒvƒpƒ‰ƒ_ƒCƒ€‚Æ‚µ‚ÄAŠg’£ Session ‚© - •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ðŽ©“®“I‚Ƀo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚µ‚Ü‚·B + 確ã‹ã«ã€ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã«ã‚ˆã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã¯ã€äº›ç´°ãªå„€å¼ã ã‘ã§å®Ÿè¡Œã§ãã¾ã™ãŒã€ + 多ãã®ã‚¢ãƒ—リケーションã«ã¨ã£ã¦å®Ÿç”¨çš„ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ã—ã°ã—ã°ã€ï¼‘ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã ã‘ã§ãªã〠+ 修正ã•ã‚ŒãŸã‚ªãƒ–ジェクトã®å®Œå…¨ãªã‚°ãƒ©ãƒ•ã‚’ãƒã‚§ãƒƒã‚¯ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Hibernateã¯ã€è¨­è¨ˆãƒ‘ラダイムã¨ã—ã¦ã€æ‹¡å¼µ Session ã‹ + 分離ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’自動的ã«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ - Šg’£ƒZƒbƒVƒ‡ƒ“‚ÆŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO + 拡張セッションã¨è‡ªå‹•ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚° - ‚P‚Â‚Ì Session ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‚»‚̉i‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚ÍA - session-per-conversation ‚Æ‚µ‚Ä’m‚ç‚ê‚éA - ‘Θb‘S‘Ì‚ÅŽg‚í‚ê‚Ü‚·B - Hibernate‚̓tƒ‰ƒbƒVƒ…‚·‚éÛ‚ÉAƒCƒ“ƒXƒ^ƒ“ƒX‚̃o[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B - “¯Žž‚ÉC³‚³‚ꂽ‚±‚Æ‚ðŒŸo‚·‚é‚ÆA—áŠO‚ð“Š‚°‚Ü‚·B - ‚±‚Ì—áŠO‚ðƒLƒƒƒbƒ`‚µ‚Ĉµ‚¤‚Ì‚ÍAŠJ”­ŽÒ‚ÌÓ”C‚Å‚· - iˆê”Ê“I‚È‘I‘ðŽˆ‚ÍA•ÏX‚ðƒ}[ƒW‚·‚é‚©ŒÃ‚­‚È‚¢ƒf[ƒ^‚ŃrƒWƒlƒX‘Θb‚ð - ăXƒ^[ƒg‚·‚é‹@‰ï‚ðƒ†[ƒU[‚É’ñ‹Ÿ‚·‚邱‚Æ‚Å‚·jB + 1ã¤ã® Session インスタンスã¨ãã®æ°¸ç¶šæ€§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ã€ + session-per-conversation ã¨ã—ã¦çŸ¥ã‚‰ã‚Œã‚‹ã€ + 対話全体ã§ä½¿ã‚ã‚Œã¾ã™ã€‚ + Hibernateã¯ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹éš›ã«ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ + åŒæ™‚ã«ä¿®æ­£ã•ã‚ŒãŸã“ã¨ã‚’検出ã™ã‚‹ã¨ã€ä¾‹å¤–を投ã’ã¾ã™ã€‚ + ã“ã®ä¾‹å¤–をキャッãƒã—ã¦æ‰±ã†ã®ã¯ã€é–‹ç™ºè€…ã®è²¬ä»»ã§ã™ + (一般的ãªé¸æŠžè‚¢ã¯ã€å¤‰æ›´ã‚’マージã™ã‚‹ã‹å¤ããªã„データã§ãƒ“ジãƒã‚¹å¯¾è©±ã‚’ + å†ã‚¹ã‚¿ãƒ¼ãƒˆã™ã‚‹æ©Ÿä¼šã‚’ユーザーã«æä¾›ã™ã‚‹ã“ã¨ã§ã™ï¼‰ã€‚ - ƒ†[ƒU[‚̑Θb‚ð‘Ò‚Á‚Ä‚¢‚é‚Æ‚«‚ÍA - Session ‚ðŠî‘b‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚©‚çØ‚è—£‚µ‚Ü‚·B - ‚±‚̃Aƒvƒ[ƒ`‚ÍAƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚Ì’†‚Å‚ÍAÅ‚àŒø—¦“I‚Å‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚╪—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ðĒljÁ‚·‚邱‚Æ - ‚ÉŠÖS‚ðŽ‚•K—v‚Í‚ ‚è‚Ü‚¹‚ñB‚Ü‚½A‚ ‚ç‚ä‚éƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚Å - ƒCƒ“ƒXƒ^ƒ“ƒX‚ðÄ“Ç‚Ýž‚Ý‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + ユーザーã®å¯¾è©±ã‚’å¾…ã£ã¦ã„ã‚‹ã¨ãã¯ã€ + Session を基礎ã¨ãªã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰åˆ‡ã‚Šé›¢ã—ã¾ã™ã€‚ + ã“ã®ã‚¢ãƒ—ローãƒã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¢ã‚¯ã‚»ã‚¹ã®ä¸­ã§ã¯ã€æœ€ã‚‚効率的ã§ã™ã€‚ + アプリケーションã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã‚„分離ã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†è¿½åŠ ã™ã‚‹ã“㨠+ ã«é–¢å¿ƒã‚’æŒã¤å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。ã¾ãŸã€ã‚らゆるデータベーストランザクションã®ä¸­ã§ + インスタンスをå†èª­ã¿è¾¼ã¿ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 - foo ƒIƒuƒWƒFƒNƒg‚ÍAŽ©•ª‚ðƒ[ƒh‚µ‚½ Session - ‚ð‚Ü‚¾’m‚Á‚Ä‚¢‚Ü‚·B - ŒÃ‚¢ƒZƒbƒVƒ‡ƒ“‚Ìã‚ÅV‚µ‚¢ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚·‚邱‚Æ‚ÅA - V‚µ‚¢ƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚µA‚»‚̃ZƒbƒVƒ‡ƒ“‚ªÄŠJ‚³‚ê‚Ü‚·B - ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒRƒ~ƒbƒg‚·‚邱‚Æ‚ÅA - ƒZƒbƒVƒ‡ƒ“‚©‚çJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðØ’f‚µAƒRƒlƒNƒVƒ‡ƒ“‚ðƒv[ƒ‹‚É•Ô‚µ‚Ü‚·B - ÄÚ‘±‚µ‚½ŒãAXV‚µ‚Ä‚¢‚È‚¢ƒf[ƒ^‚̃o[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ð‹­§‚·‚邽‚ß‚ÉA - ‘¼‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚æ‚èXV‚³‚ê‚Ä‚¢‚é‚©‚à‚µ‚ê‚È‚¢ƒIƒuƒWƒFƒNƒg‚ÉŠÖ‚µ‚ÄA - LockMode.READ ‚ð‚‚¯‚Ä Session.lock() - ‚ðŒÄ‚Ño‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B - XV‚µ‚Ä ‚¢‚é ƒf[ƒ^‚ðƒƒbƒN‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + foo オブジェクトã¯ã€è‡ªåˆ†ã‚’ロードã—㟠Session + ã‚’ã¾ã çŸ¥ã£ã¦ã„ã¾ã™ã€‚ + å¤ã„セッションã®ä¸Šã§æ–°ã—ã„データベーストランザクションを開始ã™ã‚‹ã“ã¨ã§ã€ + æ–°ã—ã„コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å–å¾—ã—ã€ãã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒå†é–‹ã•ã‚Œã¾ã™ã€‚ + データベーストランザクションをコミットã™ã‚‹ã“ã¨ã§ã€ + セッションã‹ã‚‰JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’切断ã—ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’プールã«è¿”ã—ã¾ã™ã€‚ + å†æŽ¥ç¶šã—ãŸå¾Œã€æ›´æ–°ã—ã¦ã„ãªã„データã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã‚’強制ã™ã‚‹ãŸã‚ã«ã€ + ä»–ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ˆã‚Šæ›´æ–°ã•ã‚Œã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œãªã„オブジェクトã«é–¢ã—ã¦ã€ + LockMode.READ ã‚’ã¤ã‘㦠Session.lock() + を呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ + æ›´æ–°ã—㦠ã„ã‚‹ データをロックã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 - ’ÊíAŠg’£ Session ‚É FlushMode.MANUAL - ‚ðƒZƒbƒg‚µ‚Ü‚·B - ÅŒã‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽüŠú‚Å‚Ì‚ÝA - ‘Θb‚Ì’†‚Å•ÏX‚³‚ꂽ‚·‚ׂĂðŽÀۂɉi‘±‰»‚³‚¹‚邽‚ß‚Å‚·B - ‚䂦‚ÉAÅŒã‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚Ý flush() - ƒIƒyƒŒ[ƒVƒ‡ƒ“‚ðŠÜ‚Ý‚Ü‚·B‚»‚µ‚ÄA‘Θb‚ðI‚í‚点‚邽‚ß‚ÉA - ƒZƒbƒVƒ‡ƒ“‚à close() ‚µ‚Ü‚·B + 通常ã€æ‹¡å¼µ Session ã« FlushMode.MANUAL + をセットã—ã¾ã™ã€‚ + 最後ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å‘¨æœŸã§ã®ã¿ã€ + 対話ã®ä¸­ã§å¤‰æ›´ã•ã‚ŒãŸã™ã¹ã¦ã‚’実際ã«æ°¸ç¶šåŒ–ã•ã›ã‚‹ãŸã‚ã§ã™ã€‚ + ゆãˆã«ã€æœ€å¾Œã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ã¿ flush() + オペレーションをå«ã¿ã¾ã™ã€‚ãã—ã¦ã€å¯¾è©±ã‚’終ã‚らã›ã‚‹ãŸã‚ã«ã€ + セッションも close() ã—ã¾ã™ã€‚ - ƒ†[ƒU[‚ªl—¶’†‚ÉAŠi”[‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚­‚ç‚¢ Session - ‚ª‘å‚«‚¢‚Ì‚Å‚ ‚ê‚ÎA‚±‚̃pƒ^[ƒ“‚Í–â‘肪‚ ‚è‚Ü‚·B - —Ⴆ‚ÎAHttpSession ‚͉”\‚ÈŒÀ‚謂³‚­•Û‚‚ׂ«‚Å‚·B - Session ‚Íi‹­§“I‚Éj‚PŽŸƒLƒƒƒbƒVƒ…‚Å‚à‚ ‚èA - ƒ[ƒh‚µ‚½ƒIƒuƒWƒFƒNƒg‚ð‚·‚×‚Ä•ÛŽ‚µ‚Ü‚·B - ‚¨‚»‚ç‚­AƒŠƒNƒGƒXƒg^ƒŒƒXƒ|ƒ“ƒX‚̃TƒCƒNƒ‹‚ª”‰ñ‚Å‚ ‚ê‚ÎA‚±‚Ìí—ª‚ªŽg‚¦‚Ü‚·B + ユーザーãŒè€ƒæ…®ä¸­ã«ã€æ ¼ç´ã™ã‚‹ã“ã¨ãŒã§ããªã„ãらㄠSession + ãŒå¤§ãã„ã®ã§ã‚ã‚Œã°ã€ã“ã®ãƒ‘ターンã¯å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚ + 例ãˆã°ã€HttpSession ã¯å¯èƒ½ãªé™ã‚Šå°ã•ãä¿ã¤ã¹ãã§ã™ã€‚ + Session ã¯ï¼ˆå¼·åˆ¶çš„ã«ï¼‰ï¼‘次キャッシュã§ã‚‚ã‚り〠+ ロードã—ãŸã‚ªãƒ–ジェクトをã™ã¹ã¦ä¿æŒã—ã¾ã™ã€‚ + ãŠãらãã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆï¼ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®ã‚µã‚¤ã‚¯ãƒ«ãŒæ•°å›žã§ã‚ã‚Œã°ã€ã“ã®æˆ¦ç•¥ãŒä½¿ãˆã¾ã™ã€‚ - ‚P‚‚̑Θb‚Ì‚½‚ß‚¾‚¯‚É Session ‚ðŽg‚¤‚ׂ«‚Å‚·B - ‚È‚º‚È‚çA‚·‚®‚ÉV‘N‚Å‚È‚¢ƒf[ƒ^‚ðŽ‚‚½‚ß‚Å‚·B + 1ã¤ã®å¯¾è©±ã®ãŸã‚ã ã‘ã« Session を使ã†ã¹ãã§ã™ã€‚ + ãªãœãªã‚‰ã€ã™ãã«æ–°é®®ã§ãªã„データをæŒã¤ãŸã‚ã§ã™ã€‚ - iHibernate‚̈ȑO‚̃o[ƒWƒ‡ƒ“‚ÍA–¾Ž¦“I‚È Session ‚Ì - Ø’f‚ÆÄÚ‘±‚ª•K—v‚¾‚Á‚½‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚ç‚̃ƒ\ƒbƒh‚Í”ñ„§‚É‚È‚è‚Ü‚µ‚½B - ‚È‚º‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽn‚ÆI—¹‚Í“¯‚¶Œø‰Ê‚ª‚ ‚邽‚ß‚Å‚·Bj + (Hibernateã®ä»¥å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€æ˜Žç¤ºçš„㪠Session ã® + 切断ã¨å†æŽ¥ç¶šãŒå¿…è¦ã ã£ãŸã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯éžæŽ¨å¥¨ã«ãªã‚Šã¾ã—ãŸã€‚ + ãªãœãªã‚‰ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®é–‹å§‹ã¨çµ‚了ã¯åŒã˜åŠ¹æžœãŒã‚ã‚‹ãŸã‚ã§ã™ã€‚) - Ø’f‚µ‚½ Session ‚ð‰i‘±‰»‘w‚Ì‹ß‚­‚Å•ÛŽ‚·‚ׂ«‚Å‚ ‚邱‚Æ‚É - ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - Œ¾‚¢Š·‚¦‚é‚ÆA‚R‘wŠÂ‹«‚Ì’†‚Å Session ‚ð•ÛŽ‚·‚邽‚ß‚ÉA - EJBƒXƒe[ƒgƒtƒ‹ƒZƒbƒVƒ‡ƒ“Bean‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B - HttpSession ‚ÉŠi”[‚·‚邽‚ß‚ÉAWeb‘w‚É“]‘—‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ - i•Ê‚Ì‘w‚ւ̃VƒŠƒAƒ‰ƒCƒY‚à‚µ‚È‚¢‚Å‚­‚¾‚³‚¢jB + 切断ã—㟠Session を永続化層ã®è¿‘ãã§ä¿æŒã™ã¹ãã§ã‚ã‚‹ã“ã¨ã« + 注æ„ã—ã¦ãã ã•ã„。 + 言ã„æ›ãˆã‚‹ã¨ã€ï¼“層環境ã®ä¸­ã§ Session ã‚’ä¿æŒã™ã‚‹ãŸã‚ã«ã€ + EJBステートフルセッションBeanを使ã£ã¦ãã ã•ã„。 + HttpSession ã«æ ¼ç´ã™ã‚‹ãŸã‚ã«ã€Web層ã«è»¢é€ã—ãªã„ã§ãã ã•ã„ + (別ã®å±¤ã¸ã®ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã‚‚ã—ãªã„ã§ãã ã•ã„)。 - Šg’£ƒZƒbƒVƒ‡ƒ“ƒpƒ^[ƒ“i‚à‚µ‚­‚ÍAsession-per-conversationj‚ÍA - Ž©“®“I‚ȃJƒŒƒ“ƒgƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚ðŽÀŽ{‚·‚é‚æ‚è“‚¢B - ‚±‚Ì‚½‚ß‚ÉA‚ ‚È‚½‚Í CurrentSessionContext ‚ÌŽÀ‘•‚ð‹Ÿ‹‹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - Hibernate Wiki‚É‚ ‚é—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + 拡張セッションパターン(もã—ãã¯ã€session-per-conversation)ã¯ã€ + 自動的ãªã‚«ãƒ¬ãƒ³ãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç®¡ç†ã‚’実施ã™ã‚‹ã‚ˆã‚Šé›£ã—ã„。 + ã“ã®ãŸã‚ã«ã€ã‚ãªãŸã¯ CurrentSessionContext ã®å®Ÿè£…を供給ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernate Wikiã«ã‚る例をå‚ç…§ã—ã¦ãã ã•ã„。 - ƒfƒ^ƒbƒ`‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÆŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO + デタッãƒã•ã‚ŒãŸã‚ªãƒ–ジェクトã¨è‡ªå‹•ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚° - V‚µ‚¢ Session‚É‚æ‚èA‰i‘±‰»ƒXƒgƒAi–ó’F‚c‚aj‚Ƃ̑Θb‚ª”­¶‚µ‚Ü‚·B - ‚Ü‚½ˆê•ûA“¯‚¶‰i‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚ªAƒf[ƒ^ƒx[ƒX‚Ƃ̑Θb‚²‚Æ‚ÉÄ—˜—p‚³‚ê‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAŒ³X‚Í‘¼‚Ì Session ‚Ń[ƒh‚³‚êA - ƒfƒ^ƒbƒ`‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚Ìó‘Ô‚ð‘€ì‚µ‚Ü‚·B - ‚»‚µ‚ÄASession.update() ‚à‚µ‚­‚ÍASession.saveOrUpdate()A - Session.merge() ‚ðŽg‚Á‚ÄA‚»‚ê‚ç‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðĒljÁ‚µ‚Ü‚·B + æ–°ã—ã„ Sessionã«ã‚ˆã‚Šã€æ°¸ç¶šåŒ–ストア(訳注:DB)ã¨ã®å¯¾è©±ãŒç™ºç”Ÿã—ã¾ã™ã€‚ + ã¾ãŸä¸€æ–¹ã€åŒã˜æ°¸ç¶šæ€§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨ã®å¯¾è©±ã”ã¨ã«å†åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚ + アプリケーションã¯ã€å…ƒã€…ã¯ä»–ã® Session ã§ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã€ + デタッãƒã•ã‚ŒãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®çŠ¶æ…‹ã‚’æ“作ã—ã¾ã™ã€‚ + ãã—ã¦ã€Session.update() ã‚‚ã—ãã¯ã€Session.saveOrUpdate()〠+ Session.merge() を使ã£ã¦ã€ãれらã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å†è¿½åŠ ã—ã¾ã™ã€‚ - ‚±‚Ìꇂà‚â‚Í‚èAHibernate‚̓tƒ‰ƒbƒVƒ…‚·‚éÛ‚ÉAƒCƒ“ƒXƒ^ƒ“ƒX‚̃o[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B - XV‚Ì‹£‡‚ª”­¶‚µ‚½ê‡‚É‚ÍA—áŠO‚ð“Š‚°‚Ü‚·B + ã“ã®å ´åˆã‚‚ã‚„ã¯ã‚Šã€Hibernateã¯ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹éš›ã«ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚ + æ›´æ–°ã®ç«¶åˆãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯ã€ä¾‹å¤–を投ã’ã¾ã™ã€‚ - ƒIƒuƒWƒFƒNƒg‚ªC³‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠmM‚µ‚Ä‚¢‚éꇂÍA - update() ‚Ì‘ã‚í‚è‚ÉALockMode.READ ‚ðŽg‚Á‚ÄA - lock() ‚ðŒÄ‚Ño‚·‚±‚Æ‚à‚Å‚«‚Ü‚· - i‚·‚ׂẴLƒƒƒbƒVƒ…‚ð‰I‰ñ‚µAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðŽÀŽ{‚µ‚Ü‚·jB + オブジェクトãŒä¿®æ­£ã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’確信ã—ã¦ã„ã‚‹å ´åˆã¯ã€ + update() ã®ä»£ã‚ã‚Šã«ã€LockMode.READ を使ã£ã¦ã€ + lock() を呼ã³å‡ºã™ã“ã¨ã‚‚ã§ãã¾ã™ + (ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’迂回ã—ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã‚’実施ã—ã¾ã™ï¼‰ã€‚ - Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚̃JƒXƒ^ƒ}ƒCƒY + 自動ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º - ƒ}ƒbƒsƒ“ƒO‚Ì optimistic-lock ‘®«‚É false - ‚ðÝ’è‚·‚邱‚Æ‚É‚æ‚èA“Á’è‚̃vƒƒpƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚ß‚É - Ž©“®ƒo[ƒWƒ‡ƒ“ƒCƒ“ƒNƒŠƒƒ“ƒg‚𖳌ø‚É‚Å‚«‚Ü‚·B - ƒvƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚Á‚Ä‚àAƒo[ƒWƒ‡ƒ“‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µ‚Ü‚¹‚ñB + マッピング㮠optimistic-lock 属性㫠false + を設定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ç‰¹å®šã®ãƒ—ロパティやコレクションã®ãŸã‚ã« + 自動ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã‚’無効ã«ã§ãã¾ã™ã€‚ + プロパティãŒãƒ€ãƒ¼ãƒ†ã‚£ã§ã‚ã£ã¦ã‚‚ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インクリメントã—ã¾ã›ã‚“。 - ƒŒƒKƒV[‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ÍA‚µ‚΂µ‚ΌŒè“I‚Å‚ ‚èA•ÏX‚Å‚«‚Ü‚¹‚ñB - ‚Ü‚½‚ÍA‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“¯‚¶ƒf[ƒ^ƒx[ƒX‚ɃAƒNƒZƒX‚µ‚È‚¯‚ê‚΂Ȃ炸A - ‚»‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̓o[ƒWƒ‡ƒ“”Ô†‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚³‚¦‘€ì‚·‚é•û–@‚ð’m‚è‚Ü‚¹‚ñB - ‚Ç‚¿‚ç‚ÌꇂàAƒe[ƒuƒ‹‚Ì“Á’è‚̃Jƒ‰ƒ€‚ð“–‚Ä‚É‚µ‚ÄAƒo[ƒWƒ‡ƒjƒ“ƒO‚ðs‚¦‚Ü‚¹‚ñB - ƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚¹‚¸‚ÉAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚³‚¹‚邽‚ß‚ÉA - <class> ƒ}ƒbƒsƒ“ƒO‚É optimistic-lock="all" ‚ð - Žw’肵‚Ä‚­‚¾‚³‚¢B - s‚Ì‚·‚ׂẴtƒB[ƒ‹ƒh‚Ìó‘Ô‚ð”äŠr‚·‚é‚悤‚É‚È‚è‚Ü‚·B - ‚±‚ê‚ÍAHibernate‚ªŒÃ‚¢ó‘Ô‚ÆV‚µ‚¢ó‘Ô‚ð”äŠr‚Å‚«‚éꇂÉA - —˜_“I‚É“®ì‚·‚邾‚¯‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - —Ⴆ‚ÎAsession-per-request-with-detached-objects ‚Å‚Í‚È‚­A - ‚P‚‚̒·‚¢ Session ‚ðŽg‚¤ê‡‚Å‚·B + レガシーã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã¯ã€ã—ã°ã—ã°å›ºå®šçš„ã§ã‚ã‚Šã€å¤‰æ›´ã§ãã¾ã›ã‚“。 + ã¾ãŸã¯ã€ä»–ã®ã‚¢ãƒ—リケーションãŒåŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãªã‘ã‚Œã°ãªã‚‰ãšã€ + ãã®ã‚¢ãƒ—リケーションã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚„タイムスタンプã•ãˆæ“作ã™ã‚‹æ–¹æ³•ã‚’知りã¾ã›ã‚“。 + ã©ã¡ã‚‰ã®å ´åˆã‚‚ã€ãƒ†ãƒ¼ãƒ–ルã®ç‰¹å®šã®ã‚«ãƒ©ãƒ ã‚’当ã¦ã«ã—ã¦ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚’è¡Œãˆã¾ã›ã‚“。 + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„タイムスタンプã®ãƒ—ロパティをマッピングã›ãšã«ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã•ã›ã‚‹ãŸã‚ã«ã€ + <class> マッピング㫠optimistic-lock="all" ã‚’ + 指定ã—ã¦ãã ã•ã„。 + è¡Œã®ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®çŠ¶æ…‹ã‚’比較ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯ã€HibernateãŒå¤ã„状態ã¨æ–°ã—ã„状態を比較ã§ãã‚‹å ´åˆã«ã€ + ç†è«–çš„ã«å‹•ä½œã™ã‚‹ã ã‘ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + 例ãˆã°ã€session-per-request-with-detached-objects ã§ã¯ãªã〠+ 1ã¤ã®é•·ã„ Session を使ã†å ´åˆã§ã™ã€‚ - ‚Æ‚«‚Ç‚«As‚í‚ꂽ•ÏX‚ªd‚È‚ç‚È‚¢ŒÀ‚èA“¯Žž‚És‚í‚ꂽ•ÏX‚ðŽó‚¯“ü‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - <class> ƒ}ƒbƒsƒ“ƒO‚É optimistic-lock="dirty" - ‚ðݒ肵‚½ê‡Aƒtƒ‰ƒbƒVƒ…‚·‚éÛ‚ÉAHibernate‚̓_[ƒeƒBƒtƒB[ƒ‹ƒh‚Ì‚Ý‚ð”äŠr‚µ‚Ü‚·B + ã¨ãã©ãã€è¡Œã‚ã‚ŒãŸå¤‰æ›´ãŒé‡ãªã‚‰ãªã„é™ã‚Šã€åŒæ™‚ã«è¡Œã‚ã‚ŒãŸå¤‰æ›´ã‚’å—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚ + <class> マッピング㫠optimistic-lock="dirty" + を設定ã—ãŸå ´åˆã€ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹éš›ã«ã€Hibernateã¯ãƒ€ãƒ¼ãƒ†ã‚£ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ã¿ã‚’比較ã—ã¾ã™ã€‚ - ê—p‚̃o[ƒWƒ‡ƒ“^ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃Jƒ‰ƒ€‚ðŽg‚¤ê‡A - ‚à‚µ‚­‚Í‚·‚ׂÄ^ƒ_[ƒeƒB‚̃tƒB[ƒ‹ƒh‚ð”äŠr‚·‚éꇂǂ¿‚ç‚Å‚ ‚Á‚Ä‚àA - Hibernate‚̓Gƒ“ƒeƒBƒeƒB‚²‚Æ‚É1‚Â‚Ì UPDATE •¶‚ð - i“KØ‚È WHERE ß‚Æ‹¤‚ÉjŽg‚¢A - ƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚Æî•ñ‚ÌXV‚ðs‚¢‚Ü‚·B - ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ÌĒljÁ‚ðƒJƒXƒP[ƒh‚·‚邽‚ß‚ÉA - ˜A½“I‚ȉi‘±‰»‚ðŽg—p‚µ‚½ê‡A•s•K—v‚ÈXV‚ðŽÀs‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - ‚±‚ê‚Í’Êí–â‘è‚É‚È‚è‚Ü‚¹‚ñB - ‚µ‚©‚µA•ª—£‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•ÏX‚µ‚Ä‚¢‚È‚­‚Æ‚àA - ƒf[ƒ^ƒx[ƒX‚Ì on update ƒgƒŠƒK[‚ªŽÀs‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - <class> ƒ}ƒbƒsƒ“ƒO‚É - select-before-update="true" ‚ðÝ’è‚·‚邱‚Æ‚É‚æ‚Á‚ÄA - ‚±‚ÌU‚é•‘‚¢‚ðƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B - ŠmŽÀ‚É•ÏX‚³‚ꂽ‚©‚ðŠm”F‚·‚邽‚ß‚ÉAs‚ðXV‚·‚é‘O‚ÉA - •K‚¸ƒCƒ“ƒXƒ^ƒ“ƒX‚ð SELECT ‚µ‚Ü‚·B + 専用ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã®ã‚«ãƒ©ãƒ ã‚’使ã†å ´åˆã€ + ã‚‚ã—ãã¯ã™ã¹ã¦ï¼ãƒ€ãƒ¼ãƒ†ã‚£ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’比較ã™ã‚‹å ´åˆã©ã¡ã‚‰ã§ã‚ã£ã¦ã‚‚〠+ Hibernateã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã”ã¨ã«1ã¤ã® UPDATE 文を + (é©åˆ‡ãª WHERE 節ã¨å…±ã«ï¼‰ä½¿ã„〠+ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒã‚§ãƒƒã‚¯ã¨æƒ…å ±ã®æ›´æ–°ã‚’è¡Œã„ã¾ã™ã€‚ + 関連ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®å†è¿½åŠ ã‚’カスケードã™ã‚‹ãŸã‚ã«ã€ + 連鎖的ãªæ°¸ç¶šåŒ–を使用ã—ãŸå ´åˆã€ä¸å¿…è¦ãªæ›´æ–°ã‚’実行ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ã“ã‚Œã¯é€šå¸¸å•é¡Œã«ãªã‚Šã¾ã›ã‚“。 + ã—ã‹ã—ã€åˆ†é›¢ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’変更ã—ã¦ã„ãªãã¨ã‚‚〠+ データベース㮠on update トリガーãŒå®Ÿè¡Œã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + <class> マッピング㫠+ select-before-update="true" を設定ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã€ + ã“ã®æŒ¯ã‚‹èˆžã„をカスタマイズã§ãã¾ã™ã€‚ + 確実ã«å¤‰æ›´ã•ã‚ŒãŸã‹ã‚’確èªã™ã‚‹ãŸã‚ã«ã€è¡Œã‚’æ›´æ–°ã™ã‚‹å‰ã«ã€ + å¿…ãšã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’ SELECT ã—ã¾ã™ã€‚ @@ -1071,202 +1073,202 @@ session.close();]]>
- ”ߊϓIƒƒbƒN + 悲観的ロック - ƒ†[ƒU‚ªƒƒbƒNí—ª‚É”Y‚Þ‚Ì‚É‘½‚­‚ÌŽžŠÔ‚ð”ï‚â‚·‚±‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñB - ’Êí‚ÍAJDBCƒRƒlƒNƒVƒ‡ƒ“‚É•ª—£ƒŒƒxƒ‹‚ðŽw’肵A - ’P‚Ƀf[ƒ^ƒx[ƒX‚É‚·‚ׂĂ̎dŽ–‚ð‚³‚¹‚ê‚Î\•ª‚Å‚·B - ‚µ‚©‚µ‚È‚ª‚çA‚“x‚ȃ†[ƒU‚ÍA”r‘¼“I‚ȔߊϓIƒƒbƒN‚ðŠl“¾‚·‚邱‚Æ‚©A - V‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚éۂɃƒbƒN‚ðÄŠl“¾‚·‚邱‚Æ‚ð - ‚Æ‚«‚Ç‚«–]‚Þ‚©‚à‚µ‚ê‚Ü‚¹‚ñB + ユーザãŒãƒ­ãƒƒã‚¯æˆ¦ç•¥ã«æ‚©ã‚€ã®ã«å¤šãã®æ™‚間を費やã™ã“ã¨ã‚’æ„図ã—ã¦ã„ã¾ã›ã‚“。 + 通常ã¯ã€JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã«åˆ†é›¢ãƒ¬ãƒ™ãƒ«ã‚’指定ã—〠+ å˜ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã™ã¹ã¦ã®ä»•äº‹ã‚’ã•ã›ã‚Œã°å分ã§ã™ã€‚ + ã—ã‹ã—ãªãŒã‚‰ã€é«˜åº¦ãªãƒ¦ãƒ¼ã‚¶ã¯ã€æŽ’ä»–çš„ãªæ‚²è¦³çš„ロックをç²å¾—ã™ã‚‹ã“ã¨ã‹ã€ + æ–°ã—ã„トランザクションãŒé–‹å§‹ã•ã‚Œã‚‹éš›ã«ãƒ­ãƒƒã‚¯ã‚’å†ç²å¾—ã™ã‚‹ã“ã¨ã‚’ + ã¨ãã©ã望むã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - Hibernate‚Í‚¢‚‚àƒf[ƒ^ƒx[ƒX‚̃ƒbƒN‚ÌŽd‘g‚Ý‚ðŽg‚¢‚Ü‚·B - ƒƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚ðŒˆ‚µ‚ăƒbƒN‚µ‚Ü‚¹‚ñI + Hibernateã¯ã„ã¤ã‚‚データベースã®ãƒ­ãƒƒã‚¯ã®ä»•çµ„ã¿ã‚’使ã„ã¾ã™ã€‚ + メモリ内ã®ã‚ªãƒ–ジェクトを決ã—ã¦ãƒ­ãƒƒã‚¯ã—ã¾ã›ã‚“ï¼ - LockMode ƒNƒ‰ƒX‚ÍAHibernate‚ªŠl“¾‚Å‚«‚éˆÙ‚Ȃ郃bƒNƒŒƒxƒ‹‚ð’è‹`‚µ‚Ü‚·B - ˆÈ‰º‚ÌŽd‘g‚Ý‚É‚æ‚èAƒƒbƒN‚ðŠl“¾‚Å‚«‚Ü‚·B + LockMode クラスã¯ã€HibernateãŒç²å¾—ã§ãã‚‹ç•°ãªã‚‹ãƒ­ãƒƒã‚¯ãƒ¬ãƒ™ãƒ«ã‚’定義ã—ã¾ã™ã€‚ + 以下ã®ä»•çµ„ã¿ã«ã‚ˆã‚Šã€ãƒ­ãƒƒã‚¯ã‚’ç²å¾—ã§ãã¾ã™ã€‚ - LockMode.WRITE ‚ÍA - Hibernate‚ªs‚ðXV‚à‚µ‚­‚Í‘}“ü‚·‚éÛ‚ÉŽ©“®“I‚É“¾‚ç‚ê‚Ü‚·B + LockMode.WRITE ã¯ã€ + HibernateãŒè¡Œã‚’æ›´æ–°ã‚‚ã—ãã¯æŒ¿å…¥ã™ã‚‹éš›ã«è‡ªå‹•çš„ã«å¾—られã¾ã™ã€‚ - LockMode.UPGRADE ‚ÍA - ƒf[ƒ^ƒx[ƒX‚ŃTƒ|[ƒg‚³‚ê‚Ä‚¢‚镶–@ SELECT ... FOR UPDATE - ‚ðŽg‚Á‚½A–¾Ž¦“I‚ȃ†[ƒU[—v‹‚É‚æ‚蓾‚ç‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + LockMode.UPGRADE ã¯ã€ + データベースã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„る文法 SELECT ... FOR UPDATE + を使ã£ãŸã€æ˜Žç¤ºçš„ãªãƒ¦ãƒ¼ã‚¶ãƒ¼è¦æ±‚ã«ã‚ˆã‚Šå¾—られるã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - LockMode.UPGRADE_NOWAIT ‚ÍA - Oracle ‚Å SELECT ... FOR UPDATE NOWAIT ‚ðŽg‚Á‚½A - –¾Ž¦“I‚ȃ†[ƒU[—v‹‚É‚æ‚蓾‚ç‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + LockMode.UPGRADE_NOWAIT ã¯ã€ + Oracle 㧠SELECT ... FOR UPDATE NOWAIT を使ã£ãŸã€ + 明示的ãªãƒ¦ãƒ¼ã‚¶ãƒ¼è¦æ±‚ã«ã‚ˆã‚Šå¾—られるã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - LockMode.READ ‚ÍA - Repeatable Read‚à‚µ‚­‚ÍSerializable‚Ì•ª—£ƒŒƒxƒ‹‚ÅAƒf[ƒ^‚ð“Ç‚ñ‚¾Û‚ÉŽ©“®“I‚É“¾‚ç‚ê‚Ü‚·B - ‚¨‚»‚ç‚­A–¾Ž¦“I‚ȃ†[ƒU[—v‹‚É‚æ‚èAĎ擾‚³‚ê‚Ü‚·B + LockMode.READ ã¯ã€ + Repeatable Readã‚‚ã—ãã¯Serializableã®åˆ†é›¢ãƒ¬ãƒ™ãƒ«ã§ã€ãƒ‡ãƒ¼ã‚¿ã‚’読んã éš›ã«è‡ªå‹•çš„ã«å¾—られã¾ã™ã€‚ + ãŠãらãã€æ˜Žç¤ºçš„ãªãƒ¦ãƒ¼ã‚¶ãƒ¼è¦æ±‚ã«ã‚ˆã‚Šã€å†å–å¾—ã•ã‚Œã¾ã™ã€‚ - LockMode.NONE ‚ÍAƒƒbƒN‚µ‚È‚¢‚±‚Æ‚ð•\‚µ‚Ü‚·B - Transaction ‚ÌI‚í‚è‚ÉA - ‚·‚ׂẴIƒuƒWƒFƒNƒg‚Í‚±‚̃ƒbƒNƒ‚[ƒh‚ÉØ‚è‘Ö‚í‚è‚Ü‚·B - update() ‚â saveOrUpdate() ‚ðŒÄ‚Ño‚·‚±‚Æ‚É‚æ‚Á‚ÄA - ƒZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A•t‚¯‚ç‚ꂽƒIƒuƒWƒFƒNƒg‚àA‚±‚̃ƒbƒNƒ‚[ƒh‚Åo”­‚µ‚Ü‚·B + LockMode.NONE ã¯ã€ãƒ­ãƒƒã‚¯ã—ãªã„ã“ã¨ã‚’表ã—ã¾ã™ã€‚ + Transaction ã®çµ‚ã‚ã‚Šã«ã€ + ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトã¯ã“ã®ãƒ­ãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚ + update() ã‚„ saveOrUpdate() を呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã£ã¦ã€ + セッションã«é–¢é€£ä»˜ã‘られãŸã‚ªãƒ–ジェクトもã€ã“ã®ãƒ­ãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰ã§å‡ºç™ºã—ã¾ã™ã€‚ - u–¾Ž¦“I‚ȃ†[ƒU[—v‹v‚Æ‚ÍA‰º‹L‚Ì•û–@‚Ì‚P‚‚Ō¾‚¢•\‚¹‚Ü‚·B + 「明示的ãªãƒ¦ãƒ¼ã‚¶ãƒ¼è¦æ±‚ã€ã¨ã¯ã€ä¸‹è¨˜ã®æ–¹æ³•ã®ï¼‘ã¤ã§è¨€ã„表ã›ã¾ã™ã€‚ - LockMode ‚ðŽw’肵‚½ Session.load() ‚̌ĂÑo‚µB + LockMode を指定ã—㟠Session.load() ã®å‘¼ã³å‡ºã—。 - Session.lock() ‚̌ĂÑo‚µB + Session.lock() ã®å‘¼ã³å‡ºã—。 - Query.setLockMode() ‚̌ĂÑo‚µB + Query.setLockMode() ã®å‘¼ã³å‡ºã—。 - UPGRADE ‚à‚µ‚­‚Í UPGRADE_NOWAIT ‚ªŽw’肳‚ꂽ - Session.load() ‚ªŒÄ‚Ño‚³‚êA - ‚©‚—v‹‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªƒZƒbƒVƒ‡ƒ“‚É‚æ‚Á‚Ä‚Ü‚¾ƒ[ƒh‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ê‡‚ÍA - SELECT ... FOR UPDATE ‚ðŽg‚Á‚ÄAƒIƒuƒWƒFƒNƒg‚ªƒ[ƒh‚³‚ê‚Ü‚·B - load() ‚ŌĂÑo‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªA - —v‹‚³‚ê‚Ä‚¢‚é‚æ‚觌À‚ª­‚È‚¢ƒƒbƒN‚Å‚·‚łɃ[ƒh‚³‚ê‚Ä‚¢‚½ê‡‚ÍA - Hibernate‚Í‚»‚̃IƒuƒWƒFƒNƒg‚Ì‚½‚ß‚ÉAlock() ‚ðŒÄ‚Ño‚µ‚Ü‚·B + UPGRADE ã‚‚ã—ã㯠UPGRADE_NOWAIT ãŒæŒ‡å®šã•ã‚ŒãŸ + Session.load() ãŒå‘¼ã³å‡ºã•ã‚Œã€ + ã‹ã¤è¦æ±‚ã•ã‚ŒãŸã‚ªãƒ–ジェクトãŒã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã‚ˆã£ã¦ã¾ã ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ãªã‹ã£ãŸå ´åˆã¯ã€ + SELECT ... FOR UPDATE を使ã£ã¦ã€ã‚ªãƒ–ジェクトãŒãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã™ã€‚ + load() ã§å‘¼ã³å‡ºã•ã‚ŒãŸã‚ªãƒ–ジェクトãŒã€ + è¦æ±‚ã•ã‚Œã¦ã„るより制é™ãŒå°‘ãªã„ロックã§ã™ã§ã«ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ãŸå ´åˆã¯ã€ + Hibernateã¯ãã®ã‚ªãƒ–ジェクトã®ãŸã‚ã«ã€lock() を呼ã³å‡ºã—ã¾ã™ã€‚ - Žw’肳‚ꂽƒƒbƒNƒ‚[ƒh‚ª READ ‚à‚µ‚­‚ÍAUPGRADEA - UPGRADE_NOWAIT ‚¾‚Á‚½ê‡ASession.lock() - ‚ÍAƒo[ƒWƒ‡ƒ“”Ô†‚̃`ƒFƒbƒN‚ðŽÀŽ{‚µ‚Ü‚·B - iUPGRADE ‚à‚µ‚­‚Í UPGRADE_NOWAIT ‚Ìê‡A - SELECT ... FOR UPDATE ‚ªŽg‚í‚ê‚Ü‚·Bj + 指定ã•ã‚ŒãŸãƒ­ãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰ãŒ READ ã‚‚ã—ãã¯ã€UPGRADE〠+ UPGRADE_NOWAIT ã ã£ãŸå ´åˆã€Session.lock() + ã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã®ãƒã‚§ãƒƒã‚¯ã‚’実施ã—ã¾ã™ã€‚ + (UPGRADE ã‚‚ã—ã㯠UPGRADE_NOWAIT ã®å ´åˆã€ + SELECT ... FOR UPDATE ãŒä½¿ã‚ã‚Œã¾ã™ã€‚) - ƒf[ƒ^ƒx[ƒX‚ª—v‹‚³‚ꂽƒƒbƒNƒ‚[ƒh‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢ê‡A - Hibernate‚Íi—áŠO‚ð“Š‚°‚é‘ã‚í‚è‚ÉAj“KØ‚È‘ã‚í‚è‚̃‚[ƒh‚ðŽg‚¢‚Ü‚·B - ‚±‚ê‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒ|[ƒ^ƒuƒ‹‚Å‚ ‚邱‚Æ‚ð•ÛØ‚µ‚Ü‚·B + データベースãŒè¦æ±‚ã•ã‚ŒãŸãƒ­ãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„å ´åˆã€ + Hibernateã¯ï¼ˆä¾‹å¤–を投ã’る代ã‚ã‚Šã«ã€ï¼‰é©åˆ‡ãªä»£ã‚ã‚Šã®ãƒ¢ãƒ¼ãƒ‰ã‚’使ã„ã¾ã™ã€‚ + ã“ã‚Œã¯ã€ã‚¢ãƒ—リケーションãŒãƒãƒ¼ã‚¿ãƒ–ルã§ã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã—ã¾ã™ã€‚ - ƒRƒlƒNƒVƒ‡ƒ“ŠJ•úƒ‚[ƒh + コãƒã‚¯ã‚·ãƒ§ãƒ³é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ - Hibernate‚̃ŒƒKƒV[i2.xj‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“ŠÇ—‚ÉŠÖ‚·‚éU‚é•‘‚¢‚ÍA - ʼn‚É•K—v‚Æ‚µ‚½Û‚É Session ‚ªƒRƒlƒNƒVƒ‡ƒ“‚𓾂é‚Æ‚¢‚¤‚à‚Ì‚Å‚µ‚½B - ‚»‚µ‚ÄAƒZƒbƒVƒ‡ƒ“‚ª•Â‚¶‚ç‚ê‚é‚Ü‚ÅA‚»‚̃RƒlƒNƒVƒ‡ƒ“‚ð•ÛŽ‚µ‚Ü‚µ‚½B - Hibernate 3.x‚ÍAƒZƒbƒVƒ‡ƒ“‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚ð‚ǂ̂悤‚ɧŒä‚·‚é‚©‚ð“`‚¦‚é - ƒRƒlƒNƒVƒ‡ƒ“ŠJ•úƒ‚[ƒh‚Æ‚¢‚¤ŠT”O‚𓱓ü‚µ‚Ü‚µ‚½B - ˆÈ~‚Ì‹c˜_‚ÍA\¬‚³‚ꂽ ConnectionProvider ‚ð’Ê‚µ‚Ä’ñ‹Ÿ‚³‚ê‚é - ƒRƒlƒNƒVƒ‡ƒ“‚É“KØ‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ˆÙ‚È‚éŠJ•úƒ‚[ƒh‚ÍAorg.hibernate.ConnectionReleaseMode ‚É - —ñ‹“‚³‚ꂽ’l‚É‚æ‚èŠm”F‚³‚ê‚Ü‚·B + Hibernateã®ãƒ¬ã‚¬ã‚·ãƒ¼ï¼ˆ2.x)ã®JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ç®¡ç†ã«é–¢ã™ã‚‹æŒ¯ã‚‹èˆžã„ã¯ã€ + 最åˆã«å¿…è¦ã¨ã—ãŸéš›ã« Session ãŒã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å¾—ã‚‹ã¨ã„ã†ã‚‚ã®ã§ã—ãŸã€‚ + ãã—ã¦ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒé–‰ã˜ã‚‰ã‚Œã‚‹ã¾ã§ã€ãã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ä¿æŒã—ã¾ã—ãŸã€‚ + Hibernate 3.xã¯ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ã©ã®ã‚ˆã†ã«åˆ¶å¾¡ã™ã‚‹ã‹ã‚’ä¼ãˆã‚‹ + コãƒã‚¯ã‚·ãƒ§ãƒ³é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ã¨ã„ã†æ¦‚念を導入ã—ã¾ã—ãŸã€‚ + 以é™ã®è­°è«–ã¯ã€æ§‹æˆã•ã‚ŒãŸ ConnectionProvider を通ã—ã¦æä¾›ã•ã‚Œã‚‹ + コãƒã‚¯ã‚·ãƒ§ãƒ³ã«é©åˆ‡ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ç•°ãªã‚‹é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ã¯ã€org.hibernate.ConnectionReleaseMode ã« + 列挙ã•ã‚ŒãŸå€¤ã«ã‚ˆã‚Šç¢ºèªã•ã‚Œã¾ã™ã€‚ - ON_CLOSE - –{Ž¿“I‚Éã‹L‚Åq‚ׂ½ƒŒƒKƒV[‚ÌU‚é•‘‚¢‚Å‚·B - HibernateƒZƒbƒVƒ‡ƒ“‚Íʼn‚ÉJDBCƒAƒNƒZƒX‚ðŽÀs‚·‚é•K—v‚ª‚ ‚éۂɃRƒlƒNƒVƒ‡ƒ“‚𓾂܂·B - ‚»‚µ‚ÄAƒZƒbƒVƒ‡ƒ“‚ª•Â‚¶‚ç‚ê‚é‚Ü‚ÅAƒRƒlƒNƒVƒ‡ƒ“‚ð•ÛŽ‚µ‚Ü‚·B + ON_CLOSE - 本質的ã«ä¸Šè¨˜ã§è¿°ã¹ãŸãƒ¬ã‚¬ã‚·ãƒ¼ã®æŒ¯ã‚‹èˆžã„ã§ã™ã€‚ + Hibernateセッションã¯æœ€åˆã«JDBCアクセスを実行ã™ã‚‹å¿…è¦ãŒã‚ã‚‹éš›ã«ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’å¾—ã¾ã™ã€‚ + ãã—ã¦ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒé–‰ã˜ã‚‰ã‚Œã‚‹ã¾ã§ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ä¿æŒã—ã¾ã™ã€‚ AFTER_TRANSACTION - - org.hibernate.Transaction ‚ªŠ®—¹‚µ‚½ŒãA - ƒRƒlƒNƒVƒ‡ƒ“‚ðŠJ•ú‚µ‚Ü‚·B + org.hibernate.Transaction ãŒå®Œäº†ã—ãŸå¾Œã€ + コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’開放ã—ã¾ã™ã€‚ - AFTER_STATEMENT iÏ‹É“I‚ÈŠJ•ú‚Æ‚àŒÄ‚΂ê‚éj - - ‚·‚ׂẴXƒe[ƒgƒƒ“ƒg‚ª‚»‚ꂼ‚êŽÀs‚³‚ꂽŒãAƒRƒlƒNƒVƒ‡ƒ“‚ªŠJ•ú‚³‚ê‚Ü‚·B - ƒXƒe[ƒgƒƒ“ƒg‚ªƒZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A‚·‚郊ƒ\[ƒX‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚éꇂÍA - ‚±‚ÌÏ‹É“I‚ÈŠJ•ú‚̓XƒLƒbƒv‚³‚ê‚Ü‚·B - ¡‚Ì‚Æ‚±‚ëA‚±‚ꂪ‹N‚±‚é‚Ì‚Í org.hibernate.ScrollableResults - ‚ªŽg‚í‚ê‚éꇂ݂̂ł·B + AFTER_STATEMENT (ç©æ¥µçš„ãªé–‹æ”¾ã¨ã‚‚呼ã°ã‚Œã‚‹ï¼‰ - + ã™ã¹ã¦ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆãŒãã‚Œãžã‚Œå®Ÿè¡Œã•ã‚ŒãŸå¾Œã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãŒé–‹æ”¾ã•ã‚Œã¾ã™ã€‚ + ステートメントãŒã‚»ãƒƒã‚·ãƒ§ãƒ³ã«é–¢é€£ã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹ã‚’é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹å ´åˆã¯ã€ + ã“ã®ç©æ¥µçš„ãªé–‹æ”¾ã¯ã‚¹ã‚­ãƒƒãƒ—ã•ã‚Œã¾ã™ã€‚ + 今ã®ã¨ã“ã‚ã€ã“ã‚ŒãŒèµ·ã“ã‚‹ã®ã¯ org.hibernate.ScrollableResults + ãŒä½¿ã‚れる場åˆã®ã¿ã§ã™ã€‚ - ƒRƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“ƒpƒ‰ƒ[ƒ^‚Ì hibernate.connection.release_mode - ‚ÍAŽg—p‚·‚éŠJ•úƒ‚[ƒh‚ðŽw’è‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B - Žw’è‚Å‚«‚é’l‚ÍŽŸ‚Ì’Ê‚è‚Å‚·B + コンフィグレーションパラメータ㮠hibernate.connection.release_mode + ã¯ã€ä½¿ç”¨ã™ã‚‹é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ã‚’指定ã™ã‚‹ãŸã‚ã«ä½¿ã„ã¾ã™ã€‚ + 指定ã§ãる値ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚ - auto iƒfƒtƒHƒ‹ƒgj - ‚±‚ê‚ð‘I‘ð‚·‚é‚Æ + auto (デフォルト) - ã“れをé¸æŠžã™ã‚‹ã¨ org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode() - ƒƒ\ƒbƒh‚É‚æ‚Á‚Ä•Ô‚³‚ê‚éŠJ•úƒ‚[ƒh‚ɈÏ÷‚³‚ê‚Ü‚·B - ‚±‚̃ƒ\ƒbƒh‚ÍA - JTATransactionFactory‚É‚ÍConnectionReleaseMode.AFTER_STATEMENT‚ð•Ô‚µA - JDBCTransactionFactory‚É‚ÍConnectionReleaseMode.AFTER_TRANSACTION‚ð•Ô‚µ‚Ü‚·B - ‚±‚̃fƒtƒHƒ‹ƒg‚ÌU‚é•‘‚¢‚ð•Ï‚¦‚Ä‚¤‚Ü‚­‚¢‚Á‚½ŽŽ‚µ‚ª‚ ‚è‚Ü‚¹‚ñB - ‚»‚ê‚ÍA‚±‚ÌÝ’è’l‚ªŒ´ˆö‚Å‹N‚±‚éáŠQ‚ÍA - ƒ†[ƒUƒR[ƒh‚Ì’†‚ŃoƒO‚âŠÔˆá‚Á‚½ðŒ‚É‚È‚è‚â‚·‚¢‚©‚ç‚Å‚·B + メソッドã«ã‚ˆã£ã¦è¿”ã•ã‚Œã‚‹é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ã«å§”è­²ã•ã‚Œã¾ã™ã€‚ + ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ + JTATransactionFactoryã«ã¯ConnectionReleaseMode.AFTER_STATEMENTã‚’è¿”ã—〠+ JDBCTransactionFactoryã«ã¯ConnectionReleaseMode.AFTER_TRANSACTIONã‚’è¿”ã—ã¾ã™ã€‚ + ã“ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æŒ¯ã‚‹èˆžã„を変ãˆã¦ã†ã¾ãã„ã£ãŸè©¦ã—ãŒã‚ã‚Šã¾ã›ã‚“。 + ãã‚Œã¯ã€ã“ã®è¨­å®šå€¤ãŒåŽŸå› ã§èµ·ã“る障害ã¯ã€ + ユーザコードã®ä¸­ã§ãƒã‚°ã‚„é–“é•ã£ãŸæ¡ä»¶ã«ãªã‚Šã‚„ã™ã„ã‹ã‚‰ã§ã™ã€‚ - on_close - ConnectionReleaseMode.ON_CLOSE‚ðŽg‚¢‚Ü‚·B - ‚±‚ÌÝ’è‚ÍŒã•ûŒÝŠ·‚Ì‚½‚ß‚ÉŽc‚³‚ê‚Ä‚¢‚Ü‚·‚ªAŽg‚í‚È‚¢‚±‚Æ‚ð‹­‚­Š©‚ß‚Ü‚·B + on_close - ConnectionReleaseMode.ON_CLOSEを使ã„ã¾ã™ã€‚ + ã“ã®è¨­å®šã¯å¾Œæ–¹äº’æ›ã®ãŸã‚ã«æ®‹ã•ã‚Œã¦ã„ã¾ã™ãŒã€ä½¿ã‚ãªã„ã“ã¨ã‚’å¼·ã勧ã‚ã¾ã™ã€‚ - after_transaction - ConnectionReleaseMode.AFTER_TRANSACTION‚ðŽg‚¢‚Ü‚·B - ‚±‚ÌÝ’è‚ÍJTAŠÂ‹«‚Ì’†‚Å‚ÍŽg‚¤‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ConnectionReleaseMode.AFTER_TRANSACTION‚ðŽw’肵AŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚Ì’†‚Å‚ÍA - ŠJ•úƒ‚[ƒh‚ªAFTER_STATEMENT‚Å‚ ‚é‚©‚̂悤‚ÉAƒRƒlƒNƒVƒ‡ƒ“‚ÍŠJ•ú‚³‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + after_transaction - ConnectionReleaseMode.AFTER_TRANSACTIONを使ã„ã¾ã™ã€‚ + ã“ã®è¨­å®šã¯JTA環境ã®ä¸­ã§ã¯ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + ConnectionReleaseMode.AFTER_TRANSACTIONを指定ã—ã€è‡ªå‹•ã‚³ãƒŸãƒƒãƒˆãƒ¢ãƒ¼ãƒ‰ã®ä¸­ã§ã¯ã€ + 開放モードãŒAFTER_STATEMENTã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã¯é–‹æ”¾ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - after_statement - ConnectionReleaseMode.AFTER_STATEMENT‚ðŽg‚¢‚Ü‚·B - ‚³‚ç‚ÉAݒ肳‚ꂽ ConnectionProvider ‚ÍA - ‚±‚ÌÝ’è (supportsAggressiveRelease()) ‚ðƒTƒ|[ƒg‚·‚é‚©‚Ç‚¤‚© - ‚𒲂ׂ邽‚ß‚ÉŽg—p‚µ‚Ü‚·B - ‚à‚µ‚»‚¤‚Å‚È‚¢ê‡AŠJ•úƒ‚[ƒh‚ÍConnectionReleaseMode.AFTER_TRANSACTION - ‚ɃŠƒZƒbƒg‚³‚ê‚Ü‚·B - ‚±‚ÌÝ’è‚ÍŽŸ‚̊‹«‚ł݈̂À‘S‚Å‚·B - ‚»‚ê‚ÍAConnectionProvider.getConnection() ‚ðŒÄ‚Ño‚·‚½‚Ñ‚É - Šî”Õ‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ª“¯‚¶‚à‚Ì‚ðŽæ“¾‚Å‚«‚é‚©A - “¯‚¶ƒRƒlƒNƒVƒ‡ƒ“‚ª“¾‚ç‚ê‚邱‚Æ‚ª–â‘è‚Æ‚È‚ç‚È‚¢Ž©“®ƒRƒ~ƒbƒgŠÂ‹«‚Ì’†‚Å‚·B + after_statement - ConnectionReleaseMode.AFTER_STATEMENTを使ã„ã¾ã™ã€‚ + ã•ã‚‰ã«ã€è¨­å®šã•ã‚ŒãŸ ConnectionProvider ã¯ã€ + ã“ã®è¨­å®š (supportsAggressiveRelease()) をサãƒãƒ¼ãƒˆã™ã‚‹ã‹ã©ã†ã‹ + を調ã¹ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚ + ã‚‚ã—ãã†ã§ãªã„å ´åˆã€é–‹æ”¾ãƒ¢ãƒ¼ãƒ‰ã¯ConnectionReleaseMode.AFTER_TRANSACTION + ã«ãƒªã‚»ãƒƒãƒˆã•ã‚Œã¾ã™ã€‚ + ã“ã®è¨­å®šã¯æ¬¡ã®ç’°å¢ƒã§ã®ã¿å®‰å…¨ã§ã™ã€‚ + ãã‚Œã¯ã€ConnectionProvider.getConnection() を呼ã³å‡ºã™ãŸã³ã« + 基盤ã¨ãªã‚‹JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãŒåŒã˜ã‚‚ã®ã‚’å–å¾—ã§ãã‚‹ã‹ã€ + åŒã˜ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãŒå¾—られるã“ã¨ãŒå•é¡Œã¨ãªã‚‰ãªã„自動コミット環境ã®ä¸­ã§ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml b/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml index b708c8ba39..bd83d46d91 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml @@ -1,53 +1,55 @@ - + + + - Hibernate‚Ì“±“ü + Hibernateã®å°Žå…¥ - ‘O‘‚« + å‰æ›¸ã - ‚±‚ÌÍ‚ÍHibernate‚ð‰‚ß‚ÄŽg‚¤ƒ†[ƒUŒü‚¯‚Ì“ü–å“I‚ȃ`ƒ…[ƒgƒŠƒAƒ‹‚Å‚·B - ƒCƒ“ƒƒ‚ƒŠƒf[ƒ^ƒx[ƒX‚ðŽg‚¤ŠÈ’P‚ȃRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çŽn‚ßA - ˆê•àˆê•à‚í‚©‚è‚â‚·‚¢‚â‚è•û‚ÅŠJ”­‚ði‚ß‚Ü‚·B + ã“ã®ç« ã¯Hibernateã‚’åˆã‚ã¦ä½¿ã†ãƒ¦ãƒ¼ã‚¶å‘ã‘ã®å…¥é–€çš„ãªãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§ã™ã€‚ + インメモリデータベースを使ã†ç°¡å˜ãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚¢ãƒ—リケーションã‹ã‚‰å§‹ã‚〠+ 一歩一歩ã‚ã‹ã‚Šã‚„ã™ã„ã‚„ã‚Šæ–¹ã§é–‹ç™ºã‚’進ã‚ã¾ã™ã€‚ - ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ÍHibernate‚ð‰‚ß‚ÄŽg‚¤ƒ†[ƒU‚ð‘z’肵‚Ä‚¢‚Ü‚·‚ªA - —‰ð‚·‚é‚É‚ÍJava‚ÆSQL‚ɂ‚¢‚Ä‚Ì’mŽ¯‚ª•K—v‚Å‚·B - ‚±‚ê‚ÍMichael Gloegl‚ÌŽè‚É‚æ‚éƒ`ƒ…[ƒgƒŠƒAƒ‹‚ð‰º•~‚«‚É‚µ‚Ä‚¢‚Ü‚·‚ªA - ‚±‚±‚ŃT[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ‚ÆŒ¾‚Á‚Ä‚¢‚é‚Ì‚ÍAJDK 1.4‚Æ5.0—p‚Ì‚à‚Ì‚Å‚·B - JDK 1.3‚ð—˜—p‚·‚é‚Ì‚Å‚ ‚ê‚Α¼‚̃‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚©‚à‚µ‚ê‚Ü‚¹‚ñB + ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯Hibernateã‚’åˆã‚ã¦ä½¿ã†ãƒ¦ãƒ¼ã‚¶ã‚’想定ã—ã¦ã„ã¾ã™ãŒã€ + ç†è§£ã™ã‚‹ã«ã¯Javaã¨SQLã«ã¤ã„ã¦ã®çŸ¥è­˜ãŒå¿…è¦ã§ã™ã€‚ + ã“ã‚Œã¯Michael Gloeglã®æ‰‹ã«ã‚ˆã‚‹ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’下敷ãã«ã—ã¦ã„ã¾ã™ãŒã€ + ã“ã“ã§ã‚µãƒ¼ãƒ‰ãƒ‘ーティライブラリã¨è¨€ã£ã¦ã„ã‚‹ã®ã¯ã€JDK 1.4ã¨5.0用ã®ã‚‚ã®ã§ã™ã€‚ + JDK 1.3を利用ã™ã‚‹ã®ã§ã‚ã‚Œã°ä»–ã®ãƒ©ã‚¤ãƒ–ラリãŒå¿…è¦ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 - ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃\[ƒXƒR[ƒh‚ÍHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì - doc/reference/tutorial/ ‚É‚ ‚è‚Ü‚·B + ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯Hibernateディストリビューション㮠+ doc/reference/tutorial/ ã«ã‚ã‚Šã¾ã™ã€‚ - ƒp[ƒg1 - ‰‚ß‚Ä‚ÌHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“ + パート1 - åˆã‚ã¦ã®Hibernateアプリケーション - ʼn‚ɃRƒ“ƒ\[ƒ‹ƒx[ƒX‚ÌŠÈ’P‚ÈHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð쬂µ‚Ü‚·B - Javaƒf[ƒ^ƒx[ƒXiHSQL DBj‚ð—˜—p‚·‚é‚Ì‚ÅA - ƒf[ƒ^ƒx[ƒXƒT[ƒo‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + 最åˆã«ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ãƒ™ãƒ¼ã‚¹ã®ç°¡å˜ãªHibernateアプリケーションを作æˆã—ã¾ã™ã€‚ + Javaデータベース(HSQL DB)を利用ã™ã‚‹ã®ã§ã€ + データベースサーãƒã‚’インストールã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 - ‰¼‚ɬ‚³‚ȃf[ƒ^ƒx[ƒXƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚¾‚Æ‚µ‚Ü‚µ‚傤B - ‚»‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍoÈ‚µ‚½‚¢ƒCƒxƒ“ƒg‚ÆA - ‚»‚̃Cƒxƒ“ƒg‚̃zƒXƒg‚ɂ‚¢‚Ä‚Ìî•ñ‚ðŠi”[‚·‚é‚à‚Ì‚Æ‚µ‚Ü‚·B + ä»®ã«å°ã•ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¢ãƒ—リケーションãŒå¿…è¦ã ã¨ã—ã¾ã—ょã†ã€‚ + ãã®ã‚¢ãƒ—リケーションã«ã¯å‡ºå¸­ã—ãŸã„イベントã¨ã€ + ãã®ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒ›ã‚¹ãƒˆã«ã¤ã„ã¦ã®æƒ…報を格ç´ã™ã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚ - ‚Ü‚¸Å‰‚É‚·‚邱‚Æ‚ÍŠJ”­—p‚̃fƒBƒŒƒNƒgƒŠ‚ðƒZƒbƒgƒAƒbƒv‚µ‚ÄA - •K—v‚Æ‚È‚é‚·‚ׂĂÌJavaƒ‰ƒCƒuƒ‰ƒŠ‚ð”z’u‚·‚邱‚Æ‚Å‚·B - HibernateƒEƒFƒuƒTƒCƒg‚©‚çHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B - ƒtƒ@ƒCƒ‹‚ð‰ð“€‚µ‚Ä /lib ‚É‚ ‚é•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚Ì‚·‚ׂĂðA - V‚µ‚¢ŠJ”­—pƒfƒBƒŒƒNƒgƒŠ‚Ì /lib ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F + ã¾ãšæœ€åˆã«ã™ã‚‹ã“ã¨ã¯é–‹ç™ºç”¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’セットアップã—ã¦ã€ + å¿…è¦ã¨ãªã‚‹ã™ã¹ã¦ã®Javaライブラリをé…ç½®ã™ã‚‹ã“ã¨ã§ã™ã€‚ + Hibernateウェブサイトã‹ã‚‰Hibernateディストリビューションをダウンロードã—ã¦ãã ã•ã„。 + ファイルを解å‡ã—㦠/lib ã«ã‚ã‚‹å¿…è¦ãªãƒ©ã‚¤ãƒ–ラリã®ã™ã¹ã¦ã‚’〠+ æ–°ã—ã„開発用ディレクトリ㮠/lib ディレクトリã«é…ç½®ã—ã¦ãã ã•ã„。 + ã“ã®ã‚ˆã†ã«ãªã£ã¦ã„ã‚‹ã¯ãšã§ã™ï¼š - ‚±‚ꂪ –{ƒhƒLƒ…ƒƒ“ƒgŽ·•MŽž“_‚Å‚Ì Hibernate‚Ì•K—vÅ’áŒÀ‚̃‰ƒCƒuƒ‰ƒŠ‚Å‚· - iƒƒCƒ“ƒA[ƒJƒCƒu‚Ìhibernate3.jar‚àƒRƒs[‚µ‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢jB - Hibernate‚̃o[ƒWƒ‡ƒ“‚É‚æ‚Á‚Ä‚Í‚³‚ç‚É•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚âA•s—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB - HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì lib/ ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚é - README.txt ƒtƒ@ƒCƒ‹‚ðŒ©‚Ä‚­‚¾‚³‚¢B - •K{‚Ü‚½‚̓IƒvƒVƒ‡ƒ“‚̃T[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ‚ɂ‚¢‚Ä‚Ìî•ñ‚ðÚ‚¹‚Ä‚¢‚Ü‚· - iŽÀÛLog4j‚Í•K{‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA‘½‚­‚ÌŠJ”­ŽÒ‚ªD‚ñ‚Å‚¢‚Ü‚·jB + ã“れ㌠本ドキュメント執筆時点ã§ã® Hibernateã®å¿…è¦æœ€ä½Žé™ã®ãƒ©ã‚¤ãƒ–ラリã§ã™ + (メインアーカイブã®hibernate3.jarもコピーã—ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„)。 + Hibernateã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚ˆã£ã¦ã¯ã•ã‚‰ã«å¿…è¦ãªãƒ©ã‚¤ãƒ–ラリやã€ä¸è¦ãªãƒ©ã‚¤ãƒ–ラリãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + Hibernateディストリビューション㮠lib/ ディレクトリã«ã‚ã‚‹ + README.txt ファイルを見ã¦ãã ã•ã„。 + å¿…é ˆã¾ãŸã¯ã‚ªãƒ—ションã®ã‚µãƒ¼ãƒ‰ãƒ‘ーティライブラリã«ã¤ã„ã¦ã®æƒ…報を載ã›ã¦ã„ã¾ã™ + (実際Log4jã¯å¿…é ˆã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€å¤šãã®é–‹ç™ºè€…ãŒå¥½ã‚“ã§ã„ã¾ã™ï¼‰ã€‚ - ŽŸ‚Ƀf[ƒ^ƒx[ƒX‚ÉŠi”[‚·‚éƒCƒxƒ“ƒg‚ð•\‚·ƒNƒ‰ƒX‚ð쬂µ‚Ü‚·B + 次ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ ¼ç´ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’表ã™ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã¾ã™ã€‚ - ʼn‚̃Nƒ‰ƒX + 最åˆã®ã‚¯ãƒ©ã‚¹ - ʼn‚̉i‘±ƒNƒ‰ƒX‚ÍAƒvƒƒpƒeƒB‚ð‚¢‚­‚‚©Ž‚ƒVƒ“ƒvƒ‹‚ÈJavaBean‚Å‚·F + 最åˆã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã¯ã€ãƒ—ロパティをã„ãã¤ã‹æŒã¤ã‚·ãƒ³ãƒ—ルãªJavaBeanã§ã™ï¼š - ‚²——‚Ì‚Æ‚¨‚èA‚±‚̃Nƒ‰ƒX‚̓tƒB[ƒ‹ƒh‚ªprivate‚̉Ž‹«‚ðŽ‚Á‚Ä‚¢‚é‚Ì‚Æ“¯Žž‚ÉA - JavaBean•W€‚̃Qƒbƒ^[AƒZƒbƒ^[ƒƒ\ƒbƒh‚Ì–½–¼‹K–ñ‚É]‚Á‚Ä‚¢‚Ü‚·B - ‚±‚̂悤‚ÈÝŒv‚Í„§‚³‚ê‚Ä‚¢‚Ü‚·‚ª•K{‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - ƒAƒNƒZƒTƒƒ\ƒbƒh‚ðÝ‚¯‚é‚̂̓Šƒtƒ@ƒNƒ^ƒŠƒ“ƒO‚ðl‚¦‚½ŠæŒ’«‚Ì‚½‚ß‚ÅA - Hibernate‚̓tƒB[ƒ‹ƒh‚É’¼ÚƒAƒNƒZƒX‚·‚邱‚Æ‚à‰Â”\‚Å‚·B - ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ÍAƒŠƒtƒŒƒNƒVƒ‡ƒ“‚Å‚±‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð쬂·‚邽‚ß‚É - •K—v‚Å‚·B + ã”覧ã®ã¨ãŠã‚Šã€ã“ã®ã‚¯ãƒ©ã‚¹ã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒprivateã®å¯è¦–性をæŒã£ã¦ã„ã‚‹ã®ã¨åŒæ™‚ã«ã€ + JavaBean標準ã®ã‚²ãƒƒã‚¿ãƒ¼ã€ã‚»ãƒƒã‚¿ãƒ¼ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘½åè¦ç´„ã«å¾“ã£ã¦ã„ã¾ã™ã€‚ + ã“ã®ã‚ˆã†ãªè¨­è¨ˆã¯æŽ¨å¥¨ã•ã‚Œã¦ã„ã¾ã™ãŒå¿…é ˆã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + アクセサメソッドを設ã‘ã‚‹ã®ã¯ãƒªãƒ•ã‚¡ã‚¯ã‚¿ãƒªãƒ³ã‚°ã‚’考ãˆãŸé ‘å¥æ€§ã®ãŸã‚ã§ã€ + Hibernateã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + 引数ã®ãªã„コンストラクタã¯ã€ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã§ã“ã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã™ã‚‹ãŸã‚ã« + å¿…è¦ã§ã™ã€‚ - id ƒvƒƒpƒeƒB‚ÍA‚ ‚é“Á’è‚̃Cƒxƒ“ƒg‚ɑ΂·‚郆ƒj[ƒN‚ÈŽ¯•ÊŽq‚Ì’l‚ð•ÛŽ‚µ‚Ü‚·B - Hibernate‚ÌŠ®‘S‚È‹@”\‚ðŽg‚¢‚½‚¯‚ê‚ÎA‚·‚ׂẲi‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX - i‚»‚ê‚Ù‚Çd—v‚Å‚Í‚È‚¢ˆË‘¶ƒNƒ‰ƒX‚Æ‚¢‚¤‚à‚Ì‚à‚ ‚è‚Ü‚·j - ‚É‚±‚̂悤‚ÈŽ¯•ÊŽqƒvƒƒpƒeƒB‚ª•K—v‚É‚È‚è‚Ü‚·B - Ž–ŽÀã‚Ù‚Æ‚ñ‚ǂ̃AƒvƒŠƒP[ƒVƒ‡ƒ“i“Á‚ÉwebƒAƒvƒŠƒP[ƒVƒ‡ƒ“j‚Å‚ÍA - Ž¯•ÊŽq‚ŃIƒuƒWƒFƒNƒg‚ð‹æ•Ê‚·‚é•K—v‚ª‚ ‚邽‚ßA‚±‚ê‚ͧŒÀ‚Æ‚¢‚¤‚æ‚è‚à“Á’¥‚Å‚ ‚é‚Æl‚¦‚é‚ׂ«‚Å‚·B - ‚µ‚©‚µ’ÊíƒIƒuƒWƒFƒNƒg‚ÌID‚ð‘€ì‚·‚é‚悤‚È‚±‚Æ‚Í‚µ‚Ü‚¹‚ñB - ‚»‚Ì‚½‚߃Zƒbƒ^[ƒƒ\ƒbƒh‚Íprivate‚É‚·‚é‚ׂ«‚Å‚·B - Hibernate‚¾‚¯‚ªƒIƒuƒWƒFƒNƒg‚ªƒZ[ƒu‚³‚ꂽ‚Æ‚«‚ÉŽ¯•ÊŽq‚Ö’l‚ð‘ã“ü‚µ‚Ü‚·B - Hibernate‚ªipublic, private, protectedjƒtƒB[ƒ‹ƒh‚É’¼ÚƒAƒNƒZƒX‚Å‚«‚é‚Ì‚Æ“¯—l‚ÉA - public, private, protected‚̃AƒNƒZƒTƒƒ\ƒbƒh‚ɃAƒNƒZƒX‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚í‚©‚é‚Å‚µ‚傤B - ‘I‘ð‚Í‚ ‚È‚½‚É”C‚³‚ê‚Ä‚¢‚é‚Ì‚ÅA‚ ‚È‚½‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌÝŒv‚ɇ‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + id プロパティã¯ã€ã‚る特定ã®ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾ã™ã‚‹ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ã®å€¤ã‚’ä¿æŒã—ã¾ã™ã€‚ + Hibernateã®å®Œå…¨ãªæ©Ÿèƒ½ã‚’使ã„ãŸã‘ã‚Œã°ã€ã™ã¹ã¦ã®æ°¸ç¶šã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ + (ãã‚Œã»ã©é‡è¦ã§ã¯ãªã„ä¾å­˜ã‚¯ãƒ©ã‚¹ã¨ã„ã†ã‚‚ã®ã‚‚ã‚ã‚Šã¾ã™ï¼‰ + ã«ã“ã®ã‚ˆã†ãªè­˜åˆ¥å­ãƒ—ロパティãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + 事実上ã»ã¨ã‚“ã©ã®ã‚¢ãƒ—リケーション(特ã«webアプリケーション)ã§ã¯ã€ + 識別å­ã§ã‚ªãƒ–ジェクトを区別ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€ã“ã‚Œã¯åˆ¶é™ã¨ã„ã†ã‚ˆã‚Šã‚‚特徴ã§ã‚ã‚‹ã¨è€ƒãˆã‚‹ã¹ãã§ã™ã€‚ + ã—ã‹ã—通常オブジェクトã®IDã‚’æ“作ã™ã‚‹ã‚ˆã†ãªã“ã¨ã¯ã—ã¾ã›ã‚“。 + ãã®ãŸã‚セッターメソッドã¯privateã«ã™ã‚‹ã¹ãã§ã™ã€‚ + Hibernateã ã‘ãŒã‚ªãƒ–ジェクトãŒã‚»ãƒ¼ãƒ–ã•ã‚ŒãŸã¨ãã«è­˜åˆ¥å­ã¸å€¤ã‚’代入ã—ã¾ã™ã€‚ + HibernateãŒï¼ˆpublic, private, protected)フィールドã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã®ã¨åŒæ§˜ã«ã€ + public, private, protectedã®ã‚¢ã‚¯ã‚»ã‚µãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã¨ã„ã†ã“ã¨ãŒã‚ã‹ã‚‹ã§ã—ょã†ã€‚ + é¸æŠžã¯ã‚ãªãŸã«ä»»ã•ã‚Œã¦ã„ã‚‹ã®ã§ã€ã‚ãªãŸã®ã‚¢ãƒ—リケーションã®è¨­è¨ˆã«åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚Í‚·‚ׂẲi‘±ƒNƒ‰ƒX‚É•K{‚Å‚·B - ‚±‚ê‚ÍHibernate‚ªJava‚̃ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚ÄAƒIƒuƒWƒFƒNƒg‚ð쬂µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚ß‚Å‚·B - ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ðprivate‚É‚·‚邱‚Ƃ͉”\‚Å‚·‚ªA - ŽÀsŽž‚̃vƒƒLƒV¶¬‚ÆAƒoƒCƒgƒR[ƒh‘€ì‚È‚µ‚ÌŒø—¦“I‚ȃf[ƒ^‚Ì’Šo‚É‚ÍA - package‰ÂŽ‹«‚ª•K—v‚Å‚·B + 引数ã®ãªã„コンストラクタã¯ã™ã¹ã¦ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã«å¿…é ˆã§ã™ã€‚ + ã“ã‚Œã¯HibernateãŒJavaã®ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã£ã¦ã€ã‚ªãƒ–ジェクトを作æˆã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ãŸã‚ã§ã™ã€‚ + コンストラクタをprivateã«ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€ + 実行時ã®ãƒ—ロキシ生æˆã¨ã€ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰æ“作ãªã—ã®åŠ¹çŽ‡çš„ãªãƒ‡ãƒ¼ã‚¿ã®æŠ½å‡ºã«ã¯ã€ + packageå¯è¦–性ãŒå¿…è¦ã§ã™ã€‚ - ŠJ”­ƒtƒHƒ‹ƒ_‚Ì src ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚Ì“K؂ȃpƒbƒP[ƒW‚ÉA - ‚±‚ÌJavaƒ\[ƒXƒtƒ@ƒCƒ‹‚ð”z’u‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ÌŽž“_‚ŃfƒBƒŒƒNƒgƒŠ‚͈ȉº‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F + 開発フォルダ㮠src ã¨ã„ã†ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®é©åˆ‡ãªãƒ‘ッケージã«ã€ + ã“ã®Javaソースファイルをé…ç½®ã—ã¦ãã ã•ã„。 + ã“ã®æ™‚点ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã£ã¦ã„ã‚‹ã¯ãšã§ã™ï¼š - ŽŸ‚̃Xƒeƒbƒv‚Å‚ÍAHibernate‚É‚±‚̉i‘±ƒNƒ‰ƒX‚Ìî•ñ‚ð‹³‚¦‚Ü‚·B + 次ã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã¯ã€Hibernateã«ã“ã®æ°¸ç¶šã‚¯ãƒ©ã‚¹ã®æƒ…報を教ãˆã¾ã™ã€‚ - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹ + マッピングファイル - Hibernate‚ÍA‚ǂ̂悤‚ɉi‘±ƒNƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µŠi”[‚·‚ê‚΂悢‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B - ‚±‚±‚ÅHibernateƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ª“oꂵ‚Ü‚·B - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÍAƒf[ƒ^ƒx[ƒX“à‚̂ǂ̃e[ƒuƒ‹‚ɃAƒNƒZƒX‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©A - ‚»‚̃e[ƒuƒ‹‚̂ǂ̃Jƒ‰ƒ€‚ðŽg‚¤‚ׂ«‚©‚ðAHibernate‚É‹³‚¦‚Ü‚·B + Hibernateã¯ã€ã©ã®ã‚ˆã†ã«æ°¸ç¶šã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトをロードã—æ ¼ç´ã™ã‚Œã°ã‚ˆã„ã‹ã‚’知る必è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã“ã§HibernateマッピングファイルãŒç™»å ´ã—ã¾ã™ã€‚ + マッピングファイルã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ã©ã®ãƒ†ãƒ¼ãƒ–ルã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ã‹ã€ + ãã®ãƒ†ãƒ¼ãƒ–ルã®ã©ã®ã‚«ãƒ©ãƒ ã‚’使ã†ã¹ãã‹ã‚’ã€Hibernateã«æ•™ãˆã¾ã™ã€‚ - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÌŠî–{“I‚È\‘¢‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·F + マッピングファイルã®åŸºæœ¬çš„ãªæ§‹é€ ã¯ã“ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼š @@ -197,28 +199,28 @@ public class Event { ]]> - Hibernate DTD‚ª”ñí‚Éô—û‚³‚ê‚Ä‚¢‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ÌDTD‚ÍAƒGƒfƒBƒ^‚âIDE‚Å‚ÌXMLƒ}ƒbƒsƒ“ƒO—v‘f‚Æ‘®«‚̃I[ƒgƒRƒ“ƒvƒŠ[ƒVƒ‡ƒ“‹@”\‚É—˜—p‚Å‚«‚Ü‚·B - ‚Ü‚½DTDƒtƒ@ƒCƒ‹‚ðƒeƒLƒXƒgƒGƒfƒBƒ^‚ÅŠJ‚¯‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B - ‚Æ‚¢‚¤‚Ì‚àA‚·‚ׂĂ̗v‘f‚Æ‘®«‚ðŠTŠÏ‚µA - ƒRƒƒ“ƒg‚âƒfƒtƒHƒ‹ƒg‚Ì’l‚ðŒ©‚é‚ɂ͈ê”ÔŠÈ’P‚È•û–@‚¾‚©‚ç‚Å‚·B - Hibernate‚ÍAweb‚©‚çDTDƒtƒ@ƒCƒ‹‚ðƒ[ƒh‚¹‚¸‚ÉA - ‚Ü‚¸ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Nƒ‰ƒXƒpƒX‚©‚炱‚ê‚ð’T‚µo‚»‚¤‚Æ‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - DTDƒtƒ@ƒCƒ‹‚ÍHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì src/ - ƒfƒBƒŒƒNƒgƒŠ‚Æ“¯—lAhibernate3.jar ‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B + Hibernate DTDãŒéžå¸¸ã«æ´—ç·´ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã«æ³¨ç›®ã—ã¦ãã ã•ã„。 + ã“ã®DTDã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã‚„IDEã§ã®XMLマッピングè¦ç´ ã¨å±žæ€§ã®ã‚ªãƒ¼ãƒˆã‚³ãƒ³ãƒ—リーション機能ã«åˆ©ç”¨ã§ãã¾ã™ã€‚ + ã¾ãŸDTDファイルをテキストエディタã§é–‹ã‘ã¦ã¿ã¦ãã ã•ã„。 + ã¨ã„ã†ã®ã‚‚ã€ã™ã¹ã¦ã®è¦ç´ ã¨å±žæ€§ã‚’概観ã—〠+ コメントやデフォルトã®å€¤ã‚’見るã«ã¯ä¸€ç•ªç°¡å˜ãªæ–¹æ³•ã ã‹ã‚‰ã§ã™ã€‚ + Hibernateã¯ã€webã‹ã‚‰DTDファイルをロードã›ãšã«ã€ + ã¾ãšã‚¢ãƒ—リケーションã®ã‚¯ãƒ©ã‚¹ãƒ‘スã‹ã‚‰ã“れを探ã—出ãã†ã¨ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + DTDファイルã¯Hibernateディストリビューション㮠src/ + ディレクトリã¨åŒæ§˜ã€hibernate3.jar ã«ã‚‚å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ - ˆÈ~‚Ì—á‚ł̓R[ƒh‚ð’Z‚­‚·‚邽‚ß‚ÉDTD錾‚ðÈ—ª‚µ‚Ü‚·B - “–‘R‚Å‚·‚ª‚±‚ê‚̓IƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + 以é™ã®ä¾‹ã§ã¯ã‚³ãƒ¼ãƒ‰ã‚’短ãã™ã‚‹ãŸã‚ã«DTD宣言をçœç•¥ã—ã¾ã™ã€‚ + 当然ã§ã™ãŒã“ã‚Œã¯ã‚ªãƒ—ションã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - 2‚Â‚Ì hibernate-mapping ƒ^ƒO‚ÌŠÔ‚É - class —v‘f‚ðŠÜ‚ß‚Ä‚­‚¾‚³‚¢B - ‚·‚ׂẲi‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXi”O‚ð‰Ÿ‚µ‚Ü‚·‚ªA - ƒtƒ@[ƒXƒgƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚¢ˆË‘¶ƒNƒ‰ƒX‚Æ‚¢‚¤‚à‚Ì‚ªŒã‚Ù‚Ç“oꂵ‚Ü‚·j - ‚ÍSQLƒf[ƒ^ƒx[ƒX“à‚̃e[ƒuƒ‹‚Ö‚Ì‚±‚̂悤‚ȃ}ƒbƒsƒ“ƒO‚ð•K—v‚Æ‚µ‚Ü‚·B + 2ã¤ã® hibernate-mapping ã‚¿ã‚°ã®é–“ã« + class è¦ç´ ã‚’å«ã‚ã¦ãã ã•ã„。 + ã™ã¹ã¦ã®æ°¸ç¶šã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹ï¼ˆå¿µã‚’押ã—ã¾ã™ãŒã€ + ファーストクラスã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã¯ãªã„ä¾å­˜ã‚¯ãƒ©ã‚¹ã¨ã„ã†ã‚‚ã®ãŒå¾Œã»ã©ç™»å ´ã—ã¾ã™ï¼‰ + ã¯SQLデータベース内ã®ãƒ†ãƒ¼ãƒ–ルã¸ã®ã“ã®ã‚ˆã†ãªãƒžãƒƒãƒ”ングを必è¦ã¨ã—ã¾ã™ã€‚ @@ -230,12 +232,12 @@ public class Event { ]]> - ‚±‚ê‚Ü‚ÅŽ„‚½‚¿‚ÍAEvent ƒNƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ð - EVENTS ƒe[ƒuƒ‹‚ɑ΂µ‚ÄA‚ǂ̂悤‚ɉi‘±‰»‚µ‚½‚èƒ[ƒh‚µ‚½‚è‚·‚é‚Ì‚©‚ð - Hibernate‚É‹³‚¦‚Ä‚«‚Ü‚µ‚½B‚»‚µ‚ÄŒÂX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̓e[ƒuƒ‹‚Ìs‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ü‚·B - ‚»‚ê‚ł͈ø‚«‘±‚«ƒe[ƒuƒ‹‚ÌŽåƒL[‚ɑ΂·‚郆ƒj[ƒN‚ÈŽ¯•ÊŽqƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ä‚¢‚«‚Ü‚·B - ‚³‚ç‚ÉA‚±‚ÌŽ¯•ÊŽq‚̈µ‚¢‚É‹C‚ðŽg‚¢‚½‚­‚È‚©‚Á‚½‚Ì‚Æ“¯—l‚ÉA - ‘ã—‚ÌŽåƒL[ƒJƒ‰ƒ€‚ɑ΂·‚éHibernate‚ÌŽ¯•ÊŽq¶¬í—ª‚ðݒ肵‚Ü‚·B + ã“ã‚Œã¾ã§ç§ãŸã¡ã¯ã€Event クラスã®ã‚ªãƒ–ジェクトを + EVENTS テーブルã«å¯¾ã—ã¦ã€ã©ã®ã‚ˆã†ã«æ°¸ç¶šåŒ–ã—ãŸã‚Šãƒ­ãƒ¼ãƒ‰ã—ãŸã‚Šã™ã‚‹ã®ã‹ã‚’ + Hibernateã«æ•™ãˆã¦ãã¾ã—ãŸã€‚ãã—ã¦å€‹ã€…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ãƒ†ãƒ¼ãƒ–ルã®è¡Œã¨ã—ã¦è¡¨ç¾ã•ã‚Œã¾ã™ã€‚ + ãã‚Œã§ã¯å¼•ã続ãテーブルã®ä¸»ã‚­ãƒ¼ã«å¯¾ã™ã‚‹ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªè­˜åˆ¥å­ãƒ—ロパティをマッピングã—ã¦ã„ãã¾ã™ã€‚ + ã•ã‚‰ã«ã€ã“ã®è­˜åˆ¥å­ã®æ‰±ã„ã«æ°—を使ã„ãŸããªã‹ã£ãŸã®ã¨åŒæ§˜ã«ã€ + 代ç†ã®ä¸»ã‚­ãƒ¼ã‚«ãƒ©ãƒ ã«å¯¾ã™ã‚‹Hibernateã®è­˜åˆ¥å­ç”Ÿæˆæˆ¦ç•¥ã‚’設定ã—ã¾ã™ã€‚ @@ -249,21 +251,21 @@ public class Event { ]]> - id —v‘f‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì錾‚Å‚ ‚èA - name="id" ‚ÅJavaƒvƒƒpƒeƒB‚Ì–¼‘O‚ð錾‚µ‚Ü‚·B - Hibernate‚Í‚±‚̃vƒƒpƒeƒB‚ÖƒAƒNƒZƒX‚·‚邽‚߂ɃQƒbƒ^[AƒZƒbƒ^[ƒƒ\ƒbƒh‚ðŽg‚¢‚Ü‚·B - ƒJƒ‰ƒ€‘®«‚Å‚Í EVENTS ƒe[ƒuƒ‹‚̂ǂ̃Jƒ‰ƒ€‚ðŽåƒL[‚Æ‚µ‚ÄŽg‚¤‚Ì‚©‚ð - Hibernate‚É‹³‚¦‚Ü‚·B - “ü‚êŽq‚É‚È‚Á‚Ä‚¢‚é generator —v‘f‚ÍAŽ¯•ÊŽq‚𶬂·‚鎞‚Ìí—ª‚ðŽw’肵‚Ü‚·B - i‚±‚Ì—á‚Å‚Í native ‚ð—p‚¢‚Ü‚µ‚½jB - ‚±‚Ì—v‘f‚ÍAݒ肵‚½ƒf[ƒ^ƒx[ƒXidialectj‚ɑ΂·‚éÅ—Ç‚ÈŽ¯•ÊŽq¶¬í—ª‚ð‘I’è‚·‚é‚à‚Ì‚Å‚·B - Hibernate‚ÍAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å’l‚ðŠ„‚è“–‚Ä‚éí—ªi‚à‚µ‚­‚Í“ÆŽ©‚ÉŠg’£‚µ‚½í—ªj‚Æ“¯—l‚ÉA - ƒOƒ[ƒoƒ‹‚Ƀ†ƒj[ƒN‚È’l‚ðƒf[ƒ^ƒx[ƒX‚ɶ¬‚³‚¹‚éí—ª‚àƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B + id è¦ç´ ã¯è­˜åˆ¥å­ãƒ—ロパティã®å®£è¨€ã§ã‚り〠+ name="id" ã§Javaプロパティã®åå‰ã‚’宣言ã—ã¾ã™ã€‚ + Hibernateã¯ã“ã®ãƒ—ロパティã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ã‚²ãƒƒã‚¿ãƒ¼ã€ã‚»ãƒƒã‚¿ãƒ¼ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã„ã¾ã™ã€‚ + カラム属性ã§ã¯ EVENTS テーブルã®ã©ã®ã‚«ãƒ©ãƒ ã‚’主キーã¨ã—ã¦ä½¿ã†ã®ã‹ã‚’ + Hibernateã«æ•™ãˆã¾ã™ã€‚ + 入れå­ã«ãªã£ã¦ã„ã‚‹ generator è¦ç´ ã¯ã€è­˜åˆ¥å­ã‚’生æˆã™ã‚‹æ™‚ã®æˆ¦ç•¥ã‚’指定ã—ã¾ã™ã€‚ + (ã“ã®ä¾‹ã§ã¯ native を用ã„ã¾ã—ãŸï¼‰ã€‚ + ã“ã®è¦ç´ ã¯ã€è¨­å®šã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ï¼ˆdialect)ã«å¯¾ã™ã‚‹æœ€è‰¯ãªè­˜åˆ¥å­ç”Ÿæˆæˆ¦ç•¥ã‚’é¸å®šã™ã‚‹ã‚‚ã®ã§ã™ã€‚ + Hibernateã¯ã€ã‚¢ãƒ—リケーションã§å€¤ã‚’割り当ã¦ã‚‹æˆ¦ç•¥ï¼ˆã‚‚ã—ãã¯ç‹¬è‡ªã«æ‹¡å¼µã—ãŸæˆ¦ç•¥ï¼‰ã¨åŒæ§˜ã«ã€ + グローãƒãƒ«ã«ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªå€¤ã‚’データベースã«ç”Ÿæˆã•ã›ã‚‹æˆ¦ç•¥ã‚‚サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ - ÅŒã‚ɃNƒ‰ƒX‚̉i‘±ƒvƒƒpƒeƒB‚Ì錾‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Å‚ÍAƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚͉i‘±‚ÆŒ©‚È‚³‚ê‚Ü‚¹‚ñF + 最後ã«ã‚¯ãƒ©ã‚¹ã®æ°¸ç¶šãƒ—ロパティã®å®£è¨€ã‚’マッピングファイルã«å«ã‚ã¾ã™ã€‚ + デフォルトã§ã¯ã€ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティã¯æ°¸ç¶šã¨è¦‹ãªã•ã‚Œã¾ã›ã‚“: ]]> - id —v‘f‚ÌꇂƓ¯—l‚ÉA property —v‘f‚Ì - name ‘®«‚ÅA‚ǂ̃Qƒbƒ^[‚ƃZƒbƒ^[ƒƒ\ƒbƒh‚ðŽg‚¤‚ׂ«‚©‚ðHibernate‚É‹³‚¦‚Ü‚·B - ‚±‚Ì—á‚Å‚ÍAHibernate‚Í getDate()/setDate() ‚Æ getTitle()/setTitle() ‚ð - ’T‚µ‚Ü‚·B + id è¦ç´ ã®å ´åˆã¨åŒæ§˜ã«ã€ property è¦ç´ ã® + name 属性ã§ã€ã©ã®ã‚²ãƒƒã‚¿ãƒ¼ã¨ã‚»ãƒƒã‚¿ãƒ¼ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã†ã¹ãã‹ã‚’Hibernateã«æ•™ãˆã¾ã™ã€‚ + ã“ã®ä¾‹ã§ã¯ã€Hibernate㯠getDate()/setDate() 㨠getTitle()/setTitle() ã‚’ + 探ã—ã¾ã™ã€‚ - ‚È‚º date ƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚É‚Í column - ‘®«‚ª‚ ‚èAtitle ƒvƒƒpƒeƒB‚É‚Í‚È‚¢‚Ì‚Å‚µ‚傤‚©H - column ‘®«‚ª‚È‚¯‚ê‚ÎAHibernate‚̓vƒƒpƒeƒB–¼‚ðƒJƒ‰ƒ€–¼‚Æ‚µ‚ÄŽg‚¢‚Ü‚·B - ‚±‚ê‚Í title ‚Å‚ÍãŽè‚­s‚«‚Ü‚·B - ‚µ‚©‚µ date ‚Í‚Ù‚Æ‚ñ‚ǂ̃f[ƒ^ƒx[ƒX‚Å—\–ñŒê‚È‚Ì‚ÅA - ˆá‚¤–¼‘O‚Ń}ƒbƒsƒ“ƒO‚µ‚½•û‚ª‚æ‚¢‚Ì‚Å‚·B + ãªãœ date プロパティã®ãƒžãƒƒãƒ”ングã«ã¯ column + 属性ãŒã‚ã‚Šã€title プロパティã«ã¯ãªã„ã®ã§ã—ょã†ã‹ï¼Ÿ + column 属性ãŒãªã‘ã‚Œã°ã€Hibernateã¯ãƒ—ロパティåをカラムåã¨ã—ã¦ä½¿ã„ã¾ã™ã€‚ + ã“れ㯠title ã§ã¯ä¸Šæ‰‹ãè¡Œãã¾ã™ã€‚ + ã—ã‹ã— date ã¯ã»ã¨ã‚“ã©ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§äºˆç´„語ãªã®ã§ã€ + é•ã†åå‰ã§ãƒžãƒƒãƒ”ングã—ãŸæ–¹ãŒã‚ˆã„ã®ã§ã™ã€‚ - ŽŸ‚É‹»–¡[‚¢‚Ì‚Í title ƒ}ƒbƒsƒ“ƒO‚ª type - ‘®«‚ð‚àŒ‡‚¢‚Ä‚¢‚é“_‚Å‚·B - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å錾‚µ‚ÄŽg‚¤type‚ÍA‚¨‚í‚©‚è‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªJava‚̃f[ƒ^Œ^‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - SQLƒf[ƒ^ƒx[ƒX‚ÌŒ^‚Å‚à‚ ‚è‚Ü‚¹‚ñB - ‚±‚ê‚Í Hibernateƒ}ƒbƒsƒ“ƒOŒ^ ‚ƌĂ΂ê‚éA - Java‚©‚çSQLƒf[ƒ^‚ÌŒ^‚Ö‚Ü‚½‚ÍSQL‚©‚çJavaƒf[ƒ^Œ^‚Ö–|–ó‚·‚éƒRƒ“ƒo[ƒ^‚Å‚·B - ŒJ‚è•Ô‚µ‚É‚È‚è‚Ü‚·‚ªAHibernate‚Í type ‘®«‚ªƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚É‚È‚¯‚ê‚ÎA - ³‚µ‚¢ƒRƒ“ƒo[ƒWƒ‡ƒ“‚ƃ}ƒbƒsƒ“ƒOŒ^‚ðŽ©•ª‚Å‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B - iJavaƒNƒ‰ƒX‚̃ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚½j‚±‚ÌŽ©“®ŒŸ’m‚ÍA - ꇂɂæ‚Á‚Ä‚Í‚ ‚È‚½‚ªŠú‘Ò‚Ü‚½‚Í•K—v‚Æ‚·‚éƒfƒtƒHƒ‹ƒg’l‚É‚È‚ç‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - date ƒvƒƒpƒeƒB‚Ìꇂª‚»‚¤‚Å‚µ‚½B - Hibernate‚Í‚±‚Ìi java.util.Date ‚ÌjƒvƒƒpƒeƒB‚ð - SQL‚Ì date , timestamp , - time ‚Ì‚¤‚¿A‚ǂ̃Jƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚ׂ«‚È‚Ì‚©‚í‚©‚è‚Ü‚¹‚ñB - timestamp ƒRƒ“ƒo[ƒ^‚ŃvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚É‚æ‚èAŠ®‘S‚È“úŽž‚ð•Û‘¶‚µ‚Ü‚·B + 次ã«èˆˆå‘³æ·±ã„ã®ã¯ title マッピング㌠type + 属性をも欠ã„ã¦ã„る点ã§ã™ã€‚ + マッピングファイルã§å®£è¨€ã—ã¦ä½¿ã†typeã¯ã€ãŠã‚ã‹ã‚Šã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒJavaã®ãƒ‡ãƒ¼ã‚¿åž‹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + SQLデータベースã®åž‹ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。 + ã“れ㯠Hibernateマッピング型 ã¨å‘¼ã°ã‚Œã‚‹ã€ + Javaã‹ã‚‰SQLデータã®åž‹ã¸ã¾ãŸã¯SQLã‹ã‚‰Javaデータ型ã¸ç¿»è¨³ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ã‚¿ã§ã™ã€‚ + ç¹°ã‚Šè¿”ã—ã«ãªã‚Šã¾ã™ãŒã€Hibernate㯠type 属性ãŒãƒžãƒƒãƒ”ングファイル内ã«ãªã‘ã‚Œã°ã€ + æ­£ã—ã„コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãƒžãƒƒãƒ”ング型を自分ã§è§£æ±ºã—よã†ã¨ã—ã¾ã™ã€‚ + (Javaクラスã®ãƒªãƒ•ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã£ãŸï¼‰ã“ã®è‡ªå‹•æ¤œçŸ¥ã¯ã€ + å ´åˆã«ã‚ˆã£ã¦ã¯ã‚ãªãŸãŒæœŸå¾…ã¾ãŸã¯å¿…è¦ã¨ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«ãªã‚‰ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + date プロパティã®å ´åˆãŒãã†ã§ã—ãŸã€‚ + Hibernateã¯ã“ã®ï¼ˆ java.util.Date ã®ï¼‰ãƒ—ロパティを + SQLã® date , timestamp , + time ã®ã†ã¡ã€ã©ã®ã‚«ãƒ©ãƒ ã«ãƒžãƒƒãƒ”ングã™ã‚‹ã¹ããªã®ã‹ã‚ã‹ã‚Šã¾ã›ã‚“。 + timestamp コンãƒãƒ¼ã‚¿ã§ãƒ—ロパティをマッピングã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€å®Œå…¨ãªæ—¥æ™‚ã‚’ä¿å­˜ã—ã¾ã™ã€‚ - ‚±‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÍAEvent.hbm.xml ‚Æ‚µ‚Ä Event - JavaƒNƒ‰ƒXƒ\[ƒXƒtƒ@ƒCƒ‹‚Ì‚·‚®—ׂɃZ[ƒu‚·‚é‚ׂ«‚Å‚·B - ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ì–½–¼•û–@‚Í”CˆÓ‚Å‚·‚ªAhbm.xml - ƒTƒtƒBƒbƒNƒX‚ªHibernate‚ÌŠJ”­ŽÒ‚̃Rƒ~ƒ…ƒjƒeƒB“à‚Å‚ÌKŠµ‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B - Œ»ÝƒfƒBƒŒƒNƒgƒŠ\‘¢‚Í‚±‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F + ã“ã®ãƒžãƒƒãƒ”ングファイルã¯ã€Event.hbm.xml ã¨ã—㦠Event + Javaクラスソースファイルã®ã™ã隣ã«ã‚»ãƒ¼ãƒ–ã™ã‚‹ã¹ãã§ã™ã€‚ + マッピングファイルã®å‘½å方法ã¯ä»»æ„ã§ã™ãŒã€hbm.xml + サフィックスãŒHibernateã®é–‹ç™ºè€…ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£å†…ã§ã®ç¿’æ…£ã¨ãªã£ã¦ã„ã¾ã™ã€‚ + ç¾åœ¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ§‹é€ ã¯ã“ã®ã‚ˆã†ã«ãªã£ã¦ã„ã‚‹ã¯ãšã§ã™ï¼š - Hibernate‚ÌŽå—v‚ÈÝ’è‚𑱂¯‚Ü‚·B + Hibernateã®ä¸»è¦ãªè¨­å®šã‚’続ã‘ã¾ã™ã€‚ - Hibernate‚ÌÝ’è + Hibernateã®è¨­å®š - ‚±‚±‚܂łʼni‘±ƒNƒ‰ƒX‚ƃ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ª‘µ‚¢‚Ü‚µ‚½B‚±‚ê‚©‚çHibernate‚ÌÝ’è‚ðs‚¢‚Ü‚·‚ªA - ‚»‚Ì‘O‚Ƀf[ƒ^ƒx[ƒX‚ª•K—v‚Å‚·B - HSQL DB‚ÍJavaƒx[ƒX‚̃Cƒ“ƒƒ‚ƒŠSQL DBMS‚Å‚ ‚èAHSQL DBƒEƒFƒuƒTƒCƒg‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B - ŽÀۂɂ̓_ƒEƒ“ƒ[ƒh‚µ‚½’†‚Ì hsqldb.jar ‚¾‚¯‚ª•K—v‚Å‚·B - ‚±‚̃tƒ@ƒCƒ‹‚ðŠJ”­ƒtƒHƒ‹ƒ_‚Ì lib/ ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B + ã“ã“ã¾ã§ã§æ°¸ç¶šã‚¯ãƒ©ã‚¹ã¨ãƒžãƒƒãƒ”ングファイルãŒæƒã„ã¾ã—ãŸã€‚ã“ã‚Œã‹ã‚‰Hibernateã®è¨­å®šã‚’è¡Œã„ã¾ã™ãŒã€ + ãã®å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒå¿…è¦ã§ã™ã€‚ + HSQL DBã¯Javaベースã®ã‚¤ãƒ³ãƒ¡ãƒ¢ãƒªSQL DBMSã§ã‚ã‚Šã€HSQL DBウェブサイトã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚ + 実際ã«ã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸä¸­ã® hsqldb.jar ã ã‘ãŒå¿…è¦ã§ã™ã€‚ + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’開発フォルダ㮠lib/ ディレクトリã«é…ç½®ã—ã¦ãã ã•ã„。 - data ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚ðŠJ”­ƒfƒBƒŒƒNƒgƒŠ‚̃‹[ƒg‚É쬂µ‚Ä‚­‚¾‚³‚¢B - HSQL DB‚Í‚±‚±‚Ƀf[ƒ^ƒtƒ@ƒCƒ‹‚ðŠi”[‚µ‚Ü‚·B - ‚±‚̃f[ƒ^ƒfƒBƒŒƒNƒgƒŠ‚É‚¨‚¢‚Ä java -classpath lib/hsqldb.jar org.hsqldb.Server ‚ðŽÀs‚µA - ƒf[ƒ^ƒx[ƒX‚ð‹N“®‚³‚¹‚Ä‚­‚¾‚³‚¢B - “®ì‚ÌŠJŽn‚ÆATCP/IPƒ\ƒPƒbƒg‚̃oƒCƒ“ƒh‚ªŠm”F‚Å‚«‚Ü‚·B - Œã‚Ù‚Ç쬂·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í‚±‚±‚ÉÚ‘±‚µ‚Ü‚·B - ‚à‚µ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹’†‚Ƀf[ƒ^ƒx[ƒX‚ð‰Šú‰»‚µ‚½‚¯‚ê‚ÎA - HSQL DB‚ðƒVƒƒƒbƒgƒ_ƒEƒ“‚µ‚Äiì‹ÆƒEƒBƒ“ƒhƒE‚Å CTRL + C ‚ð‰Ÿ‚µ‚Ü‚·j - data/ ƒfƒBƒŒƒNƒgƒŠ“à‚̃tƒ@ƒCƒ‹‚ð‘S‚ÄÁ‹Ž‚µ‚½ŒãA - HSQL DB‚ðÄ‹N“®‚µ‚Ü‚·B + data ã¨ã„ã†ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’開発ディレクトリã®ãƒ«ãƒ¼ãƒˆã«ä½œæˆã—ã¦ãã ã•ã„。 + HSQL DBã¯ã“ã“ã«ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ ¼ç´ã—ã¾ã™ã€‚ + ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„㦠java -classpath lib/hsqldb.jar org.hsqldb.Server を実行ã—〠+ データベースを起動ã•ã›ã¦ãã ã•ã„。 + 動作ã®é–‹å§‹ã¨ã€TCP/IPソケットã®ãƒã‚¤ãƒ³ãƒ‰ãŒç¢ºèªã§ãã¾ã™ã€‚ + 後ã»ã©ä½œæˆã™ã‚‹ã‚¢ãƒ—リケーションã¯ã“ã“ã«æŽ¥ç¶šã—ã¾ã™ã€‚ + ã‚‚ã—ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ä¸­ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åˆæœŸåŒ–ã—ãŸã‘ã‚Œã°ã€ + HSQL DBをシャットダウンã—ã¦ï¼ˆä½œæ¥­ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§ CTRL + C を押ã—ã¾ã™ï¼‰ + data/ ディレクトリ内ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…¨ã¦æ¶ˆåŽ»ã—ãŸå¾Œã€ + HSQL DBã‚’å†èµ·å‹•ã—ã¾ã™ã€‚ - Hibernate‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃f[ƒ^ƒx[ƒX‚ÉÚ‘±‚·‚é‘w‚È‚Ì‚ÅA - ƒRƒlƒNƒVƒ‡ƒ“‚Ìî•ñ‚ª•K—v‚É‚È‚è‚Ü‚·B - ƒRƒlƒNƒVƒ‡ƒ“‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ð’Ê‚¶‚Äs‚í‚ê‚Ü‚·‚ªA‚±‚ê‚àÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚É‚Í‚¢‚­‚‚©‚̃I[ƒvƒ“ƒ\[ƒX‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒc[ƒ‹‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·‚ªA - ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚Å‚ÍHibernate‚É‘g‚Ýž‚܂ꂽƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðŽg‚¢‚Ü‚·B - ‚à‚µ»•iƒŒƒxƒ‹‚Ì•iŽ¿‚̃T[ƒhƒp[ƒeƒBJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒ\ƒtƒgƒEƒFƒA‚ðŽg‚¢‚½‚¯‚ê‚ÎA - ƒNƒ‰ƒXƒpƒX‚É•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚ðƒRƒs[‚µ‚ÄAˆÙ‚È‚éƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðݒ肵‚È‚¯‚ê‚Î - ‚È‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B + Hibernateã¯ã‚¢ãƒ—リケーションã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹å±¤ãªã®ã§ã€ + コãƒã‚¯ã‚·ãƒ§ãƒ³ã®æƒ…å ±ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + コãƒã‚¯ã‚·ãƒ§ãƒ³ã¯JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールを通ã˜ã¦è¡Œã‚ã‚Œã¾ã™ãŒã€ã“れも設定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernateディストリビューションã«ã¯ã„ãã¤ã‹ã®ã‚ªãƒ¼ãƒ—ンソースã®JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールツールãŒå«ã¾ã‚Œã¦ã„ã¾ã™ãŒã€ + ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§ã¯Hibernateã«çµ„ã¿è¾¼ã¾ã‚ŒãŸã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールを使ã„ã¾ã™ã€‚ + ã‚‚ã—製å“レベルã®å“質ã®ã‚µãƒ¼ãƒ‰ãƒ‘ーティJDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールソフトウェアを使ã„ãŸã‘ã‚Œã°ã€ + クラスパスã«å¿…è¦ãªãƒ©ã‚¤ãƒ–ラリをコピーã—ã¦ã€ç•°ãªã‚‹ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールを設定ã—ãªã‘れ㰠+ ãªã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - Hibernate‚ÌÝ’è‚Å‚ÍA’Pƒ‚È hibernate.properties ƒtƒ@ƒCƒ‹A - ‚»‚ê‚æ‚è­‚µô—û‚³‚ê‚Ä‚¢‚é hibernate.cfg.xml ƒtƒ@ƒCƒ‹A - ‚Ü‚½‚ÍŠ®‘S‚ɃvƒƒOƒ‰ƒ€ã‚ŃZƒbƒgƒAƒbƒv‚·‚é•û–@‚ª—˜—p‚Å‚«‚Ü‚·B - ‚Ù‚Æ‚ñ‚ǂ̃†[ƒU‚ªD‚Þ‚Ì‚ÍXMLÝ’èƒtƒ@ƒCƒ‹‚Å‚·F + Hibernateã®è¨­å®šã§ã¯ã€å˜ç´”㪠hibernate.properties ファイル〠+ ãれより少ã—æ´—ç·´ã•ã‚Œã¦ã„ã‚‹ hibernate.cfg.xml ファイル〠+ ã¾ãŸã¯å®Œå…¨ã«ãƒ—ログラム上ã§ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã™ã‚‹æ–¹æ³•ãŒåˆ©ç”¨ã§ãã¾ã™ã€‚ + ã»ã¨ã‚“ã©ã®ãƒ¦ãƒ¼ã‚¶ãŒå¥½ã‚€ã®ã¯XML設定ファイルã§ã™ï¼š @@ -417,51 +419,51 @@ public class Event { ]]> - ‚±‚ÌXML‚Ìݒ肪ˆÙ‚È‚éDTD‚ðŽg‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - “Á’è‚̃f[ƒ^ƒx[ƒX‚ðŽó‚¯Ž‚ƒOƒ[ƒoƒ‹ƒtƒ@ƒNƒgƒŠ‚Å‚ ‚éHibernate‚Ì - SessionFactory ‚ðݒ肵‚Ü‚·B - ‚à‚µ•¡”‚̃f[ƒ^ƒx[ƒX‚ª‚ ‚éꇂɂÍA - iƒXƒ^[ƒgƒAƒbƒv‚ðŠÈ’P‚É‚·‚邽‚ßj’Êí‚¢‚­‚‚©‚ÌÝ’èƒtƒ@ƒCƒ‹“à‚ÅA - ‚¢‚­‚‚©‚Ì <session-factory> ‚ðŽg‚¤Ý’è‚É‚µ‚Ä‚­‚¾‚³‚¢B + ã“ã®XMLã®è¨­å®šãŒç•°ãªã‚‹DTDを使ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + 特定ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å—ã‘æŒã¤ã‚°ãƒ­ãƒ¼ãƒãƒ«ãƒ•ã‚¡ã‚¯ãƒˆãƒªã§ã‚ã‚‹Hibernateã® + SessionFactory を設定ã—ã¾ã™ã€‚ + ã‚‚ã—複数ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚ã‚‹å ´åˆã«ã¯ã€ + (スタートアップを簡å˜ã«ã™ã‚‹ãŸã‚)通常ã„ãã¤ã‹ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«å†…ã§ã€ + ã„ãã¤ã‹ã® <session-factory> を使ã†è¨­å®šã«ã—ã¦ãã ã•ã„。 - ʼn‚Ì4‚Â‚Ì property —v‘f‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“‚É•K—v‚ÈÝ’è‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B - dialect‚Æ‚¢‚¤–¼‘O‚Ì property —v‘f‚ÍAHibernate‚ª¶¬‚·‚é“Á’è‚ÌSQL•ûŒ¾‚ðŽw’肵‚Ü‚·B - ‰i‘±“I‚ȃRƒ“ƒeƒLƒXƒg‚ɑ΂·‚éHibernate‚̃ZƒbƒVƒ‡ƒ“‚ÌŽ©“®ŠÇ—‚ÍAŒã‚Ì—á‚Å‚·‚®‚É‚í‚©‚é‚悤‚ÉA–ð‚É—§‚‚±‚Æ‚Å‚µ‚傤B - hbm2ddl.auto ƒIƒvƒVƒ‡ƒ“‚̓f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ÌŽ©“®¶¬‚ðon‚É‚µ‚Ü‚·B - ‚±‚ê‚Í’¼Úƒf[ƒ^ƒx[ƒX‚ɑ΂µ‚Ķ¬‚³‚ê‚Ü‚·B - “–‘RiconfigƒIƒvƒVƒ‡ƒ“‚ð휂µ‚Äjoff‚É‚µ‚½‚èA - SchemaExport ‚Æ‚¢‚¤Antƒ^ƒXƒN‚Ì•‚¯‚ðŽØ‚è‚ătƒ@ƒCƒ‹‚ɃŠƒ_ƒCƒŒƒNƒg‚µ‚½‚è‚Å‚«‚Ü‚·B - ÅŒã‚ɉi‘±ƒNƒ‰ƒX‚Ì‚½‚߂̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðÝ’è‚ɒljÁ‚µ‚Ü‚·B + 最åˆã®4ã¤ã® property è¦ç´ ã¯JDBCコãƒã‚¯ã‚·ãƒ§ãƒ³ã«å¿…è¦ãªè¨­å®šã‚’å«ã‚“ã§ã„ã¾ã™ã€‚ + dialectã¨ã„ã†åå‰ã® property è¦ç´ ã¯ã€HibernateãŒç”Ÿæˆã™ã‚‹ç‰¹å®šã®SQL方言を指定ã—ã¾ã™ã€‚ + 永続的ãªã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã«å¯¾ã™ã‚‹Hibernateã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®è‡ªå‹•ç®¡ç†ã¯ã€å¾Œã®ä¾‹ã§ã™ãã«ã‚ã‹ã‚‹ã‚ˆã†ã«ã€å½¹ã«ç«‹ã¤ã“ã¨ã§ã—ょã†ã€‚ + hbm2ddl.auto オプションã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã®è‡ªå‹•ç”Ÿæˆã‚’onã«ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ç›´æŽ¥ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã—ã¦ç”Ÿæˆã•ã‚Œã¾ã™ã€‚ + 当然(configオプションを削除ã—ã¦ï¼‰offã«ã—ãŸã‚Šã€ + SchemaExport ã¨ã„ã†Antタスクã®åŠ©ã‘を借りã¦ãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ãŸã‚Šã§ãã¾ã™ã€‚ + 最後ã«æ°¸ç¶šã‚¯ãƒ©ã‚¹ã®ãŸã‚ã®ãƒžãƒƒãƒ”ングファイルを設定ã«è¿½åŠ ã—ã¾ã™ã€‚ - ‚±‚̃tƒ@ƒCƒ‹‚ðƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B - ‚·‚é‚Æ‚±‚ê‚̓Nƒ‰ƒXƒpƒX‚̃‹[ƒg‚É‚ ‚邱‚Æ‚É‚È‚è‚Ü‚·B - Hibernate‚ÍAƒXƒ^[ƒgƒAƒbƒvŽž‚ɃNƒ‰ƒXƒpƒX‚̃‹[ƒg‚Å hibernate.cfg.xml - ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ðŽ©“®“I‚É’T‚µ‚Ü‚·B + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ソースディレクトリã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„。 + ã™ã‚‹ã¨ã“ã‚Œã¯ã‚¯ãƒ©ã‚¹ãƒ‘スã®ãƒ«ãƒ¼ãƒˆã«ã‚ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ + Hibernateã¯ã€ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—時ã«ã‚¯ãƒ©ã‚¹ãƒ‘スã®ãƒ«ãƒ¼ãƒˆã§ hibernate.cfg.xml + ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’自動的ã«æŽ¢ã—ã¾ã™ã€‚ - Ant‚É‚æ‚éƒrƒ‹ƒh + Antã«ã‚ˆã‚‹ãƒ“ルド - ‚»‚ê‚Å‚ÍAnt‚ðŽg‚Á‚ă`ƒ…[ƒgƒŠƒAƒ‹‚ðƒrƒ‹ƒh‚µ‚Ü‚µ‚傤B - ‚»‚ê‚É‚ÍAnt‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Antƒ_ƒEƒ“ƒ[ƒhƒy[ƒW - ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B - Ant‚̃Cƒ“ƒXƒg[ƒ‹•û–@‚Í‚±‚±‚Å‚Íà–¾‚µ‚Ü‚¹‚ñ‚Ì‚ÅA - Antƒ}ƒjƒ…ƒAƒ‹ - ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - Ant‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚ê‚ÎAƒrƒ‹ƒhƒtƒ@ƒCƒ‹‚Ì쬂ðŠJŽn‚Å‚«‚Ü‚·B - ‚±‚̃tƒ@ƒCƒ‹‚Í build.xml ‚ƌĂ΂êAŠJ”­ƒfƒBƒŒƒNƒgƒŠ‚É’¼Ú”z’u‚µ‚Ü‚·B + ãã‚Œã§ã¯Antを使ã£ã¦ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’ビルドã—ã¾ã—ょã†ã€‚ + ãã‚Œã«ã¯AntãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Antダウンロードページ + ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。 + Antã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã¯ã“ã“ã§ã¯èª¬æ˜Žã—ã¾ã›ã‚“ã®ã§ã€ + Antマニュアル + ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + Antをインストールã™ã‚Œã°ã€ãƒ“ルドファイルã®ä½œæˆã‚’開始ã§ãã¾ã™ã€‚ + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ build.xml ã¨å‘¼ã°ã‚Œã€é–‹ç™ºãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç›´æŽ¥é…ç½®ã—ã¾ã™ã€‚ - Šî–{“I‚ȃrƒ‹ƒhƒtƒ@ƒCƒ‹‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·F + 基本的ãªãƒ“ルドファイルã¯ã“ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼š @@ -498,21 +500,21 @@ public class Event { ]]> - ‚±‚ê‚Í .jar ‚ÅI‚í‚élibƒfƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂẴtƒ@ƒCƒ‹‚ðA - ƒRƒ“ƒpƒCƒ‹‚ÉŽg—p‚·‚éƒNƒ‰ƒXƒpƒX‚ɒljÁ‚·‚邱‚Æ‚ðAnt‚É‹³‚¦‚Ü‚·B - ‚Ü‚½AJavaƒ\[ƒXƒtƒ@ƒCƒ‹‚Å‚È‚¢‚·‚ׂẴtƒ@ƒCƒ‹‚ðƒ^[ƒQƒbƒgƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚à‚ ‚è‚Ü‚·B - —Ⴆ‚ÎÝ’èƒtƒ@ƒCƒ‹‚âHibernateƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚È‚Ç‚Å‚·B - ¡Ant‚ðŽÀs‚·‚é‚ÆA‚±‚̂悤‚Èo—Í‚ª‚ ‚é‚Í‚¸‚Å‚·F + ã“れ㯠.jar ã§çµ‚ã‚ã‚‹libディレクトリã®ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’〠+ コンパイルã«ä½¿ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¹ãƒ‘スã«è¿½åŠ ã™ã‚‹ã“ã¨ã‚’Antã«æ•™ãˆã¾ã™ã€‚ + ã¾ãŸã€Javaソースファイルã§ãªã„ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ターゲットディレクトリã«ã‚³ãƒ”ーã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã‚‚ã‚ã‚Šã¾ã™ã€‚ + 例ãˆã°è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚„Hibernateマッピングファイルãªã©ã§ã™ã€‚ + 今Antを実行ã™ã‚‹ã¨ã€ã“ã®ã‚ˆã†ãªå‡ºåŠ›ãŒã‚ã‚‹ã¯ãšã§ã™ï¼š - ant + ant Buildfile: build.xml copy-resources: - [copy] Copying 2 files to C:\hibernateTutorial\bin + [copy] Copying 2 files to C:Â¥hibernateTutorialÂ¥bin compile: - [javac] Compiling 1 source file to C:\hibernateTutorial\bin + [javac] Compiling 1 source file to C:Â¥hibernateTutorialÂ¥bin BUILD SUCCESSFUL Total time: 1 second ]]> @@ -520,24 +522,24 @@ Total time: 1 second ]]> - ƒXƒ^[ƒgƒAƒbƒv‚ƃwƒ‹ƒp + スタートアップã¨ãƒ˜ãƒ«ãƒ‘ - ‚³‚Ä Event ƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µ‚½‚èŠi”[‚µ‚½‚è‚·‚途õ‚ª‚Å‚«‚Ü‚µ‚½B - ‚µ‚©‚µ‚Ü‚¸‚̓Cƒ“ƒtƒ‰ƒXƒgƒ‰ƒNƒ`ƒƒ‚̃R[ƒh‚ð‘‚¢‚ÄAƒZƒbƒgƒAƒbƒv‚ðŠ®—¹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - ‚Ü‚¸‚ÍHibernate‚ðƒXƒ^[ƒgƒAƒbƒv‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‚±‚̃Xƒ^[ƒgƒAƒbƒv‚É‚ÍAƒOƒ[ƒoƒ‹‚Ì SessionFactory ƒIƒuƒWƒFƒNƒg‚𶬂µ‚ÄA - ‚»‚ê‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚ŃAƒNƒZƒX‚µ‚â‚·‚¢êŠ‚ÉŠi”[‚·‚邱‚Æ‚ªŠÜ‚Ü‚ê‚Ü‚·B - SessionFactory ‚ÍV‚µ‚­ Session ‚ðƒI[ƒvƒ“‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - Session ‚̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Ìì‹Æ’PˆÊ(Unit of Work)‚ð•\Œ»‚µ‚Ü‚·B - ‚»‚ê‚ɑ΂µSessionFactory ‚̓XƒŒƒbƒhƒZ[ƒt‚̃Oƒ[ƒoƒ‹ƒIƒuƒWƒFƒNƒg‚Å‚ ‚èA - ˆê“x‚¾‚¯ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ê‚Ü‚·B + ã•ã¦ Event オブジェクトをロードã—ãŸã‚Šæ ¼ç´ã—ãŸã‚Šã™ã‚‹æº–å‚™ãŒã§ãã¾ã—ãŸã€‚ + ã—ã‹ã—ã¾ãšã¯ã‚¤ãƒ³ãƒ•ãƒ©ã‚¹ãƒˆãƒ©ã‚¯ãƒãƒ£ã®ã‚³ãƒ¼ãƒ‰ã‚’書ã„ã¦ã€ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—を完了ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + ã¾ãšã¯Hibernateをスタートアップã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + ã“ã®ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ã«ã¯ã€ã‚°ãƒ­ãƒ¼ãƒãƒ«ã® SessionFactory オブジェクトを生æˆã—ã¦ã€ + ãれをアプリケーションã®ã‚³ãƒ¼ãƒ‰ã§ã‚¢ã‚¯ã‚»ã‚¹ã—ã‚„ã™ã„場所ã«æ ¼ç´ã™ã‚‹ã“ã¨ãŒå«ã¾ã‚Œã¾ã™ã€‚ + SessionFactory ã¯æ–°ã—ã Session をオープンã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + Session ã¯ã‚·ãƒ³ã‚°ãƒ«ã‚¹ãƒ¬ãƒƒãƒ‰ã®ä½œæ¥­å˜ä½(Unit of Work)を表ç¾ã—ã¾ã™ã€‚ + ãã‚Œã«å¯¾ã—SessionFactory ã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ã®ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトã§ã‚り〠+ 一度ã ã‘インスタンス化ã•ã‚Œã¾ã™ã€‚ - ‚±‚±‚ŃXƒ^[ƒgƒAƒbƒv‚ðs‚¢A •Ö—˜‚É SessionFactory ‚ÖƒAƒNƒZƒX‚·‚é - HibernateUtil ƒwƒ‹ƒpƒNƒ‰ƒX‚ð쬂µ‚Ü‚·B - ŽÀ‘•‚ðŒ©‚Ä‚Ý‚Ü‚µ‚傤F + ã“ã“ã§ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ã‚’è¡Œã„〠便利㫠SessionFactory ã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ + HibernateUtil ヘルパクラスを作æˆã—ã¾ã™ã€‚ + 実装を見ã¦ã¿ã¾ã—ょã†ï¼š - ‚±‚̃Nƒ‰ƒX‚ÍÓI‰Šú‰»ƒuƒƒbƒNiƒNƒ‰ƒX‚ªƒ[ƒh‚³‚ê‚é‚Æ‚«‚ÉJVM‚É‚æ‚Á‚Ĉê“x‚¾‚¯ŒÄ‚΂ê‚éj - ‚ŃOƒ[ƒoƒ‹‚Ì SessionFactory ‚𶬂·‚邾‚¯‚Å‚Í‚È‚­A - ÓIƒVƒ“ƒOƒ‹ƒgƒ“‚ÌŽg—p‚ð‰B•Á‚µ‚Ü‚·B - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ÌJNDI‚©‚ç SessionFactory ‚ð - ƒ‹ƒbƒNƒAƒbƒv‚·‚é‚Ì‚Æ“¯—l‚Å‚·B + ã“ã®ã‚¯ãƒ©ã‚¹ã¯é™çš„åˆæœŸåŒ–ブロック(クラスãŒãƒ­ãƒ¼ãƒ‰ã•ã‚Œã‚‹ã¨ãã«JVMã«ã‚ˆã£ã¦ä¸€åº¦ã ã‘呼ã°ã‚Œã‚‹ï¼‰ + ã§ã‚°ãƒ­ãƒ¼ãƒãƒ«ã® SessionFactory を生æˆã™ã‚‹ã ã‘ã§ã¯ãªã〠+ é™çš„シングルトンã®ä½¿ç”¨ã‚’隠蔽ã—ã¾ã™ã€‚ + アプリケーションサーãƒãƒ¼ã®JNDIã‹ã‚‰ SessionFactory ã‚’ + ルックアップã™ã‚‹ã®ã¨åŒæ§˜ã§ã™ã€‚ - Ý’èƒtƒ@ƒCƒ‹“à‚Å SessionFactory ‚É–¼‘O‚ð—^‚¦‚é‚ÆA - Hibernate‚Í SessionFactory \’zŒã‚ÉJNDI‚ɑ΂µƒoƒCƒ“ƒh‚ðs‚¨‚¤‚Æ‚µ‚Ü‚·B - ‚±‚̃R[ƒh‚ðŠ®‘S‚É”rœ‚·‚邽‚ß‚É‚ÍA - JMXƒfƒvƒƒCƒƒ“ƒg‚ð—˜—p‚µ‚Ä - JMX‚ð—˜—p‚Å‚«‚éƒRƒ“ƒeƒi‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µA - HibernateService ‚ðJNDI‚ÖƒoƒCƒ“ƒh‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ‚±‚ê‚ç‚Ì‚“x‚ȃIƒvƒVƒ‡ƒ“‚ÍAHibernate‚̃Šƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚Åà–¾‚³‚ê‚Ä‚¢‚Ü‚·B + 設定ファイル内㧠SessionFactory ã«åå‰ã‚’与ãˆã‚‹ã¨ã€ + Hibernate㯠SessionFactory 構築後ã«JNDIã«å¯¾ã—ãƒã‚¤ãƒ³ãƒ‰ã‚’è¡ŒãŠã†ã¨ã—ã¾ã™ã€‚ + ã“ã®ã‚³ãƒ¼ãƒ‰ã‚’完全ã«æŽ’除ã™ã‚‹ãŸã‚ã«ã¯ã€ + JMXデプロイメントを利用ã—㦠+ JMXを利用ã§ãるコンテナをインスタンス化ã—〠+ HibernateService ã‚’JNDIã¸ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã“れらã®é«˜åº¦ãªã‚ªãƒ—ションã¯ã€Hibernateã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã§èª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚ - HibernateUtil.java ‚ðŠJ”­ƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚é events ƒpƒbƒP[ƒW‚Ì - —ׂɔz’u‚µ‚Ä‚­‚¾‚³‚¢B + HibernateUtil.java を開発ソースディレクトリã«ã‚ã‚‹ events パッケージ㮠+ 隣ã«é…ç½®ã—ã¦ãã ã•ã„。 - ‚±‚ê‚Í–â‘è‚È‚­ÄƒRƒ“ƒpƒCƒ‹‚Å‚«‚é‚Í‚¸‚Å‚·B - ÅŒã‚ɃƒMƒ“ƒOƒVƒXƒeƒ€‚ðÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - Hibernate‚Ícommons logging‚ðŽg‚¤‚½‚ßALog4j‚ÆJDK 1.4 logging‚Ì‘I‘ð‚ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB - ‚Ù‚Æ‚ñ‚Ç‚ÌŠJ”­ŽÒ‚ªD‚Þ‚Ì‚ÍLog4j‚Å‚·B - HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“i‚Ìetc/ ƒfƒBƒŒƒNƒgƒŠj‚©‚ç - log4j.properties ‚ð‚ ‚È‚½‚Ì src ƒfƒBƒŒƒNƒgƒŠ“à‚Ì - hibernate.cfg.xml ‚ׂ̗ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B - Ý’è—á‚ðŒ©‚ÄAç’·‚Èo—Í‚ª‚悯‚ê‚ÎÝ’è‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢B - ƒfƒtƒHƒ‹ƒg‚Å‚ÍHibernate‚̃Xƒ^[ƒgƒAƒbƒvƒƒbƒZ[ƒW‚¾‚¯‚ª•W€o—Í‚É•\Ž¦‚³‚ê‚Ü‚·B + ã“ã‚Œã¯å•é¡Œãªãå†ã‚³ãƒ³ãƒ‘イルã§ãã‚‹ã¯ãšã§ã™ã€‚ + 最後ã«ãƒ­ã‚®ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã‚’設定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + Hibernateã¯commons loggingを使ã†ãŸã‚ã€Log4jã¨JDK 1.4 loggingã®é¸æŠžã‚’ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã›ã‚“。 + ã»ã¨ã‚“ã©ã®é–‹ç™ºè€…ãŒå¥½ã‚€ã®ã¯Log4jã§ã™ã€‚ + Hibernateディストリビューション(ã®etc/ ディレクトリ)ã‹ã‚‰ + log4j.properties ã‚’ã‚ãªãŸã® src ディレクトリ内㮠+ hibernate.cfg.xml ã®éš£ã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„。 + 設定例を見ã¦ã€å†—é•·ãªå‡ºåŠ›ãŒã‚ˆã‘ã‚Œã°è¨­å®šã‚’変更ã—ã¦ãã ã•ã„。 + デフォルトã§ã¯Hibernateã®ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—メッセージã ã‘ãŒæ¨™æº–出力ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ - ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃Cƒ“ƒtƒ‰‚ÍŠ®‘S‚Å‚·B - Hibernate‚ðŽg‚Á‚ÄŽÀÛ‚Ìì‹Æ‚ð‚·‚é€”õ‚ª®‚¢‚Ü‚µ‚½B + ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã®ã‚¤ãƒ³ãƒ•ãƒ©ã¯å®Œå…¨ã§ã™ã€‚ + Hibernateを使ã£ã¦å®Ÿéš›ã®ä½œæ¥­ã‚’ã™ã‚‹æº–å‚™ãŒæ•´ã„ã¾ã—ãŸã€‚ - ƒIƒuƒWƒFƒNƒg‚̃[ƒh‚ÆŠi”[ + オブジェクトã®ãƒ­ãƒ¼ãƒ‰ã¨æ ¼ç´ - ‚‚¢‚ɃIƒuƒWƒFƒNƒg‚̃[ƒh‚ÆŠi”[‚ÉHibernate‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - main() ƒƒ\ƒbƒh‚ðŽ‚ EventManager - ƒNƒ‰ƒX‚ð‘‚«‚Ü‚·F + ã¤ã„ã«ã‚ªãƒ–ジェクトã®ãƒ­ãƒ¼ãƒ‰ã¨æ ¼ç´ã«Hibernateを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + main() メソッドをæŒã¤ EventManager + クラスを書ãã¾ã™ï¼š - V‚µ‚¢ Event ƒIƒuƒWƒFƒNƒg‚𶬂µA‚»‚ê‚ðHibernate‚É“n‚µ‚Ü‚·B - ¡‚Å‚ÍHibernate‚ªSQL‚ðˆ—‚µAƒf[ƒ^ƒx[ƒX‚Å INSERT ‚ðŽÀs‚µ‚Ü‚·B - ŽÀs‘O‚É Session ‚Æ Transaction - ‚ðˆ—‚·‚éƒR[ƒh‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B + æ–°ã—ã„ Event オブジェクトを生æˆã—ã€ãれをHibernateã«æ¸¡ã—ã¾ã™ã€‚ + 今ã§ã¯HibernateãŒSQLを処ç†ã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ INSERT を実行ã—ã¾ã™ã€‚ + 実行å‰ã« Session 㨠Transaction + を処ç†ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’確èªã—ã¦ãã ã•ã„。 - Session ‚Í1‚‚Ìì‹Æ’PˆÊ(Unit of Work)‚Å‚·B - “–•ª‚ÌŠÔA˜b‚ðŠÈ’P‚É‚·‚邽‚ß‚ÉA - Session ‚Æ Transaction ‚̑Ήž‚ðˆê‘Έê‚Ɖ¼’肵‚Ü‚·B - Žg—p‚µ‚Ä‚¢‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“EƒVƒXƒeƒ€i‚±‚̃P[ƒX‚Å‚ÍJTA‚Æ‹¤‘¶‚Å‚«‚é’Pƒ‚ÈJDBCj‚©‚çƒR[ƒh‚ð•ÛŒì‚·‚邽‚ß‚ÉA - Hibernate Session ã‚Å—˜—p‰Â”\‚È Transaction API‚ðŽg—p‚µ‚Ü‚·B + Session ã¯1ã¤ã®ä½œæ¥­å˜ä½(Unit of Work)ã§ã™ã€‚ + 当分ã®é–“ã€è©±ã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚ã«ã€ + Session 㨠Transaction ã®å¯¾å¿œã‚’一対一ã¨ä»®å®šã—ã¾ã™ã€‚ + 使用ã—ã¦ã„るトランザクション・システム(ã“ã®ã‚±ãƒ¼ã‚¹ã§ã¯JTAã¨å…±å­˜ã§ãã‚‹å˜ç´”ãªJDBC)ã‹ã‚‰ã‚³ãƒ¼ãƒ‰ã‚’ä¿è­·ã™ã‚‹ãŸã‚ã«ã€ + Hibernate Session 上ã§åˆ©ç”¨å¯èƒ½ãª Transaction APIを使用ã—ã¾ã™ã€‚ - sessionFactory.getCurrentSession() ‚Í‚È‚É‚ð‚·‚é‚Ì‚Å‚µ‚傤‚©H - ‚Ü‚¸A‚¢‚Á‚½‚ñ SessionFactory ‚ðŽæ“¾‚µ•ÛŽ‚·‚ê‚Î - i HibernateUtil ‚Ì‚¨‚©‚°‚ÅŠÈ’P‚Å‚·jA‚±‚̃ƒ\ƒbƒh‚ð‰½“x‚Å‚àA - ‚Ç‚±‚©‚ç‚Å‚àŒÄ‚Ño‚·‚±‚Æ‚ªo—ˆ‚Ü‚·B - getCurrentSession() ƒƒ\ƒbƒh‚Íí‚ÉuŒ»Ý‚Ìvì‹Æ’PˆÊ(Unit of Work)‚ð•Ô‚µ‚Ü‚·B - hibernate.cfg.xml ‚Ì‚±‚Ì‹@”\‚ÌÝ’è‚ÅA"thread"‚ðŽw’肵‚½‚±‚Æ‚ðŽv‚¢o‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚Ì‚½‚ߌ»Ý‚Ìì‹Æ’PˆÊ‚̃XƒR[ƒv‚ÍA‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚·‚錻݂ÌJavaƒXƒŒƒbƒh‚Å‚·B - ‚µ‚©‚µ‚±‚ê‚Å‘S‚Ä‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - Session ‚Íʼn‚É•K—v‚Æ‚È‚Á‚½‚Æ‚«A‚‚܂èʼn‚É getCurrentSession() ‚ª - ŒÄ‚΂ꂽ‚Æ‚«‚ÉŠJŽn‚µ‚Ü‚·B - ‚»‚Ì‚Æ‚«Hibernate‚É‚æ‚茻݂̃XƒŒƒbƒh‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ü‚·B - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªI—¹iƒRƒ~ƒbƒg‚à‚µ‚­‚̓[ƒ‹ƒoƒbƒNj‚µ‚½‚Æ‚«A - Hibernate‚àƒXƒŒƒbƒh‚©‚ç Session ‚ðØ‚è—£‚µAƒNƒ[ƒY‚µ‚Ü‚·B - Ä‚Ñ getCurrentSession() ‚ðŒÄ‚Ô‚ÆA - V‚µ‚¢ Session ‚ðŽæ“¾‚µ‚ÄV‚µ‚¢ì‹Æ’PˆÊ‚ðƒXƒ^[ƒg‚Å‚«‚Ü‚·B - ‚±‚Ì thread-bound ƒvƒƒOƒ‰ƒ~ƒ“ƒOEƒ‚ƒfƒ‹‚ÍHibernate‚ð—˜—p‚·‚éã‚ÅÅ‚àl‹C‚ª‚ ‚è‚Ü‚·B + sessionFactory.getCurrentSession() ã¯ãªã«ã‚’ã™ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ + ã¾ãšã€ã„ã£ãŸã‚“ SessionFactory ã‚’å–å¾—ã—ä¿æŒã™ã‚Œã° + ( HibernateUtil ã®ãŠã‹ã’ã§ç°¡å˜ã§ã™ï¼‰ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’何度ã§ã‚‚〠+ ã©ã“ã‹ã‚‰ã§ã‚‚呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ + getCurrentSession() メソッドã¯å¸¸ã«ã€Œç¾åœ¨ã®ã€ä½œæ¥­å˜ä½(Unit of Work)ã‚’è¿”ã—ã¾ã™ã€‚ + hibernate.cfg.xml ã®ã“ã®æ©Ÿèƒ½ã®è¨­å®šã§ã€"thread"を指定ã—ãŸã“ã¨ã‚’æ€ã„出ã—ã¦ãã ã•ã„。 + ã“ã®ãŸã‚ç¾åœ¨ã®ä½œæ¥­å˜ä½ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯ã€ã“ã®ã‚¢ãƒ—リケーションを実行ã™ã‚‹ç¾åœ¨ã®Javaスレッドã§ã™ã€‚ + ã—ã‹ã—ã“ã‚Œã§å…¨ã¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + Session ã¯æœ€åˆã«å¿…è¦ã¨ãªã£ãŸã¨ãã€ã¤ã¾ã‚Šæœ€åˆã« getCurrentSession() ㌠+ 呼ã°ã‚ŒãŸã¨ãã«é–‹å§‹ã—ã¾ã™ã€‚ + ãã®ã¨ãHibernateã«ã‚ˆã‚Šç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«çµã³ä»˜ã‘られã¾ã™ã€‚ + トランザクションãŒçµ‚了(コミットもã—ãã¯ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ï¼‰ã—ãŸã¨ã〠+ Hibernateもスレッドã‹ã‚‰ Session を切り離ã—ã€ã‚¯ãƒ­ãƒ¼ã‚ºã—ã¾ã™ã€‚ + å†ã³ getCurrentSession() を呼ã¶ã¨ã€ + æ–°ã—ã„ Session ã‚’å–å¾—ã—ã¦æ–°ã—ã„作業å˜ä½ã‚’スタートã§ãã¾ã™ã€‚ + ã“ã® thread-bound プログラミング・モデルã¯Hibernateを利用ã™ã‚‹ä¸Šã§æœ€ã‚‚人気ãŒã‚ã‚Šã¾ã™ã€‚ - ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̈µ‚¢‚Æ‹«ŠE‚ÌÚ‚µ‚¢î•ñ‚ɂ‚¢‚Ä‚ÍA - ‚ðŒ©‚Ä‚­‚¾‚³‚¢B - ‚±‚Ì—á‚ł̓Gƒ‰[ˆ—‚âƒ[ƒ‹ƒoƒbƒN‚àŠ„ˆ¤‚µ‚Ü‚·B + トランザクションã®æ‰±ã„ã¨å¢ƒç•Œã®è©³ã—ã„情報ã«ã¤ã„ã¦ã¯ã€ + を見ã¦ãã ã•ã„。 + ã“ã®ä¾‹ã§ã¯ã‚¨ãƒ©ãƒ¼å‡¦ç†ã‚„ロールãƒãƒƒã‚¯ã‚‚割愛ã—ã¾ã™ã€‚ - ‚±‚Ìʼn‚̃‹[ƒ`ƒ“‚ðŽÀs‚·‚é‚É‚ÍAAnt‚̃rƒ‹ƒhƒtƒ@ƒCƒ‹‚ɌĂÑo‚µ‰Â”\‚ȃ^[ƒQƒbƒg‚ð - ’ljÁ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñF + ã“ã®æœ€åˆã®ãƒ«ãƒ¼ãƒãƒ³ã‚’実行ã™ã‚‹ã«ã¯ã€Antã®ãƒ“ルドファイルã«å‘¼ã³å‡ºã—å¯èƒ½ãªã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’ + 追加ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“: @@ -719,29 +721,29 @@ public class EventManager { ]]> - action ˆø”‚Ì’l‚ÍAƒ^[ƒQƒbƒg‚ðŒÄ‚Ô‚Æ‚«‚ɃRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Åݒ肵‚Ü‚·F + action 引数ã®å€¤ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’呼ã¶ã¨ãã«ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§è¨­å®šã—ã¾ã™ï¼š - ant run -Daction=store]]> + ant run -Daction=store]]> - ƒRƒ“ƒpƒCƒ‹‚·‚é‚ÆAHibernate‚ªƒXƒ^[ƒg‚µA‚ ‚È‚½‚ÌÝ’è‚É‚æ‚è‚Ü‚·‚ªA - ‘½‚­‚̃ƒOo—Í‚ª‚ ‚é‚Í‚¸‚Å‚·B - ‚»‚ÌÅŒã‚ɂ͈ȉº‚Ìs‚ª‚ ‚é‚Å‚µ‚傤F + コンパイルã™ã‚‹ã¨ã€HibernateãŒã‚¹ã‚¿ãƒ¼ãƒˆã—ã€ã‚ãªãŸã®è¨­å®šã«ã‚ˆã‚Šã¾ã™ãŒã€ + 多ãã®ãƒ­ã‚°å‡ºåŠ›ãŒã‚ã‚‹ã¯ãšã§ã™ã€‚ + ãã®æœ€å¾Œã«ã¯ä»¥ä¸‹ã®è¡ŒãŒã‚ã‚‹ã§ã—ょã†ï¼š - ‚±‚ê‚ÍHibernate‚ªŽÀs‚·‚é INSERT ‚ÅA - ƒNƒGƒXƒ`ƒ‡ƒ“ƒ}[ƒN‚ÍJDBCƒoƒCƒ“ƒhƒpƒ‰ƒ[ƒ^‚ð•\‚µ‚Ä‚¢‚Ü‚·B - ˆø”‚Æ‚µ‚ăoƒCƒ“ƒh‚³‚ê‚é’l‚ðŒ©‚é‚½‚ßA‚ ‚é‚¢‚̓ƒO‚Ìç’·«‚ðŒ¸‚ç‚·‚½‚ß‚É‚ÍA - log4j.properties ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B + ã“ã‚Œã¯HibernateãŒå®Ÿè¡Œã™ã‚‹ INSERT ã§ã€ + クエスãƒãƒ§ãƒ³ãƒžãƒ¼ã‚¯ã¯JDBCãƒã‚¤ãƒ³ãƒ‰ãƒ‘ラメータを表ã—ã¦ã„ã¾ã™ã€‚ + 引数ã¨ã—ã¦ãƒã‚¤ãƒ³ãƒ‰ã•ã‚Œã‚‹å€¤ã‚’見るãŸã‚ã€ã‚ã‚‹ã„ã¯ãƒ­ã‚°ã®å†—長性を減らã™ãŸã‚ã«ã¯ã€ + log4j.properties ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。 - ‚»‚ê‚Å‚Í“¯‚¶‚悤‚ÉŠi”[‚³‚ꂽƒCƒxƒ“ƒg‚̈ꗗ‚ðŒ©‚æ‚¤‚ÆŽv‚¢‚Ü‚·B - ‚»‚Ì‚½‚߃ƒCƒ“ƒƒ\ƒbƒh‚ɃIƒvƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ü‚·F + ãã‚Œã§ã¯åŒã˜ã‚ˆã†ã«æ ¼ç´ã•ã‚ŒãŸã‚¤ãƒ™ãƒ³ãƒˆã®ä¸€è¦§ã‚’見よã†ã¨æ€ã„ã¾ã™ã€‚ + ãã®ãŸã‚メインメソッドã«ã‚ªãƒ—ションを追加ã—ã¾ã™ï¼š - V‚µ‚¢ listEvents()ƒƒ\ƒbƒh ‚à’ljÁ‚µ‚Ü‚·B + æ–°ã—ã„ listEvents()メソッド も追加ã—ã¾ã™ã€‚ - ‚±‚±‚Å‚·‚邱‚Æ‚ÍAƒf[ƒ^ƒx[ƒX‚©‚瑶݂·‚é‚·‚×‚Ä‚Ì Event - ƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚éHQL (Hibernate Query Language) ƒNƒGƒŠ‚ðŽg‚¤‚±‚Æ‚Å‚·B - Hibernate‚Í“KØ‚ÈSQL‚𶬂µA‚»‚ê‚ðƒf[ƒ^ƒx[ƒX‚É‘—‚èA - ‚»‚̃f[ƒ^‚ðŽg‚Á‚Ä Event ƒIƒuƒWƒFƒNƒg‚𶬂µ‚Ü‚·B - “–‘RHQL‚Å‚³‚ç‚É•¡ŽG‚ȃNƒGƒŠ‚ð쬂ł«‚Ü‚·B + ã“ã“ã§ã™ã‚‹ã“ã¨ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰å­˜åœ¨ã™ã‚‹ã™ã¹ã¦ã® Event + オブジェクトをロードã™ã‚‹HQL (Hibernate Query Language) クエリを使ã†ã“ã¨ã§ã™ã€‚ + Hibernateã¯é©åˆ‡ãªSQLを生æˆã—ã€ãれをデータベースã«é€ã‚Šã€ + ãã®ãƒ‡ãƒ¼ã‚¿ã‚’使ã£ã¦ Event オブジェクトを生æˆã—ã¾ã™ã€‚ + 当然HQLã§ã•ã‚‰ã«è¤‡é›‘ãªã‚¯ã‚¨ãƒªã‚’作æˆã§ãã¾ã™ã€‚ - ˆÈ‰º‚̃Xƒeƒbƒv‚ÅA‚·‚ׂĂ̎Às‚ƃeƒXƒg‚ðs‚¢‚Ü‚·B + 以下ã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã€ã™ã¹ã¦ã®å®Ÿè¡Œã¨ãƒ†ã‚¹ãƒˆã‚’è¡Œã„ã¾ã™ã€‚ - hbm2ddl‚ð’Ê‚·‘O‚Ƀf[ƒ^ƒx[ƒX‚̃f[ƒ^‚ð쬂µAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚𶬂·‚邽‚ß‚ÉA - ant run -Daction=store ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B + hbm2ddlを通ã™å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ãƒ¼ã‚¿ã‚’作æˆã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã‚’生æˆã™ã‚‹ãŸã‚ã«ã€ + ant run -Daction=store を実行ã—ã¦ãã ã•ã„。 - ¡‚Í hibernate.cfg.xml ƒtƒ@ƒCƒ‹‚̃vƒƒpƒeƒB‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ähbm2ddl‚𖳌ø‚É‚µ‚Ä‚­‚¾‚³‚¢B - ’Êí‚ÍŒp‘±“I‚É’P‘̃eƒXƒg‚ð‚µ‚Ä‚¢‚éŠÔ‚Íhbm2ddl‚ð—LŒø‚É‚µ‚Ä‚¨‚­‚Ì‚Å‚·‚ªA - ‚»‚êˆÈŠO‚ÌꇂÉhbm2ddl‚ð‹N“®‚·‚é‚ÆŠi”[‚µ‚Ä‚¨‚¢‚½‘S‚Ẵf[ƒ^‚ð ƒhƒƒbƒv ‚·‚é‚Å‚µ‚傤B - Ý’è‚ð create ‚É‚·‚é‚ÆAŒ‹‰Ê‚Æ‚µ‚Ä - uSessionFactory¶¬‚ÌÛAƒXƒL[ƒ}‚©‚ç‘S‚Ẵe[ƒuƒ‹‚ðƒhƒƒbƒv‚µ‚ÄÄ쬂·‚év‚Æ‚¢‚¤Ý’è‚É‚È‚è‚Ü‚·B + 今㯠hibernate.cfg.xml ファイルã®ãƒ—ロパティをコメントアウトã—ã¦hbm2ddlを無効ã«ã—ã¦ãã ã•ã„。 + 通常ã¯ç¶™ç¶šçš„ã«å˜ä½“テストをã—ã¦ã„ã‚‹é–“ã¯hbm2ddlを有効ã«ã—ã¦ãŠãã®ã§ã™ãŒã€ + ãれ以外ã®å ´åˆã«hbm2ddlã‚’èµ·å‹•ã™ã‚‹ã¨æ ¼ç´ã—ã¦ãŠã„ãŸå…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’ ドロップ ã™ã‚‹ã§ã—ょã†ã€‚ + 設定を create ã«ã™ã‚‹ã¨ã€çµæžœã¨ã—㦠+ 「SessionFactory生æˆã®éš›ã€ã‚¹ã‚­ãƒ¼ãƒžã‹ã‚‰å…¨ã¦ã®ãƒ†ãƒ¼ãƒ–ルをドロップã—ã¦å†ä½œæˆã™ã‚‹ã€ã¨ã„ã†è¨­å®šã«ãªã‚Šã¾ã™ã€‚ - ¡ -Daction=list ‚ÆŽw’肵‚ÄAnt‚ðŒÄ‚Ô‚ÆA - ‚±‚ê‚Ü‚ÅŠi”[‚µ‚½ƒCƒxƒ“ƒg‚ªŒ©‚¦‚é‚Í‚¸‚Å‚·B - store ƒAƒNƒVƒ‡ƒ“‚ð”‰ñˆÈãŒÄ‚Ô‚±‚Æ‚à‰Â”\‚Å‚·B + 今 -Daction=list ã¨æŒ‡å®šã—ã¦Antを呼ã¶ã¨ã€ + ã“ã‚Œã¾ã§æ ¼ç´ã—ãŸã‚¤ãƒ™ãƒ³ãƒˆãŒè¦‹ãˆã‚‹ã¯ãšã§ã™ã€‚ + store アクションを数回以上呼ã¶ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ - ’ˆÓF‰‚ß‚ÄHibernate‚ÉG‚ê‚élX‚Ì‘½‚­‚ª‚±‚±‚ÅŽ¸”s‚·‚邽‚ßATable not found ƒGƒ‰[ƒƒbƒZ[ƒW‚É - ŠÖ‚·‚鎿–â‚ð’èŠú“I‚ÉŒ©‚©‚¯‚Ü‚·B - ‚µ‚©‚µã‹L‚̃Xƒeƒbƒv‚É]‚¦‚ÎAhbm2ddl‚ªÅ‰‚ÉŽÀs‚³‚ꂽ‚Æ‚«‚Ƀf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ð쬂µA - ‚»‚ÌŒã‚ÌŽÀs‚É‚¨‚¢‚Ä‚à‚±‚̃XƒL[ƒ}‚ðŽg—p‚·‚é‚Ì‚ÅA–â‘è‚Í‹N‚±‚ç‚È‚¢‚Å‚µ‚傤B - ƒ}ƒbƒsƒ“ƒO‚âƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ð•ÏX‚µ‚½‚Æ‚«‚ÍA‚à‚¤ˆê“xhbm2ddl‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B + 注æ„:åˆã‚ã¦Hibernateã«è§¦ã‚Œã‚‹äººã€…ã®å¤šããŒã“ã“ã§å¤±æ•—ã™ã‚‹ãŸã‚ã€Table not found エラーメッセージ㫠+ é–¢ã™ã‚‹è³ªå•ã‚’定期的ã«è¦‹ã‹ã‘ã¾ã™ã€‚ + ã—ã‹ã—上記ã®ã‚¹ãƒ†ãƒƒãƒ—ã«å¾“ãˆã°ã€hbm2ddlãŒæœ€åˆã«å®Ÿè¡Œã•ã‚ŒãŸã¨ãã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã‚’作æˆã—〠+ ãã®å¾Œã®å®Ÿè¡Œã«ãŠã„ã¦ã‚‚ã“ã®ã‚¹ã‚­ãƒ¼ãƒžã‚’使用ã™ã‚‹ã®ã§ã€å•é¡Œã¯èµ·ã“らãªã„ã§ã—ょã†ã€‚ + マッピングやデータベーススキーマを変更ã—ãŸã¨ãã¯ã€ã‚‚ã†ä¸€åº¦hbm2ddlを有効ã«ã—ã¦ãã ã•ã„。 @@ -822,19 +824,19 @@ else if (args[0].equals("list")) { - ƒp[ƒg2 - ŠÖ˜A‚̃}ƒbƒsƒ“ƒO + パート2 - 関連ã®ãƒžãƒƒãƒ”ング - ‰i‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ðƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚½B - ‚³‚ç‚É‚±‚Ìã‚É‚¢‚­‚‚©‚̃Nƒ‰ƒX‚ÌŠÖ˜A‚ð’ljÁ‚µ‚Ü‚µ‚傤B - ‚Ü‚¸‰‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉlX‚ð’ljÁ‚µA”ނ炪ŽQ‰Á‚·‚éƒCƒxƒ“ƒg‚̃ŠƒXƒg‚ðŠi”[‚µ‚Ü‚·B + 永続エンティティクラスをテーブルã«ãƒžãƒƒãƒ”ングã—ã¾ã—ãŸã€‚ + ã•ã‚‰ã«ã“ã®ä¸Šã«ã„ãã¤ã‹ã®ã‚¯ãƒ©ã‚¹ã®é–¢é€£ã‚’追加ã—ã¾ã—ょã†ã€‚ + ã¾ãšåˆã‚ã«ã‚¢ãƒ—リケーションã«äººã€…を追加ã—ã€å½¼ã‚‰ãŒå‚加ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒªã‚¹ãƒˆã‚’æ ¼ç´ã—ã¾ã™ã€‚ - PersonƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO + Personクラスã®ãƒžãƒƒãƒ”ング - ʼn‚Ì Person ƒNƒ‰ƒX‚Í’Pƒ‚Å‚·F + 最åˆã® Person クラスã¯å˜ç´”ã§ã™ï¼š - Person.hbm.xml ‚Æ‚¢‚¤V‚µ‚¢ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð쬂µ‚Ä‚­‚¾‚³‚¢ - iƒtƒ@ƒCƒ‹‚Ìʼn‚ÉDTD‚Ö‚ÌŽQÆ‚ð–Y‚ꂸ‚É“ü‚ê‚Ä‚­‚¾‚³‚¢jF + Person.hbm.xml ã¨ã„ã†æ–°ã—ã„マッピングファイルを作æˆã—ã¦ãã ã•ã„ + (ファイルã®æœ€åˆã«DTDã¸ã®å‚照を忘れãšã«å…¥ã‚Œã¦ãã ã•ã„): @@ -871,33 +873,33 @@ public class Person { ]]> - ÅŒã‚ÉHibernate‚ÌÝ’è‚ÉV‚µ‚¢ƒ}ƒbƒsƒ“ƒO‚ð’ljÁ‚µ‚Ä‚­‚¾‚³‚¢F + 最後ã«Hibernateã®è¨­å®šã«æ–°ã—ã„マッピングを追加ã—ã¦ãã ã•ã„: ]]> - ‚»‚ê‚Å‚Í‚±‚ê‚ç2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚ÌŠÖ˜A‚ð쬂µ‚Ü‚·B - lX‚ªƒCƒxƒ“ƒg‚ÉŽQ‰Á‚Å‚«AƒCƒxƒ“ƒg‚ªŽQ‰ÁŽÒ‚ðŽ‚‚͖̂¾‚ç‚©‚Å‚·B - ˆµ‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢ÝŒv‚Ì–â‘è‚ÍA•ûŒüA‘½d“xAƒRƒŒƒNƒVƒ‡ƒ“‚ÌU‚é•‘‚¢‚Å‚·B + ãã‚Œã§ã¯ã“れら2ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£é–“ã®é–¢é€£ã‚’作æˆã—ã¾ã™ã€‚ + 人々ãŒã‚¤ãƒ™ãƒ³ãƒˆã«å‚加ã§ãã€ã‚¤ãƒ™ãƒ³ãƒˆãŒå‚加者をæŒã¤ã®ã¯æ˜Žã‚‰ã‹ã§ã™ã€‚ + 扱ã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„設計ã®å•é¡Œã¯ã€æ–¹å‘ã€å¤šé‡åº¦ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æŒ¯ã‚‹èˆžã„ã§ã™ã€‚ - ’P•ûŒüSetƒx[ƒXŠÖ˜A + å˜æ–¹å‘Setベース関連 - ƒCƒxƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ð Person ƒNƒ‰ƒX‚ɒljÁ‚µ‚Ü‚·B - ‚±‚¤‚µ‚Ä‚¨‚­‚ÆA–¾Ž¦“I‚ȃNƒGƒŠA‚‚܂è‚í‚´‚í‚´aPerson.getEvents()‚ðŒÄ‚Ño‚³‚¸‚ÉA - “Á’è‚Ìl‚É•R•t‚­ƒCƒxƒ“ƒg‚ðŠÈ’P‚ɃiƒrƒQ[ƒg‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - Ž„‚½‚¿‚ÍJava‚̃RƒŒƒNƒVƒ‡ƒ“ASet ‚ðŽg‚¢‚Ü‚·B - ƒRƒŒƒNƒVƒ‡ƒ“‚Íd•¡—v‘f‚ðŽ‚½‚È‚¢‚µA‡”Ô‚ÍŽ„‚½‚¿‚ɂ͈Ӗ¡‚ª‚È‚¢‚©‚ç‚Å‚·B + イベントã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ Person クラスã«è¿½åŠ ã—ã¾ã™ã€‚ + ã“ã†ã—ã¦ãŠãã¨ã€æ˜Žç¤ºçš„ãªã‚¯ã‚¨ãƒªã€ã¤ã¾ã‚Šã‚ã–ã‚ã–aPerson.getEvents()を呼ã³å‡ºã•ãšã«ã€ + 特定ã®äººã«ç´ä»˜ãイベントを簡å˜ã«ãƒŠãƒ“ゲートã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ç§ãŸã¡ã¯Javaã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã€Set を使ã„ã¾ã™ã€‚ + コレクションã¯é‡è¤‡è¦ç´ ã‚’æŒãŸãªã„ã—ã€é †ç•ªã¯ç§ãŸã¡ã«ã¯æ„味ãŒãªã„ã‹ã‚‰ã§ã™ã€‚ - Set ‚ÅŽÀ‘•‚³‚ê‚é’P•ûŒüA‘½’lŠÖ˜A‚ª•K—v‚Å‚·B - JavaƒNƒ‰ƒX“à‚ɑΉž‚·‚éƒR[ƒh‚ð‘‚¢‚ă}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤F + Set ã§å®Ÿè£…ã•ã‚Œã‚‹å˜æ–¹å‘ã€å¤šå€¤é–¢é€£ãŒå¿…è¦ã§ã™ã€‚ + Javaクラス内ã«å¯¾å¿œã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’書ã„ã¦ãƒžãƒƒãƒ”ングã—ã¾ã—ょã†ï¼š - ‚±‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‘O‚ÉA”½‘Α¤‚ɂ‚¢‚Äl‚¦‚Ä‚­‚¾‚³‚¢B - –¾‚ç‚©‚È‚±‚Æ‚Å‚·‚ªA¡‚Í‚±‚ê‚ð’P•ûŒü‚É‚µ‚½‚¾‚¯‚Å‚·B - ‹t‚ÉA Event ‘¤‚É‚à•Ê‚̃RƒŒƒNƒVƒ‡ƒ“‚ðì‚邱‚Æ‚à‚Å‚«‚Ü‚·B - —Ⴆ‚Î anEvent.getParticipants() ‚̂悤‚ÉA - ‘o•ûŒü‚ɃiƒrƒQ[ƒg‚µ‚½‚¯‚ê‚ÎA‚»‚¤‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ‚±‚ê‚Í‹@”\“I‚É‚Ý‚Ä•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB - “Á’è‚̃Cƒxƒ“ƒg‚ÉŠÖŒW‚·‚éƒf[ƒ^‚ðŽæ“¾‚·‚é–¾Šm‚ȃNƒGƒŠ‚ðA‚¢‚‚łàŽÀs‚·‚邱‚Æ‚ªo—ˆ‚Ü‚µ‚½B - ‚±‚ÌÝŒv‚Ì‘I‘ð‚ÍŠJ”­ŽÒ‚É”C‚³‚ê‚Ä‚¢‚ÄA‚±‚Ì‹c˜_‚É‚æ‚è–¾‚ç‚©‚È‚Ì‚ÍŠÖ˜A‚Ì‘½d“x‚Å‚·B - ‚‚܂藼‘¤‚ðu‘½v’l‚É‚·‚éA ‘½‘Α½ ‚ƌĂ΂ê‚éŠÖ˜A‚Å‚·B - ‚»‚Ì‚½‚ßHibernate‚Ìmany-to-manyƒ}ƒbƒsƒ“ƒO‚ðŽg‚¢‚Ü‚·F + ã“ã®é–¢é€£ã‚’マッピングã™ã‚‹å‰ã«ã€å対å´ã«ã¤ã„ã¦è€ƒãˆã¦ãã ã•ã„。 + 明らã‹ãªã“ã¨ã§ã™ãŒã€ä»Šã¯ã“れをå˜æ–¹å‘ã«ã—ãŸã ã‘ã§ã™ã€‚ + 逆ã«ã€ Event å´ã«ã‚‚別ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’作るã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + 例ãˆã° anEvent.getParticipants() ã®ã‚ˆã†ã«ã€ + åŒæ–¹å‘ã«ãƒŠãƒ“ゲートã—ãŸã‘ã‚Œã°ã€ãã†ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã“ã‚Œã¯æ©Ÿèƒ½çš„ã«ã¿ã¦å¿…è¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + 特定ã®ã‚¤ãƒ™ãƒ³ãƒˆã«é–¢ä¿‚ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹æ˜Žç¢ºãªã‚¯ã‚¨ãƒªã‚’ã€ã„ã¤ã§ã‚‚実行ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã—ãŸã€‚ + ã“ã®è¨­è¨ˆã®é¸æŠžã¯é–‹ç™ºè€…ã«ä»»ã•ã‚Œã¦ã„ã¦ã€ã“ã®è­°è«–ã«ã‚ˆã‚Šæ˜Žã‚‰ã‹ãªã®ã¯é–¢é€£ã®å¤šé‡åº¦ã§ã™ã€‚ + ã¤ã¾ã‚Šä¸¡å´ã‚’「多ã€å€¤ã«ã™ã‚‹ã€ 多対多 ã¨å‘¼ã°ã‚Œã‚‹é–¢é€£ã§ã™ã€‚ + ãã®ãŸã‚Hibernateã®many-to-manyマッピングを使ã„ã¾ã™ï¼š @@ -942,21 +944,21 @@ public class Person { ]]> - Hibernate‚Í‚ ‚è‚Æ‚ ‚ç‚ä‚éŽí—ނ̃RƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·‚ªA - Å‚àˆê”Ê“I‚È‚à‚Ì‚ª <set> ‚Å‚·B - ‘½‘Α½ŠÖ˜Ai‚Ü‚½‚Í n:m ƒGƒ“ƒeƒBƒeƒBƒŠƒŒ[ƒVƒ‡ƒ“ƒVƒbƒvj‚É‚ÍA - ŠÖ˜Aƒe[ƒuƒ‹‚ª•K—v‚Å‚·B - ‚±‚̃e[ƒuƒ‹‚Ì‚»‚ꂼ‚ê‚Ìs‚ÍAl‚ƃCƒxƒ“ƒgŠÔ‚̃Šƒ“ƒN‚ð•\Œ»‚µ‚Ü‚·B - ƒe[ƒuƒ‹–¼‚Í set —v‘f‚Ì table ‘®«‚Åݒ肵‚Ü‚·B - l‘¤‚ÌŠÖ˜A‚ÌŽ¯•ÊŽqƒJƒ‰ƒ€–¼‚Í <key> —v‘f‚ÅA - ƒCƒxƒ“ƒg‘¤‚̃Jƒ‰ƒ€–¼‚Í <many-to-many> ‚Ì column - ‘®«‚Å’è‹`‚µ‚Ü‚·B - Hibernate‚ɃRƒŒƒNƒVƒ‡ƒ“‚̃IƒuƒWƒFƒNƒg‚̃Nƒ‰ƒX - i³Šm‚É‚ÍAŽQƂ̃RƒŒƒNƒVƒ‡ƒ“‚Ì”½‘Α¤‚̃Nƒ‰ƒXj‚ð‹³‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + Hibernateã¯ã‚ã‚Šã¨ã‚らゆる種類ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒžãƒƒãƒ”ングをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ãŒã€ + 最も一般的ãªã‚‚ã®ãŒ <set> ã§ã™ã€‚ + 多対多関連(ã¾ãŸã¯ n:m エンティティリレーションシップ)ã«ã¯ã€ + 関連テーブルãŒå¿…è¦ã§ã™ã€‚ + ã“ã®ãƒ†ãƒ¼ãƒ–ルã®ãã‚Œãžã‚Œã®è¡Œã¯ã€äººã¨ã‚¤ãƒ™ãƒ³ãƒˆé–“ã®ãƒªãƒ³ã‚¯ã‚’表ç¾ã—ã¾ã™ã€‚ + テーブルå㯠set è¦ç´ ã® table 属性ã§è¨­å®šã—ã¾ã™ã€‚ + 人å´ã®é–¢é€£ã®è­˜åˆ¥å­ã‚«ãƒ©ãƒ å㯠<key> è¦ç´ ã§ã€ + イベントå´ã®ã‚«ãƒ©ãƒ å㯠<many-to-many> ã® column + 属性ã§å®šç¾©ã—ã¾ã™ã€‚ + Hibernateã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚ªãƒ–ジェクトã®ã‚¯ãƒ©ã‚¹ + (正確ã«ã¯ã€å‚ç…§ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®å対å´ã®ã‚¯ãƒ©ã‚¹ï¼‰ã‚’æ•™ãˆãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 - ‚»‚Ì‚½‚ß‚±‚̃}ƒbƒsƒ“ƒO‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·BF + ãã®ãŸã‚ã“ã®ãƒžãƒƒãƒ”ングã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚: - ŠÖ˜A‚ð“­‚©‚¹‚é + 関連をåƒã‹ã›ã‚‹ - EventManager ‚ÌV‚µ‚¢ƒƒ\ƒbƒh‚ÅlX‚ƃCƒxƒ“ƒg‚ðˆê‚É‚µ‚Ü‚µ‚傤F + EventManager ã®æ–°ã—ã„メソッドã§äººã€…ã¨ã‚¤ãƒ™ãƒ³ãƒˆã‚’一緒ã«ã—ã¾ã—ょã†ï¼š - Person ‚Æ Event ‚ðƒ[ƒh‚µ‚½ŒãA - •’ʂ̃RƒŒƒNƒVƒ‡ƒ“ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä’Pƒ‚É‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ðC³‚µ‚Ä‚­‚¾‚³‚¢B - ‚²——‚Ì‚Æ‚¨‚è update() ‚â save() - ‚Ì–¾Ž¦“I‚ȌĂÑo‚µ‚Í‚ ‚è‚Ü‚¹‚ñB - Hibernate‚ÍAC³‚³‚ꂽ‚±‚Æ‚É‚æ‚èXV‚·‚é•K—v‚Ì‚ ‚éƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ©“®“I‚ÉŒŸ’m‚µ‚Ü‚·B - ‚±‚ê‚Í Ž©“®ƒ_[ƒeƒBƒ`ƒFƒbƒN ‚ƌĂ΂êA - ƒIƒuƒWƒFƒNƒg‚Ì–¼‘O‚âdateƒvƒƒpƒeƒB‚ðC³‚·‚邱‚Æ‚ÅŽŽ‚·‚±‚Æ‚à‰Â”\‚Å‚·B - ‚»‚ê‚炪 ‰i‘± ó‘Ô‚É‚ ‚éŒÀ‚èA - ‚‚܂è“Á’è‚ÌHibernate Session ‚ɃoƒCƒ“ƒh‚³‚ê‚Ä‚¢‚éŒÀ‚è - i—Ⴆ‚Îì‹Æ’PˆÊ(Unit of Work)‚Ì’†‚Å’P‚Ƀ[ƒh‚Ü‚½‚̓Z[ƒu‚³‚ꂽjA - Hibernate‚Í‚Ç‚ñ‚È•ÏX‚àƒ‚ƒjƒ^[‚µA’x‰„‘‚«ž‚Ý(write-behind)‚ÅSQL‚ðŽÀs‚µ‚Ü‚·B - ’ÊíAì‹Æ’PˆÊ(Unit of Work)‚ÌÅŒã‚É‚¾‚¯s‚í‚ê‚éƒf[ƒ^ƒx[ƒX‚ƃƒ‚ƒŠ‚Ìó‘Ԃ𓯊ú‚³‚¹‚鈗‚ÍA - ƒtƒ‰ƒbƒVƒ… ‚ƌĂ΂ê‚Ü‚·B - ‚±‚̃R[ƒh‚Å‚ÍAì‹Æ’PˆÊ(Unit of Work)‚̓f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃Rƒ~ƒbƒgi‚à‚µ‚­‚̓[ƒ‹ƒoƒbƒNj‚ÅI—¹‚µ‚Ü‚·B - ‚±‚ê‚ÍA CurrentSessionContext ƒNƒ‰ƒX‚ɑ΂µ‚Ä thread ‚ðݒ肵‚½‚½‚ß‚Å‚·B + Person 㨠Event をロードã—ãŸå¾Œã€ + 普通ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã£ã¦å˜ç´”ã«ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’修正ã—ã¦ãã ã•ã„。 + ã”覧ã®ã¨ãŠã‚Š update() ã‚„ save() + ã®æ˜Žç¤ºçš„ãªå‘¼ã³å‡ºã—ã¯ã‚ã‚Šã¾ã›ã‚“。 + Hibernateã¯ã€ä¿®æ­£ã•ã‚ŒãŸã“ã¨ã«ã‚ˆã‚Šæ›´æ–°ã™ã‚‹å¿…è¦ã®ã‚るコレクションを自動的ã«æ¤œçŸ¥ã—ã¾ã™ã€‚ + ã“れ㯠自動ダーティãƒã‚§ãƒƒã‚¯ ã¨å‘¼ã°ã‚Œã€ + オブジェクトã®åå‰ã‚„dateプロパティを修正ã™ã‚‹ã“ã¨ã§è©¦ã™ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + ãれら㌠永続 状態ã«ã‚ã‚‹é™ã‚Šã€ + ã¤ã¾ã‚Šç‰¹å®šã®Hibernate Session ã«ãƒã‚¤ãƒ³ãƒ‰ã•ã‚Œã¦ã„ã‚‹é™ã‚Š + (例ãˆã°ä½œæ¥­å˜ä½(Unit of Work)ã®ä¸­ã§å˜ã«ãƒ­ãƒ¼ãƒ‰ã¾ãŸã¯ã‚»ãƒ¼ãƒ–ã•ã‚ŒãŸï¼‰ã€ + Hibernateã¯ã©ã‚“ãªå¤‰æ›´ã‚‚モニターã—ã€é…延書ãè¾¼ã¿(write-behind)ã§SQLを実行ã—ã¾ã™ã€‚ + 通常ã€ä½œæ¥­å˜ä½(Unit of Work)ã®æœ€å¾Œã«ã ã‘è¡Œã‚れるデータベースã¨ãƒ¡ãƒ¢ãƒªã®çŠ¶æ…‹ã‚’åŒæœŸã•ã›ã‚‹å‡¦ç†ã¯ã€ + フラッシュ ã¨å‘¼ã°ã‚Œã¾ã™ã€‚ + ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€ä½œæ¥­å˜ä½(Unit of Work)ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚³ãƒŸãƒƒãƒˆï¼ˆã‚‚ã—ãã¯ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ï¼‰ã§çµ‚了ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ã€ CurrentSessionContext クラスã«å¯¾ã—㦠thread を設定ã—ãŸãŸã‚ã§ã™ã€‚ - ˆÙ‚È‚éì‹Æ’PˆÊ(Unit of Work)‚ÅlX‚ƃCƒxƒ“ƒg‚ðƒ[ƒh‚·‚邱‚Æ‚à“–‘R‚Å‚«‚Ü‚·B - ‚»‚¤‚Å‚È‚¯‚ê‚ÎA‰i‘±ó‘Ô‚É‚È‚¢‚Æ‚«iˆÈ‘O‚ɉi‘±‚Å‚ ‚Á‚½‚È‚çA‚±‚Ìó‘Ԃ𠕪—£idetachedj - ‚ƌĂт܂·jA Session ‚ÌŠO•”‚ŃIƒuƒWƒFƒNƒg‚ðC³‚µ‚Ü‚·B - •ª—£‚³‚ê‚é‚Æ‚«‚ɂ̓RƒŒƒNƒVƒ‡ƒ“‚ð•ÏX‚·‚邱‚Æ‚à‰Â”\‚Å‚·F + ç•°ãªã‚‹ä½œæ¥­å˜ä½(Unit of Work)ã§äººã€…ã¨ã‚¤ãƒ™ãƒ³ãƒˆã‚’ロードã™ã‚‹ã“ã¨ã‚‚当然ã§ãã¾ã™ã€‚ + ãã†ã§ãªã‘ã‚Œã°ã€æ°¸ç¶šçŠ¶æ…‹ã«ãªã„ã¨ã(以å‰ã«æ°¸ç¶šã§ã‚ã£ãŸãªã‚‰ã€ã“ã®çŠ¶æ…‹ã‚’ 分離(detached) + ã¨å‘¼ã³ã¾ã™ï¼‰ã€ Session ã®å¤–部ã§ã‚ªãƒ–ジェクトを修正ã—ã¾ã™ã€‚ + 分離ã•ã‚Œã‚‹ã¨ãã«ã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ï¼š - update ‚̌ĂÑo‚µ‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ðĂщi‘±‰»‚µ‚Ü‚·B - ‚±‚ê‚ÍAV‚µ‚¢ì‹Æ’PˆÊ(Unit of Work)‚ɃoƒCƒ“ƒh‚·‚é‚ÆŒ¾‚¦‚é‚Å‚µ‚傤B - ‚»‚Ì‚½‚ß•ª—£‚̊ԂɉÁ‚¦‚ç‚ꂽ‚ǂ̂悤‚ÈC³‚àƒf[ƒ^ƒx[ƒX‚ɃZ[ƒu‚Å‚«‚Ü‚·B - ƒGƒ“ƒeƒBƒeƒBƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚Ö‚ÌC³i’ljÁ¥íœj‚à“¯—l‚ɃZ[ƒu‚Å‚«‚Ü‚·B + update ã®å‘¼ã³å‡ºã—ã¯åˆ†é›¢ã‚ªãƒ–ジェクトをå†ã³æ°¸ç¶šåŒ–ã—ã¾ã™ã€‚ + ã“ã‚Œã¯ã€æ–°ã—ã„作業å˜ä½(Unit of Work)ã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã¨è¨€ãˆã‚‹ã§ã—ょã†ã€‚ + ãã®ãŸã‚分離ã®é–“ã«åŠ ãˆã‚‰ã‚ŒãŸã©ã®ã‚ˆã†ãªä¿®æ­£ã‚‚データベースã«ã‚»ãƒ¼ãƒ–ã§ãã¾ã™ã€‚ + エンティティオブジェクトã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¸ã®ä¿®æ­£ï¼ˆè¿½åŠ ï½¥å‰Šé™¤ï¼‰ã‚‚åŒæ§˜ã«ã‚»ãƒ¼ãƒ–ã§ãã¾ã™ã€‚ - ‚±‚ê‚Í¡‚Í‚ ‚Ü‚èŽg‚¢‚Ý‚¿‚ª‚ ‚è‚Ü‚¹‚ñ‚ªA - Ž©•ª‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÌÝŒv‚É‘g‚Ýž‚Þ‚±‚Æ‚ª‚Å‚«‚éd—v‚ȃRƒ“ƒZƒvƒg‚Å‚·B - ‚»‚ê‚Å‚Í‚±‚̃GƒNƒTƒTƒCƒY‚ÌÅŒã‚ÉA - EventManager ‚̃ƒCƒ“ƒƒ\ƒbƒh‚ÉV‚µ‚¢ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ä - ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚çŒÄ‚Ño‚µ‚Ä‚Ý‚Ü‚µ‚傤B - l‚âƒCƒxƒ“ƒg‚ÌŽ¯•ÊŽq‚ª•K—v‚È‚çA save() ƒƒ\ƒbƒh‚ª•Ô‚µ‚Ä‚­‚ê‚Ü‚· - iꇂɂæ‚Á‚Ä‚ÍŽ¯•ÊŽq‚ð•Ô‚·‚½‚߂Ƀƒ\ƒbƒh‚ðC³‚·‚é•K—v‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñjB + ã“ã‚Œã¯ä»Šã¯ã‚ã¾ã‚Šä½¿ã„ã¿ã¡ãŒã‚ã‚Šã¾ã›ã‚“ãŒã€ + 自分ã®ã‚¢ãƒ—リケーションã®è¨­è¨ˆã«çµ„ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã‚‹é‡è¦ãªã‚³ãƒ³ã‚»ãƒ—トã§ã™ã€‚ + ãã‚Œã§ã¯ã“ã®ã‚¨ã‚¯ã‚µã‚µã‚¤ã‚ºã®æœ€å¾Œã«ã€ + EventManager ã®ãƒ¡ã‚¤ãƒ³ãƒ¡ã‚½ãƒƒãƒ‰ã«æ–°ã—ã„アクションを追加ã—㦠+ コマンドラインã‹ã‚‰å‘¼ã³å‡ºã—ã¦ã¿ã¾ã—ょã†ã€‚ + 人やイベントã®è­˜åˆ¥å­ãŒå¿…è¦ãªã‚‰ã€ save() メソッドãŒè¿”ã—ã¦ãã‚Œã¾ã™ + (場åˆã«ã‚ˆã£ã¦ã¯è­˜åˆ¥å­ã‚’è¿”ã™ãŸã‚ã«ãƒ¡ã‚½ãƒƒãƒ‰ã‚’修正ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)。 - ‚±‚ê‚Í“¯‚¶‚悤‚Éd—v‚È2‚‚̃Nƒ‰ƒXA‚‚܂è2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚ÌŠÖ˜A‚Ì—á‚Å‚µ‚½B - ‘O‚Éq‚ׂ½‚悤‚ÉA“TŒ^“I‚ȃ‚ƒfƒ‹‚É‚ÍA•’Êu”äŠr“Id—v‚Å‚Í‚È‚¢v‘¼‚̃Nƒ‰ƒX‚ÆŒ^‚ª‚ ‚è‚Ü‚·B - ‚±‚ê‚Ü‚Å‚ÉŒ©‚½‚悤‚È int ‚â String ‚̂悤‚È‚à‚Ì‚Å‚·B - ‚±‚̂悤‚ȃNƒ‰ƒX‚ð ’lŒ^ ‚ÆŒ¾‚¢‚Ü‚·B - ‚±‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í“Á’è‚̃Gƒ“ƒeƒBƒeƒB‚É ˆË‘¶ ‚µ‚Ü‚·B - ‚±‚ÌŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í“ÆŽ©‚ÌID‚ðŽ‚¿‚Ü‚¹‚ñ‚µA - ƒGƒ“ƒeƒBƒeƒBŠÔ‚Å‹¤—L‚³‚ê‚邱‚Æ‚à‚ ‚è‚Ü‚¹‚ñ - iƒtƒ@[ƒXƒgƒl[ƒ€‚ª“¯‚¶‚¾‚Á‚½‚Æ‚µ‚Ä‚àA2l‚Ìl‚Í“¯‚¶ firstname - ƒIƒuƒWƒFƒNƒg‚ðŽQÆ‚µ‚Ü‚¹‚ñjB - ’lŒ^‚Í‚à‚¿‚ë‚ñJDK“à‚ÉŒ©‚‚©‚è‚Ü‚·‚ªA‚»‚ꂾ‚¯‚Å‚Í‚È‚­ - iŽÀÛAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¢‚Ä‚·‚ׂĂÌJDKƒNƒ‰ƒX‚Í’lŒ^‚ÆŒ©‚È‚¹‚Ü‚·jA - —Ⴆ‚Î Address ‚â MonetaryAmount - ‚̂悤‚È“ÆŽ©‚̈ˑ¶ƒNƒ‰ƒX‚ð‘‚­‚±‚Æ‚à‚Å‚«‚Ü‚·B + ã“ã‚Œã¯åŒã˜ã‚ˆã†ã«é‡è¦ãª2ã¤ã®ã‚¯ãƒ©ã‚¹ã€ã¤ã¾ã‚Š2ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£é–“ã®é–¢é€£ã®ä¾‹ã§ã—ãŸã€‚ + å‰ã«è¿°ã¹ãŸã‚ˆã†ã«ã€å…¸åž‹çš„ãªãƒ¢ãƒ‡ãƒ«ã«ã¯ã€æ™®é€šã€Œæ¯”較的é‡è¦ã§ã¯ãªã„ã€ä»–ã®ã‚¯ãƒ©ã‚¹ã¨åž‹ãŒã‚ã‚Šã¾ã™ã€‚ + ã“ã‚Œã¾ã§ã«è¦‹ãŸã‚ˆã†ãª int ã‚„ String ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚ + ã“ã®ã‚ˆã†ãªã‚¯ãƒ©ã‚¹ã‚’ 値型 ã¨è¨€ã„ã¾ã™ã€‚ + ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ç‰¹å®šã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã« ä¾å­˜ ã—ã¾ã™ã€‚ + ã“ã®åž‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ç‹¬è‡ªã®IDã‚’æŒã¡ã¾ã›ã‚“ã—〠+ エンティティ間ã§å…±æœ‰ã•ã‚Œã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã›ã‚“ + (ファーストãƒãƒ¼ãƒ ãŒåŒã˜ã ã£ãŸã¨ã—ã¦ã‚‚ã€2人ã®äººã¯åŒã˜ firstname + オブジェクトをå‚ç…§ã—ã¾ã›ã‚“)。 + 値型ã¯ã‚‚ã¡ã‚ã‚“JDK内ã«è¦‹ã¤ã‹ã‚Šã¾ã™ãŒã€ãã‚Œã ã‘ã§ã¯ãªã + (実際ã€Hibernateアプリケーションã«ãŠã„ã¦ã™ã¹ã¦ã®JDKクラスã¯å€¤åž‹ã¨è¦‹ãªã›ã¾ã™ï¼‰ã€ + 例ãˆã° Address ã‚„ MonetaryAmount + ã®ã‚ˆã†ãªç‹¬è‡ªã®ä¾å­˜ã‚¯ãƒ©ã‚¹ã‚’書ãã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - ’lŒ^‚̃RƒŒƒNƒVƒ‡ƒ“‚ðÝŒv‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B - ‚±‚ê‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQƂ̃RƒŒƒNƒVƒ‡ƒ“‚Æ‚ÍŠT”O“I‚É”ñí‚ɈقȂè‚Ü‚·‚ªA - Java‚Å‚Í‚Ù‚Æ‚ñ‚Ç“¯‚¶‚悤‚ÉŒ©‚¦‚Ü‚·B + 値型ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’設計ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + ã“ã‚Œã¯ä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚ç…§ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¨ã¯æ¦‚念的ã«éžå¸¸ã«ç•°ãªã‚Šã¾ã™ãŒã€ + Javaã§ã¯ã»ã¨ã‚“ã©åŒã˜ã‚ˆã†ã«è¦‹ãˆã¾ã™ã€‚ - ’l‚̃RƒŒƒNƒVƒ‡ƒ“ + 値ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ - ’lŒ^ƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ð Person ƒGƒ“ƒeƒBƒeƒB‚֒ljÁ‚µ‚Ü‚·B - Eƒ[ƒ‹ƒAƒhƒŒƒX‚ðŠi”[‚µ‚½‚¢‚Ì‚Å‚·‚ªAString Œ^‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÅA - ƒRƒŒƒNƒVƒ‡ƒ“‚ÍÄ‚Ñ Set ‚Å‚·F + 値型オブジェクトã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’ Person エンティティã¸è¿½åŠ ã—ã¾ã™ã€‚ + Eメールアドレスを格ç´ã—ãŸã„ã®ã§ã™ãŒã€String 型を使ã£ã¦ã„ã‚‹ã®ã§ã€ + コレクションã¯å†ã³ Set ã§ã™ï¼š - ‚±‚Ì Set ‚̃}ƒbƒsƒ“ƒO‚Å‚·F + ã“ã® Set ã®ãƒžãƒƒãƒ”ングã§ã™ï¼š @@ -1124,19 +1126,19 @@ public void setEmailAddresses(Set emailAddresses) { ]]> - ‘O‚̃}ƒbƒsƒ“ƒO‚Æ”ä‚ׂĈႤ‚Ì‚Í element ‚Ì•”•ª‚Å‚·‚ªA - Hibernate‚É‚±‚̃RƒŒƒNƒVƒ‡ƒ“‚ª‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚ðŠÜ‚Ü‚¸A - String Œ^‚Ì—v‘f‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŠÜ‚Þ‚±‚Æ‚ð‹³‚¦‚Ü‚·B - i¬•¶Žš‚Ì–¼‘O(string)‚ÍHibernate‚̃}ƒbƒsƒ“ƒOŒ^‚Ü‚½‚̓Rƒ“ƒo[ƒ^‚Å‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·jB - ŒJ‚è•Ô‚µ‚Ü‚·‚ªAset —v‘f‚Ì table ‘®«‚ÍA - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚߂̃e[ƒuƒ‹–¼‚ðŽw’肵‚Ü‚·B - key —v‘f‚̓RƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚ÌŠO•”ƒL[ƒJƒ‰ƒ€–¼‚ð’è‹`‚µ‚Ü‚·B - element —v‘f‚Ì column ‘®«‚Í String - ‚Ì’l‚ªŽÀÛ‚ÉŠi”[‚³‚ê‚éƒJƒ‰ƒ€‚Ì–¼‘O‚ð’è‹`‚µ‚Ü‚·B + å‰ã®ãƒžãƒƒãƒ”ングã¨æ¯”ã¹ã¦é•ã†ã®ã¯ element ã®éƒ¨åˆ†ã§ã™ãŒã€ + Hibernateã«ã“ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãŒä»–ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¸ã®å‚照をå«ã¾ãšã€ + String åž‹ã®è¦ç´ ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’å«ã‚€ã“ã¨ã‚’æ•™ãˆã¾ã™ã€‚ + (å°æ–‡å­—ã®åå‰(string)ã¯Hibernateã®ãƒžãƒƒãƒ”ング型ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ã‚¿ã§ã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ï¼‰ã€‚ + ç¹°ã‚Šè¿”ã—ã¾ã™ãŒã€set è¦ç´ ã® table 属性ã¯ã€ + コレクションã®ãŸã‚ã®ãƒ†ãƒ¼ãƒ–ルåを指定ã—ã¾ã™ã€‚ + key è¦ç´ ã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ†ãƒ¼ãƒ–ルã®å¤–部キーカラムåを定義ã—ã¾ã™ã€‚ + element è¦ç´ ã® column 属性㯠String + ã®å€¤ãŒå®Ÿéš›ã«æ ¼ç´ã•ã‚Œã‚‹ã‚«ãƒ©ãƒ ã®åå‰ã‚’定義ã—ã¾ã™ã€‚ - XV‚µ‚½ƒXƒL[ƒ}‚ðŒ©‚Ä‚­‚¾‚³‚¢F + æ›´æ–°ã—ãŸã‚¹ã‚­ãƒ¼ãƒžã‚’見ã¦ãã ã•ã„: - ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚ÌŽåƒL[‚ÍAŽÀÛ‚Í—¼•û‚̃Jƒ‰ƒ€‚ðŽg‚Á‚½•¡‡ƒL[‚Å‚ ‚邱‚Æ‚ª‚í‚©‚è‚Ü‚·B - ‚±‚ê‚Íl‚²‚Æ‚ÉEƒ[ƒ‹ƒAƒhƒŒƒX‚ªd•¡‚Å‚«‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ÅA - Java‚Ìset‚É—v‹‚³‚ê‚éƒZƒ}ƒ“ƒeƒBƒNƒX‚»‚Ì‚à‚Ì‚Å‚·B + コレクションテーブルã®ä¸»ã‚­ãƒ¼ã¯ã€å®Ÿéš›ã¯ä¸¡æ–¹ã®ã‚«ãƒ©ãƒ ã‚’使ã£ãŸè¤‡åˆã‚­ãƒ¼ã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚ + ã“ã‚Œã¯äººã”ã¨ã«EメールアドレスãŒé‡è¤‡ã§ããªã„ã¨ã„ã†ã“ã¨ã§ã€ + Javaã®setã«è¦æ±‚ã•ã‚Œã‚‹ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ãã®ã‚‚ã®ã§ã™ã€‚ - ˆÈ‘Ol‚ƃCƒxƒ“ƒg‚ðŠÖ˜A‚¯‚½‚Æ‚«‚Æ‘S‚­“¯‚¶‚悤‚ÉA - ¡‚⎎‚µ‚ɃRƒŒƒNƒVƒ‡ƒ“‚É—v‘f‚ð’ljÁ‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½B - —¼•û‚Æ‚àJava‚Å‚Í“¯‚¶ƒR[ƒh‚Å‚·B + 以å‰äººã¨ã‚¤ãƒ™ãƒ³ãƒˆã‚’関連ã¥ã‘ãŸã¨ãã¨å…¨ãåŒã˜ã‚ˆã†ã«ã€ + 今や試ã—ã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«è¦ç´ ã‚’追加ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚ + 両方ã¨ã‚‚Javaã§ã¯åŒã˜ã‚³ãƒ¼ãƒ‰ã§ã™ã€‚ - ¡‰ñAƒRƒŒƒNƒVƒ‡ƒ“‚̉Šú‰»‚É fetch ƒNƒGƒŠ‚ðŽg—p‚µ‚Ü‚¹‚ñ‚Å‚µ‚½B - ‚»‚Ì‚½‚ßAgetterƒƒ\ƒbƒh‚̌ĂÑo‚µ‚É‚æ‚Á‚ăRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚·‚邽‚ß‚ÌSELECT‚ª - ŽÀs‚³‚ê‚é‚Ì‚ÅAƒRƒŒƒNƒVƒ‡ƒ“‚É—v‘f‚ð’ljÁ‚Å‚«‚Ü‚·B - SQL‚̃ƒO‚ðŠÄŽ‹‚µ‚ÄA‘¦ŽžƒtƒFƒbƒ`‚ðŽg‚Á‚ÄÅ“K‰»‚µ‚Ä‚­‚¾‚³‚¢B + 今回ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®åˆæœŸåŒ–ã« fetch クエリを使用ã—ã¾ã›ã‚“ã§ã—ãŸã€‚ + ãã®ãŸã‚ã€getterメソッドã®å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’åˆæœŸåŒ–ã™ã‚‹ãŸã‚ã®SELECT㌠+ 実行ã•ã‚Œã‚‹ã®ã§ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«è¦ç´ ã‚’追加ã§ãã¾ã™ã€‚ + SQLã®ãƒ­ã‚°ã‚’監視ã—ã¦ã€å³æ™‚フェッãƒã‚’使ã£ã¦æœ€é©åŒ–ã—ã¦ãã ã•ã„。 - ‘o•ûŒüŠÖ˜A + åŒæ–¹å‘関連 - ŽŸ‚É‘o•ûŒüŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B - Java‚Å—¼‘¤‚©‚çl‚ƃCƒxƒ“ƒg‚ÌŠÖ˜A‚ð“®ì‚³‚¹‚Ü‚·B - ‚à‚¿‚ë‚ñAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Í•Ï‚í‚è‚Ü‚¹‚ñ‚ªA‘½d“x‚Í‘½‘Α½‚Ì‚Ü‚Ü‚Å‚·B - ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚̓lƒbƒgƒ[ƒNƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚æ‚è‚à_“î‚È‚Ì‚ÅA - ƒiƒrƒQ[ƒVƒ‡ƒ“‚Ì•ûŒü‚̂悤‚È‚à‚Ì‚ð•K—v‚Æ‚µ‚Ü‚¹‚ñB - ƒf[ƒ^‚Í‚ ‚ç‚ä‚é‚Ì•û–@‚ÅŒ©‚½‚è•œŒ³‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B + 次ã«åŒæ–¹å‘関連をマッピングã—ã¾ã™ã€‚ + Javaã§ä¸¡å´ã‹ã‚‰äººã¨ã‚¤ãƒ™ãƒ³ãƒˆã®é–¢é€£ã‚’動作ã•ã›ã¾ã™ã€‚ + ã‚‚ã¡ã‚ã‚“ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚­ãƒ¼ãƒžã¯å¤‰ã‚ã‚Šã¾ã›ã‚“ãŒã€å¤šé‡åº¦ã¯å¤šå¯¾å¤šã®ã¾ã¾ã§ã™ã€‚ + リレーショナルデータベースã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—ログラミング言語よりも柔軟ãªã®ã§ã€ + ナビゲーションã®æ–¹å‘ã®ã‚ˆã†ãªã‚‚ã®ã‚’å¿…è¦ã¨ã—ã¾ã›ã‚“。 + データã¯ã‚らゆるã®æ–¹æ³•ã§è¦‹ãŸã‚Šå¾©å…ƒã§ãã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ - ‚Ü‚¸ Event ƒCƒxƒ“ƒgƒNƒ‰ƒX‚ÉŽQ‰ÁŽÒ‚̃RƒŒƒNƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ü‚·F + ã¾ãš Event イベントクラスã«å‚加者ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’追加ã—ã¾ã™ï¼š - ‚»‚ê‚Å‚Í Event.hbm.xml ‚ÅŠÖ˜A‚Ì‚±‚¿‚瑤‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ä‚­‚¾‚³‚¢B + ãã‚Œã§ã¯ Event.hbm.xml ã§é–¢é€£ã®ã“ã¡ã‚‰å´ã‚’マッピングã—ã¦ãã ã•ã„。 @@ -1223,43 +1225,43 @@ public void setParticipants(Set participants) { ]]> - ‚²——‚Ì‚Æ‚¨‚èA‚¢‚¸‚ê‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg(XMLƒtƒ@ƒCƒ‹)‚Å‚àA•’Ê‚Ì set - ƒ}ƒbƒsƒ“ƒO‚ðŽg‚Á‚Ä‚¢‚Ü‚·B - key ‚Æ many-to-many ‚̃Jƒ‰ƒ€–¼‚ªA - —¼•û‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Å“ü‚ê‘Ö‚¦‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚±‚ÅÅ‚àd—v‚ȒljÁ€–Ú‚ÍA Event ‚̃RƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚Ì set - —v‘f‚É‚ ‚é inverse="true" ‘®«‚Å‚·B + ã”覧ã®ã¨ãŠã‚Šã€ã„ãšã‚Œã®ãƒžãƒƒãƒ”ングドキュメント(XMLファイル)ã§ã‚‚ã€æ™®é€šã® set + マッピングを使ã£ã¦ã„ã¾ã™ã€‚ + key 㨠many-to-many ã®ã‚«ãƒ©ãƒ åãŒã€ + 両方ã®ãƒžãƒƒãƒ”ングドキュメントã§å…¥ã‚Œæ›¿ãˆã«ãªã£ã¦ã„ã‚‹ã“ã¨ã«æ³¨ç›®ã—ã¦ãã ã•ã„。 + ã“ã“ã§æœ€ã‚‚é‡è¦ãªè¿½åŠ é …ç›®ã¯ã€ Event ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒžãƒƒãƒ”ング㮠set + è¦ç´ ã«ã‚ã‚‹ inverse="true" 属性ã§ã™ã€‚ - ‚±‚ÌŽw’è‚̈Ӗ¡‚ÍA2‚‚̊Ԃ̃Gƒ“ƒeƒBƒeƒBŠÔ‚̃Šƒ“ƒN‚ɂ‚¢‚Ä‚Ìî•ñ‚ð’T‚·•K—v‚ª‚ ‚é‚Æ‚«A - Hibernate‚Í”½‘Α¤‚̃Gƒ“ƒeƒBƒeƒBA‚‚܂è Person ƒNƒ‰ƒX‚©‚ç’T‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ˆê“x2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚Ì‘o•ûŒüƒŠƒ“ƒN‚ª‚ǂ̂悤‚É쬂³‚ê‚é‚©‚ª‚í‚©‚ê‚ÎA - ‚±‚ê‚ð—‰ð‚·‚邱‚Æ‚Í‚Æ‚Ä‚àŠÈ’P‚Å‚·B + ã“ã®æŒ‡å®šã®æ„味ã¯ã€2ã¤ã®é–“ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£é–“ã®ãƒªãƒ³ã‚¯ã«ã¤ã„ã¦ã®æƒ…報を探ã™å¿…è¦ãŒã‚ã‚‹ã¨ã〠+ Hibernateã¯å対å´ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã€ã¤ã¾ã‚Š Person クラスã‹ã‚‰æŽ¢ã™ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + 一度2ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£é–“ã®åŒæ–¹å‘リンクãŒã©ã®ã‚ˆã†ã«ä½œæˆã•ã‚Œã‚‹ã‹ãŒã‚ã‹ã‚Œã°ã€ + ã“れをç†è§£ã™ã‚‹ã“ã¨ã¯ã¨ã¦ã‚‚ç°¡å˜ã§ã™ã€‚ - ‘o•ûŒüƒŠƒ“ƒN‚Ì“®ì + åŒæ–¹å‘リンクã®å‹•ä½œ - ‚Ü‚¸AHibernate‚ª’Êí‚ÌJava‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ɉe‹¿‚ð‹y‚Ú‚³‚È‚¢‚±‚Æ‚ðS‚É—¯‚ß‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B - Ž„‚½‚¿‚ÍA’P•ûŒü‚Ì—á‚Æ‚µ‚Ăǂ̂悤‚É Person ‚Æ Event - ‚̊Ԃ̃Šƒ“ƒN‚ð쬂µ‚½‚Å‚µ‚傤‚©H - Person ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃Cƒxƒ“ƒg‚Ö‚ÌŽQƂ̃RƒŒƒNƒVƒ‡ƒ“‚É - Event ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð’ljÁ‚µ‚Ü‚µ‚½B - ‚»‚Ì‚½‚ß‚±‚̃Šƒ“ƒN‚ð‘o•ûŒü‚É‚µ‚½‚¯‚ê‚ÎA - “–‚½‚è‘O‚Å‚·‚ª”½‘Α¤‚É‚à“¯‚¶‚±‚Æ‚ð‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - Event ‚̃RƒŒƒNƒVƒ‡ƒ“‚É Person ‚Ö‚Ì - ŽQÆ‚ð’ljÁ‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ‚±‚Ìu—¼‘¤‚ŃŠƒ“ƒN‚ðÝ’è‚·‚邱‚Æv‚Íâ‘΂ɕK—v‚È‚Ì‚ÅAŒˆ‚µ‚Ä–Y‚ê‚È‚¢‚Å‚­‚¾‚³‚¢B + ã¾ãšã€HibernateãŒé€šå¸¸ã®Javaã®ã‚»ãƒžãƒ³ãƒ†ã‚£ã‚¯ã‚¹ã«å½±éŸ¿ã‚’åŠã¼ã•ãªã„ã“ã¨ã‚’心ã«ç•™ã‚ã¦ãŠã„ã¦ãã ã•ã„。 + ç§ãŸã¡ã¯ã€å˜æ–¹å‘ã®ä¾‹ã¨ã—ã¦ã©ã®ã‚ˆã†ã« Person 㨠Event + ã®é–“ã®ãƒªãƒ³ã‚¯ã‚’作æˆã—ãŸã§ã—ょã†ã‹ï¼Ÿ + Person ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ã‚¤ãƒ™ãƒ³ãƒˆã¸ã®å‚ç…§ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã« + Event ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’追加ã—ã¾ã—ãŸã€‚ + ãã®ãŸã‚ã“ã®ãƒªãƒ³ã‚¯ã‚’åŒæ–¹å‘ã«ã—ãŸã‘ã‚Œã°ã€ + 当ãŸã‚Šå‰ã§ã™ãŒå対å´ã«ã‚‚åŒã˜ã“ã¨ã‚’ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + Event ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã« Person ã¸ã® + å‚照を追加ã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + ã“ã®ã€Œä¸¡å´ã§ãƒªãƒ³ã‚¯ã‚’設定ã™ã‚‹ã“ã¨ã€ã¯çµ¶å¯¾ã«å¿…è¦ãªã®ã§ã€æ±ºã—ã¦å¿˜ã‚Œãªã„ã§ãã ã•ã„。 - ‘½‚­‚ÌŠJ”­ŽÒ‚ÍTd‚ɃvƒƒOƒ‰ƒ€‚·‚é‚Ì‚ÅA - ƒGƒ“ƒeƒBƒeƒB‚Ì—¼‘¤‚ɳ‚µ‚­ŠÖ˜A‚ðÝ’è‚·‚郊ƒ“ƒNŠÇ—ƒƒ\ƒbƒh‚ð쬂µ‚Ü‚·B - —Ⴆ‚Î Person ‚ł͈ȉº‚̂悤‚É‚È‚è‚Ü‚·BF + 多ãã®é–‹ç™ºè€…ã¯æ…Žé‡ã«ãƒ—ログラムã™ã‚‹ã®ã§ã€ + エンティティã®ä¸¡å´ã«æ­£ã—ã関連を設定ã™ã‚‹ãƒªãƒ³ã‚¯ç®¡ç†ãƒ¡ã‚½ãƒƒãƒ‰ã‚’作æˆã—ã¾ã™ã€‚ + 例ãˆã° Person ã§ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚: - ƒRƒŒƒNƒVƒ‡ƒ“‚̃Qƒbƒg‚ƃZƒbƒgƒƒ\ƒbƒh‚ªŒ»Ýprotected‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚Í“¯‚¶ƒpƒbƒP[ƒW‚̃Nƒ‰ƒX‚âƒTƒuƒNƒ‰ƒX‚̃ƒ\ƒbƒh‚͈ˑRƒAƒNƒZƒX‚ª‰Â”\‚Å‚·‚ªA - i‚Ù‚Æ‚ñ‚Çj‚»‚̃pƒbƒP[ƒWŠO‚̂ǂ̃Nƒ‰ƒX‚Å‚à’¼Ú‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ð‘ä–³‚µ‚É‚·‚邱‚Æ‚ð–h‚¬‚Ü‚·B - ‚¨‚»‚ç‚­”½‘Α¤‚̃RƒŒƒNƒVƒ‡ƒ“‚É‚à“¯‚¶‚±‚Æ‚ð‚µ‚½•û‚ª‚¢‚¢‚Å‚µ‚傤B + コレクションã®ã‚²ãƒƒãƒˆã¨ã‚»ãƒƒãƒˆãƒ¡ã‚½ãƒƒãƒ‰ãŒç¾åœ¨protectedã«ãªã£ã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“ã‚Œã¯åŒã˜ãƒ‘ッケージã®ã‚¯ãƒ©ã‚¹ã‚„サブクラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ä¾ç„¶ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã§ã™ãŒã€ + (ã»ã¨ã‚“ã©ï¼‰ãã®ãƒ‘ッケージ外ã®ã©ã®ã‚¯ãƒ©ã‚¹ã§ã‚‚直接ãã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’å°ç„¡ã—ã«ã™ã‚‹ã“ã¨ã‚’防ãŽã¾ã™ã€‚ + ãŠãらãå対å´ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚‚åŒã˜ã“ã¨ã‚’ã—ãŸæ–¹ãŒã„ã„ã§ã—ょã†ã€‚ - inverse ƒ}ƒbƒsƒ“ƒO‘®«‚Æ‚Í‚¢‚Á‚½‚¢‰½‚Å‚µ‚傤‚©H - ŠJ”­ŽÒ‚ÆJava‚É‚Æ‚Á‚Ä‚ÍA‘o•ûŒüƒŠƒ“ƒN‚Í’P‚É—¼‘¤‚ÌŽQƂ𳂵‚­Ý’è‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ‚µ‚©‚µHibernate‚Íi§–ñˆá”½‚ð”ð‚¯‚é‚½‚ß‚ÉjSQL‚Ì INSERT ‚Æ UPDATE - •¶‚ð³Šm‚É•ÏX‚·‚邽‚ß‚Ì\•ª‚Èî•ñ‚ðŽ‚Á‚Ä‚¢‚È‚¢‚Ì‚ÅA - ‘o•ûŒüŠÖ˜AƒvƒƒpƒeƒB‚ðˆµ‚¤‚½‚߂̉½‚ç‚©‚Ì•‚¯‚ð•K—v‚Æ‚µ‚Ü‚·B - ŠÖ˜A‚̕Б¤‚ð inverse ‚ÉÝ’è‚·‚邱‚Æ‚ÅAHibernate‚ÍŠî–{“I‚É‚Íݒ肵‚½‘¤‚𖳎‹‚µA - ”½‘Α¤‚Ì ‹¾ ‚Æ‚µ‚Äl‚¦‚Ü‚·B - ‚±‚ꂾ‚¯‚ÅAHibernate‚Í•ûŒü‚ðŽ‚ƒiƒrƒQ[ƒVƒ‡ƒ“ƒ‚ƒfƒ‹‚ðSQLƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Ö•ÏŠ·‚·‚é‚Æ‚«‚Ì - ‚·‚ׂĂ̖â‘è‚É‚¤‚Ü‚­‘Έ‚Å‚«‚Ü‚·B - Šo‚¦‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢ƒ‹[ƒ‹‚ÍŠÈ’P‚Å‚·B - ‘o•ûŒüŠÖ˜A‚Í•K‚¸•Ð‘¤‚ð inverse ‚É‚·‚é•K—v‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B - ˆê‘Α½ŠÖ˜A‚Å‚Í‚»‚ê‚Í‘½‘¤‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB - ‘½‘Α½ŠÖ˜A‚Å‚Í‚Ç‚¿‚瑤‚Å‚à\‚¢‚Ü‚¹‚ñB‚Ç‚¿‚ç‚Å‚àˆá‚¢‚Í‚ ‚è‚Ü‚¹‚ñB + inverse マッピング属性ã¨ã¯ã„ã£ãŸã„何ã§ã—ょã†ã‹ï¼Ÿ + 開発者ã¨Javaã«ã¨ã£ã¦ã¯ã€åŒæ–¹å‘リンクã¯å˜ã«ä¸¡å´ã®å‚照を正ã—ã設定ã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + ã—ã‹ã—Hibernateã¯ï¼ˆåˆ¶ç´„é•åã‚’é¿ã‘ã‚‹ãŸã‚ã«ï¼‰SQLã® INSERT 㨠UPDATE + 文を正確ã«å¤‰æ›´ã™ã‚‹ãŸã‚ã®å分ãªæƒ…報をæŒã£ã¦ã„ãªã„ã®ã§ã€ + åŒæ–¹å‘関連プロパティを扱ã†ãŸã‚ã®ä½•ã‚‰ã‹ã®åŠ©ã‘ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚ + 関連ã®ç‰‡å´ã‚’ inverse ã«è¨­å®šã™ã‚‹ã“ã¨ã§ã€Hibernateã¯åŸºæœ¬çš„ã«ã¯è¨­å®šã—ãŸå´ã‚’無視ã—〠+ å対å´ã® é¡ ã¨ã—ã¦è€ƒãˆã¾ã™ã€‚ + ã“ã‚Œã ã‘ã§ã€Hibernateã¯æ–¹å‘ã‚’æŒã¤ãƒŠãƒ“ゲーションモデルをSQLデータベーススキーマã¸å¤‰æ›ã™ã‚‹ã¨ãã® + ã™ã¹ã¦ã®å•é¡Œã«ã†ã¾ã対処ã§ãã¾ã™ã€‚ + 覚ãˆã¦ãŠã‹ãªã‘ã‚Œã°ãªã‚‰ãªã„ルールã¯ç°¡å˜ã§ã™ã€‚ + åŒæ–¹å‘関連ã¯å¿…ãšç‰‡å´ã‚’ inverse ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ + 一対多関連ã§ã¯ãã‚Œã¯å¤šå´ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 + 多対多関連ã§ã¯ã©ã¡ã‚‰å´ã§ã‚‚構ã„ã¾ã›ã‚“。ã©ã¡ã‚‰ã§ã‚‚é•ã„ã¯ã‚ã‚Šã¾ã›ã‚“。 - ‚Å‚Í‚±‚ê‚𬂳‚ÈWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚µ‚Ä‚Ý‚Ü‚µ‚傤B + ã§ã¯ã“れをå°ã•ãªWebアプリケーションã«ã—ã¦ã¿ã¾ã—ょã†ã€‚ - ƒp[ƒg3 - EventManager WebƒAƒvƒŠƒP[ƒVƒ‡ƒ“ + パート3 - EventManager Webアプリケーション - Hibernate‚ÌWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍAƒXƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̂悤‚É - Session ‚Æ Transaction ‚ðŽg—p‚µ‚Ü‚·B - ‚µ‚©‚µ‚¢‚­‚‚©‚̈ê”Ê“I‚ȃpƒ^[ƒ“‚ª–𗧂¿‚Ü‚·B - ‚±‚±‚Å EventManagerServlet ‚ð쬂µ‚Ü‚·B‚±‚̃T[ƒuƒŒƒbƒg‚ÍA - ƒf[ƒ^ƒx[ƒX‚ÉŠi”[‚µ‚½‘S‚ẴCƒxƒ“ƒg‚ðƒŠƒXƒg‚É‚Å‚«A‚³‚ç‚ÉHTMLƒtƒH[ƒ€‚©‚çV‚µ‚¢ƒCƒxƒ“ƒg‚ð“ü—Í‚Å‚«‚é‚à‚Ì‚Å‚·B + Hibernateã®Webアプリケーションã¯ã€ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ¼ãƒ³ã®ã‚¢ãƒ—リケーションã®ã‚ˆã†ã« + Session 㨠Transaction を使用ã—ã¾ã™ã€‚ + ã—ã‹ã—ã„ãã¤ã‹ã®ä¸€èˆ¬çš„ãªãƒ‘ターンãŒå½¹ç«‹ã¡ã¾ã™ã€‚ + ã“ã“㧠EventManagerServlet を作æˆã—ã¾ã™ã€‚ã“ã®ã‚µãƒ¼ãƒ–レットã¯ã€ + データベースã«æ ¼ç´ã—ãŸå…¨ã¦ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’リストã«ã§ãã€ã•ã‚‰ã«HTMLフォームã‹ã‚‰æ–°ã—ã„イベントを入力ã§ãã‚‹ã‚‚ã®ã§ã™ã€‚ - Šî–{“I‚ÈServlet‚Ì‹Lq + 基本的ãªServletã®è¨˜è¿° - V‚µ‚¢ƒNƒ‰ƒX‚ðAƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚Ì events ƒpƒbƒP[ƒW‚É쬂µ‚Ä‚­‚¾‚³‚¢B + æ–°ã—ã„クラスをã€ã‚½ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã® events パッケージã«ä½œæˆã—ã¦ãã ã•ã„。 - Servlet‚ÍHTTP‚Ì GET ƒŠƒNƒGƒXƒg‚Ì‚Ý‚ðˆ—‚·‚é‚Ì‚ÅA - doGet() ‚ðŽÀ‘•‚µ‚Ü‚·B + Servletã¯HTTPã® GET リクエストã®ã¿ã‚’処ç†ã™ã‚‹ã®ã§ã€ + doGet() を実装ã—ã¾ã™ã€‚ - ‚±‚ê‚Í session-per-request ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚Å‚·B - Servlet‚ªƒŠƒNƒGƒXƒg‚ðŽó‚¯Žæ‚é‚ÆA SessionFactory ‚Ì - getCurrentSession() ‚Ìʼn‚̌ĂÑo‚µ‚ÅA - Hibernate‚ÌV‚µ‚¢ Session ‚ªŠJ‚©‚ê‚Ü‚·B - ‚»‚Ì‚Æ‚«ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚Ü‚·B - ƒf[ƒ^‚Ì“Ç‚Ý‘‚«‚ÉŠÖ‚í‚炸A‚·‚ׂẴf[ƒ^ƒAƒNƒZƒX‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ““à‚Ås‚¢‚Ü‚·B - iƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚ł̓I[ƒgƒRƒ~ƒbƒgƒ‚[ƒh‚ðŽg—p‚µ‚Ü‚¹‚ñjB + ã“れ㯠session-per-request ã¨ã„ã†ãƒ‘ターンã§ã™ã€‚ + ServletãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘å–ã‚‹ã¨ã€ SessionFactory ã® + getCurrentSession() ã®æœ€åˆã®å‘¼ã³å‡ºã—ã§ã€ + Hibernateã®æ–°ã—ã„ Session ãŒé–‹ã‹ã‚Œã¾ã™ã€‚ + ãã®ã¨ãデータベーストランザクションãŒé–‹å§‹ã•ã‚Œã¾ã™ã€‚ + データã®èª­ã¿æ›¸ãã«é–¢ã‚らãšã€ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚¢ã‚¯ã‚»ã‚¹ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å†…ã§è¡Œã„ã¾ã™ã€‚ + (アプリケーション内ã§ã¯ã‚ªãƒ¼ãƒˆã‚³ãƒŸãƒƒãƒˆãƒ¢ãƒ¼ãƒ‰ã‚’使用ã—ã¾ã›ã‚“)。 - ŽŸ‚ÉAƒŠƒNƒGƒXƒg‚̃AƒNƒVƒ‡ƒ“‚͈—‚³‚êAƒŒƒXƒ|ƒ“ƒX‚Å‚ ‚éHTML‚ª•`‰æ‚³‚ê‚Ü‚·B - ‚±‚ê‚ɂ‚¢‚Ä‚Í‚·‚®‚Éà–¾‚µ‚Ü‚·B + 次ã«ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã¯å‡¦ç†ã•ã‚Œã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã§ã‚ã‚‹HTMLãŒæç”»ã•ã‚Œã¾ã™ã€‚ + ã“ã‚Œã«ã¤ã„ã¦ã¯ã™ãã«èª¬æ˜Žã—ã¾ã™ã€‚ - ÅŒã‚ɃŠƒNƒGƒXƒg‚̈—‚ÆHTML•`‰æ‚ªŠ®—¹‚µ‚½‚Æ‚«‚ÉAì‹Æ’PˆÊ(Unit of Work)‚ðI—¹‚µ‚Ü‚·B - ‚à‚µˆ—‚â•`‰æ’†‚É–â‘肪”­¶‚µ‚½ê‡Aexception‚ª“Š‚°‚ç‚ê‚ăf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚Ü‚·B - ‚±‚ê‚Å session-per-request ƒpƒ^[ƒ“‚ªŠ®—¹‚µ‚Ü‚·B - ‘S‚ẴT[ƒuƒŒƒbƒg‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚̃R[ƒh‚ð‘‚­‘ã‚í‚è‚ÉAƒT[ƒuƒŒƒbƒgƒtƒBƒ‹ƒ^‚É‹Lq‚·‚邱‚Æ‚à‰Â”\‚Å‚·B - Open Session in View ‚ƌĂ΂ê‚邱‚̃pƒ^[ƒ“‚ɂ‚¢‚Ä‚ÍA - Hibernate‚ÌWebƒTƒCƒg‚âWiki‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - ƒT[ƒuƒŒƒbƒg‚Å‚Í‚È‚­JSP‚ÅHTML•`‰æ‚ð‚µ‚æ‚¤‚Æ‚·‚é‚ÆA‚·‚®‚É‚±‚̃pƒ^[ƒ“‚ɂ‚¢‚Ä‚Ìî•ñ‚ª•K—v‚É‚È‚é‚Å‚µ‚傤B + 最後ã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ã¨HTMLæç”»ãŒå®Œäº†ã—ãŸã¨ãã«ã€ä½œæ¥­å˜ä½(Unit of Work)を終了ã—ã¾ã™ã€‚ + ã‚‚ã—処ç†ã‚„æ画中ã«å•é¡ŒãŒç™ºç”Ÿã—ãŸå ´åˆã€exceptionãŒæŠ•ã’られã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ロールãƒãƒƒã‚¯ã—ã¾ã™ã€‚ + ã“れ㧠session-per-request パターンãŒå®Œäº†ã—ã¾ã™ã€‚ + å…¨ã¦ã®ã‚µãƒ¼ãƒ–レットã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å¢ƒç•Œã®ã‚³ãƒ¼ãƒ‰ã‚’書ã代ã‚ã‚Šã«ã€ã‚µãƒ¼ãƒ–レットフィルタã«è¨˜è¿°ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + Open Session in View ã¨å‘¼ã°ã‚Œã‚‹ã“ã®ãƒ‘ターンã«ã¤ã„ã¦ã¯ã€ + Hibernateã®WebサイトやWikiã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + サーブレットã§ã¯ãªãJSPã§HTMLæ画をã—よã†ã¨ã™ã‚‹ã¨ã€ã™ãã«ã“ã®ãƒ‘ターンã«ã¤ã„ã¦ã®æƒ…å ±ãŒå¿…è¦ã«ãªã‚‹ã§ã—ょã†ã€‚ - ˆ—‚Æ•`‰æ + 処ç†ã¨æç”» - ‚Å‚ÍAƒŠƒNƒGƒXƒg‚̈—‚ƃy[ƒW‚Ì•`‰æ‚ðŽÀ‘•‚µ‚Ü‚·B + ã§ã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ã¨ãƒšãƒ¼ã‚¸ã®æ画を実装ã—ã¾ã™ã€‚ - Java‚ÆHTML‚ª¬Ý‚·‚éƒR[ƒfƒBƒ“ƒOƒXƒ^ƒCƒ‹‚ÍA‚æ‚è•¡ŽG‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Í“K‚µ‚Ä‚¢‚È‚¢‚Å‚µ‚傤 - i‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚Å‚ÍAŠî–{“I‚ÈHibernate‚̃Rƒ“ƒZƒvƒg‚ðŽ¦‚µ‚Ä‚¢‚邾‚¯‚Å‚ ‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢jB - ‚±‚̃R[ƒh‚ÍHTML‚̃wƒbƒ_[‚ƃtƒbƒ^[‚Ì‹Lq‚Å‚·B - ‚±‚̃y[ƒW‚É‚ÍAƒCƒxƒ“ƒg‚ð“ü—Í‚·‚éHTMLƒtƒH[ƒ€‚ÆAƒf[ƒ^ƒx[ƒX‚É‚ ‚é‘S‚ẴCƒxƒ“ƒg‚̃ŠƒXƒg‚ª•\Ž¦‚³‚ê‚Ü‚·B - ʼn‚̃ƒ\ƒbƒh‚Í‚²‚­’Pƒ‚ÈHTMLo—Í‚Å‚·B + Javaã¨HTMLãŒæ··åœ¨ã™ã‚‹ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚¹ã‚¿ã‚¤ãƒ«ã¯ã€ã‚ˆã‚Šè¤‡é›‘ãªã‚¢ãƒ—リケーションã«ã¯é©ã—ã¦ã„ãªã„ã§ã—ょㆠ+ (ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§ã¯ã€åŸºæœ¬çš„ãªHibernateã®ã‚³ãƒ³ã‚»ãƒ—トを示ã—ã¦ã„ã‚‹ã ã‘ã§ã‚ã‚‹ã“ã¨ã‚’覚ãˆã¦ãŠã„ã¦ãã ã•ã„)。 + ã“ã®ã‚³ãƒ¼ãƒ‰ã¯HTMLã®ãƒ˜ãƒƒãƒ€ãƒ¼ã¨ãƒ•ãƒƒã‚¿ãƒ¼ã®è¨˜è¿°ã§ã™ã€‚ + ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆã‚’入力ã™ã‚‹HTMLフォームã¨ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚ã‚‹å…¨ã¦ã®ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + 最åˆã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã”ãå˜ç´”ãªHTML出力ã§ã™ã€‚ }]]> - listEvents() ƒƒ\ƒbƒh‚ÍAŒ»Ý‚̃XƒŒƒbƒh‚ÉŒ‹‚т‚­ - Hibernate‚Ì Session ‚ðŽg—p‚µ‚ÄAƒNƒGƒŠ‚ðŽÀs‚µ‚Ü‚·B + listEvents() メソッドã¯ã€ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã«çµã³ã¤ã + Hibernateã® Session を使用ã—ã¦ã€ã‚¯ã‚¨ãƒªã‚’実行ã—ã¾ã™ã€‚ }]]> - ÅŒã‚ÉA store ƒAƒNƒVƒ‡ƒ“‚ª createAndStoreEvent() ƒƒ\ƒbƒh‚ð - ŒÄ‚Ño‚µ‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚Å‚àŒ»Ý‚ÌƒXƒŒƒbƒh‚Ì Session ‚ð—˜—p‚µ‚Ü‚·B + 最後ã«ã€ store アクション㌠createAndStoreEvent() メソッドを + 呼ã³å‡ºã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚ç¾åœ¨ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã® Session を利用ã—ã¾ã™ã€‚ }]]> - ‚±‚ê‚ŃT[ƒuƒŒƒbƒg‚ÌŠ®¬‚Å‚·B - ƒT[ƒuƒŒƒbƒg‚ւ̃ŠƒNƒGƒXƒg‚ÍAˆê‚Â‚Ì Session ‚Æ - Transaction ‚ň—‚³‚ê‚é‚Å‚µ‚傤B - ʼn‚̃Xƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̂悤‚ÉA - Hibernate‚ÍŽ©“®“I‚É‚±‚ê‚ç‚̃IƒuƒWƒFƒNƒg‚ðŽÀs‚·‚éƒXƒŒƒbƒh‚ÉŒ‹‚Ñ•t‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - ‚±‚ê‚É‚æ‚èAŠJ”­ŽÒ‚ªŽ©—R‚ɃR[ƒh‚ðƒŒƒCƒ„[•ª‚¯‚Å‚«A - D‚«‚È•û–@‚Å SessionFactory ‚ւ̃AƒNƒZƒX‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B - ’ÊíAŠJ”­ŽÒ‚Í‚æ‚èô—û‚³‚ꂽƒfƒUƒCƒ“‚ðŽg—p‚µ‚ÄAƒf[ƒ^ƒAƒNƒZƒX‚̃R[ƒh‚ð - ƒf[ƒ^ƒAƒNƒZƒXƒIƒuƒWƒFƒNƒg‚Ɉړ®‚·‚é‚Å‚µ‚傤iDAOƒpƒ^[ƒ“jB - ‚æ‚葽‚­‚Ì—á‚ÍAHibernate‚ÌWiki‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B + ã“ã‚Œã§ã‚µãƒ¼ãƒ–レットã®å®Œæˆã§ã™ã€‚ + サーブレットã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯ã€ä¸€ã¤ã® Session 㨠+ Transaction ã§å‡¦ç†ã•ã‚Œã‚‹ã§ã—ょã†ã€‚ + 最åˆã®ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ¼ãƒ³ã®ã‚¢ãƒ—リケーションã®ã‚ˆã†ã«ã€ + Hibernateã¯è‡ªå‹•çš„ã«ã“れらã®ã‚ªãƒ–ジェクトを実行ã™ã‚‹ã‚¹ãƒ¬ãƒƒãƒ‰ã«çµã³ä»˜ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šã€é–‹ç™ºè€…ãŒè‡ªç”±ã«ã‚³ãƒ¼ãƒ‰ã‚’レイヤー分ã‘ã§ã〠+ 好ããªæ–¹æ³•ã§ SessionFactory ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + 通常ã€é–‹ç™ºè€…ã¯ã‚ˆã‚Šæ´—ç·´ã•ã‚ŒãŸãƒ‡ã‚¶ã‚¤ãƒ³ã‚’使用ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ã‚¢ã‚¯ã‚»ã‚¹ã®ã‚³ãƒ¼ãƒ‰ã‚’ + データアクセスオブジェクトã«ç§»å‹•ã™ã‚‹ã§ã—ょã†ï¼ˆDAOパターン)。 + より多ãã®ä¾‹ã¯ã€Hibernateã®Wikiã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - ƒfƒvƒƒC‚ƃeƒXƒg + デプロイã¨ãƒ†ã‚¹ãƒˆ - ‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒvƒƒC‚Ì‚½‚ß‚ÉAWebƒA[ƒJƒCƒuiWARj‚ð쬂µ‚Ä‚­‚¾‚³‚¢B - ˆÈ‰º‚ÌAntƒ^[ƒQƒbƒg‚ð build.xml ‚ɉÁ‚¦‚Ä‚­‚¾‚³‚¢B + ã“ã®ã‚¢ãƒ—リケーションã®ãƒ‡ãƒ—ロイã®ãŸã‚ã«ã€Webアーカイブ(WAR)を作æˆã—ã¦ãã ã•ã„。 + 以下ã®Antターゲットを build.xml ã«åŠ ãˆã¦ãã ã•ã„。 @@ -1521,10 +1523,10 @@ out.close();]]> ]]> - ‚±‚̃^[ƒQƒbƒg‚Í hibernate-tutorial.war ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð - ƒvƒƒWƒFƒNƒgƒfƒBƒŒƒNƒgƒŠ‚É쬂µ‚Ü‚·B - ‚±‚̃tƒ@ƒCƒ‹‚Í‚·‚ׂẴ‰ƒCƒuƒ‰ƒŠ‚Æ web.xml ‹LqŽq‚ðŠÜ‚ñ‚Å‚¨‚èA - ƒvƒƒWƒFƒNƒg‚̃x[ƒXƒfƒBƒŒƒNƒgƒŠ‚É’u‚©‚ê‚邱‚Æ‚ðŠú‘Ò‚³‚ê‚Ü‚·B + ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¯ hibernate-tutorial.war ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ + プロジェクトディレクトリã«ä½œæˆã—ã¾ã™ã€‚ + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã™ã¹ã¦ã®ãƒ©ã‚¤ãƒ–ラリ㨠web.xml 記述å­ã‚’å«ã‚“ã§ãŠã‚Šã€ + プロジェクトã®ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç½®ã‹ã‚Œã‚‹ã“ã¨ã‚’期待ã•ã‚Œã¾ã™ã€‚ @@ -1545,29 +1547,29 @@ out.close();]]> ]]> - WebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Rƒ“ƒpƒCƒ‹‚ƃfƒvƒƒC‚Ì‘O‚ÉA jsdk.jar ‚Æ‚¢‚¤ - ’ljÁ‚̃‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚È‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚ê‚ÍJavaƒT[ƒuƒŒƒbƒg‚ÌŠJ”­ƒLƒbƒg‚Å‚·B - ‚à‚µ‚Ü‚¾‚±‚̃‰ƒCƒuƒ‰ƒŠ‚ðŽ‚Á‚Ä‚¢‚È‚¢‚È‚çASun‚̃EƒFƒuƒTƒCƒg‚Å“üŽè‚µ‚ÄA - ƒ‰ƒCƒuƒ‰ƒŠƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B - ‚µ‚©‚µA‚±‚ê‚̓Rƒ“ƒpƒCƒ‹‚É‚Ì‚ÝŽg—p‚³‚êAWARƒpƒbƒP[ƒW‚©‚ç‚ÍœŠO‚³‚ê‚Ü‚·B + Webアプリケーションã®ã‚³ãƒ³ãƒ‘イルã¨ãƒ‡ãƒ—ロイã®å‰ã«ã€ jsdk.jar ã¨ã„ㆠ+ 追加ã®ãƒ©ã‚¤ãƒ–ラリãŒå¿…è¦ãªã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + ã“ã‚Œã¯Javaサーブレットã®é–‹ç™ºã‚­ãƒƒãƒˆã§ã™ã€‚ + ã‚‚ã—ã¾ã ã“ã®ãƒ©ã‚¤ãƒ–ラリをæŒã£ã¦ã„ãªã„ãªã‚‰ã€Sunã®ã‚¦ã‚§ãƒ–サイトã§å…¥æ‰‹ã—ã¦ã€ + ライブラリディレクトリã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„。 + ã—ã‹ã—ã€ã“ã‚Œã¯ã‚³ãƒ³ãƒ‘イルã«ã®ã¿ä½¿ç”¨ã•ã‚Œã€WARパッケージã‹ã‚‰ã¯é™¤å¤–ã•ã‚Œã¾ã™ã€‚ - ƒrƒ‹ƒh‚ƃfƒvƒƒC‚Ì‚½‚ß‚ÉAƒvƒƒWƒFƒNƒgƒfƒBƒŒƒNƒgƒŠ‚Å ant war ‚ðŒÄ‚Ño‚µA - hibernate-tutorial.war ƒtƒ@ƒCƒ‹‚ðTomcat‚Ì webapp - ƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚¾Tomcat‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚È‚¯‚ê‚ÎAƒ_ƒEƒ“ƒ[ƒh‚µ‚ÄAˆÈ‰º‚̃Cƒ“ƒXƒg[ƒ‹ƒKƒCƒh‚É]‚Á‚Ä‚­‚¾‚³‚¢B - ‚µ‚©‚µA‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒvƒƒC‚·‚邽‚ß‚ÉATomcat‚ÌÝ’è‚ð•ÏX‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + ビルドã¨ãƒ‡ãƒ—ロイã®ãŸã‚ã«ã€ãƒ—ロジェクトディレクトリ㧠ant war を呼ã³å‡ºã—〠+ hibernate-tutorial.war ファイルをTomcatã® webapp + ディレクトリã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„。 + ã¾ã Tomcatをインストールã—ã¦ã„ãªã‘ã‚Œã°ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã€ä»¥ä¸‹ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚¬ã‚¤ãƒ‰ã«å¾“ã£ã¦ãã ã•ã„。 + ã—ã‹ã—ã€ã“ã®ã‚¢ãƒ—リケーションã®ãƒ‡ãƒ—ロイã™ã‚‹ãŸã‚ã«ã€Tomcatã®è¨­å®šã‚’変更ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 - ˆê“xƒfƒvƒƒC‚µ‚ÄTomcat‚ð‹N“®‚·‚ê‚ÎA http://localhost:8080/hibernate-tutorial/eventmanager ‚Å - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ւ̃AƒNƒZƒX‚ª‰Â”\‚Å‚·B - ʼn‚̃ŠƒNƒGƒXƒg‚ªì¬‚µ‚½ƒT[ƒuƒŒƒbƒg‚É“n‚Á‚½‚Æ‚«‚ÉATomcat‚̃ƒO‚Å - Hibernate‚̉Šú‰»ˆ—‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢ - i HibernateUtil “à‚ÌÓI‰Šú‰»ƒuƒƒbƒN‚ªŒÄ‚΂ê‚Ä‚¢‚Ü‚·jB - ‚Ü‚½Aexception‚ª”­¶‚µ‚½‚È‚çÚׂðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B + 一度デプロイã—ã¦Tomcatã‚’èµ·å‹•ã™ã‚Œã°ã€ http://localhost:8080/hibernate-tutorial/eventmanager 㧠+ アプリケーションã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã§ã™ã€‚ + 最åˆã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒä½œæˆã—ãŸã‚µãƒ¼ãƒ–レットã«æ¸¡ã£ãŸã¨ãã«ã€Tomcatã®ãƒ­ã‚°ã§ + Hibernateã®åˆæœŸåŒ–処ç†ã‚’確èªã—ã¦ãã ã•ã„ + ( HibernateUtil 内ã®é™çš„åˆæœŸåŒ–ブロックãŒå‘¼ã°ã‚Œã¦ã„ã¾ã™ï¼‰ã€‚ + ã¾ãŸã€exceptionãŒç™ºç”Ÿã—ãŸãªã‚‰è©³ç´°ã‚’確èªã—ã¦ãã ã•ã„。 @@ -1575,24 +1577,24 @@ out.close();]]> - —v–ñ + è¦ç´„ - ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚Å‚ÍAŠÈ’P‚ȃXƒ^ƒ“ƒhƒAƒ[ƒ“‚ÌHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ - ¬‹K–Í‚ÌWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‘‚­‚½‚ß‚ÌŠî–{‚ðЉ‚Ü‚µ‚½B + ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§ã¯ã€ç°¡å˜ãªã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ¼ãƒ³ã®Hibernateアプリケーション㨠+ å°è¦æ¨¡ã®Webアプリケーションを書ããŸã‚ã®åŸºæœ¬ã‚’紹介ã—ã¾ã—ãŸã€‚ - ‚à‚¤Hibernate‚ÉŽ©M‚ª‚ ‚ê‚ÎAƒŠƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚Ì–ÚŽŸ‚É–Ú‚ð’Ê‚µ‚ÄA - –Ê”’‚»‚¤‚¾‚ÆŽv‚¤ƒgƒsƒbƒN‚ð’T‚µ‚Ä‚­‚¾‚³‚¢B - Å‚à•p”É‚ÉŽ¿–₪‚ ‚é‚Ì‚ÍAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—ijA - ƒtƒFƒbƒ`‚̃pƒtƒH[ƒ}ƒ“ƒXijA - API‚ÌŽg‚¢•ûij‚ƃNƒGƒŠ - ij‚Å‚·B + ã‚‚ã†Hibernateã«è‡ªä¿¡ãŒã‚ã‚Œã°ã€ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®ç›®æ¬¡ã«ç›®ã‚’通ã—ã¦ã€ + é¢ç™½ãã†ã ã¨æ€ã†ãƒˆãƒ”ックを探ã—ã¦ãã ã•ã„。 + 最も頻ç¹ã«è³ªå•ãŒã‚ã‚‹ã®ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç†ï¼ˆï¼‰ã€ + フェッãƒã®ãƒ‘フォーマンス()〠+ APIã®ä½¿ã„方()ã¨ã‚¯ã‚¨ãƒª + ()ã§ã™ã€‚ - ‚³‚ç‚Éi“Á•Ê‚Èjƒ`ƒ…[ƒgƒŠƒAƒ‹‚ª•K—v‚È‚çAHibernateƒEƒFƒuƒTƒCƒg‚ð–Y‚ꂸ‚Ƀ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B + ã•ã‚‰ã«ï¼ˆç‰¹åˆ¥ãªï¼‰ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ãŒå¿…è¦ãªã‚‰ã€Hibernateウェブサイトを忘れãšã«ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。 diff --git a/documentation/manual/ja-JP/src/main/docbook/content/xml.xml b/documentation/manual/ja-JP/src/main/docbook/content/xml.xml index 9df98dd529..2243284e06 100644 --- a/documentation/manual/ja-JP/src/main/docbook/content/xml.xml +++ b/documentation/manual/ja-JP/src/main/docbook/content/xml.xml @@ -1,48 +1,50 @@ - + + + - XMLƒ}ƒbƒsƒ“ƒO + XMLマッピング - XMLƒ}ƒbƒsƒ“ƒO‚ÍHibernate3.0‚Å‚ÍŽŽŒ±“I‚È‹@”\‚Å‚ ‚èA”ñí‚ÉŠˆ“®“I‚ÉŠJ”­’†‚Å‚·B + XMLマッピングã¯Hibernate3.0ã§ã¯è©¦é¨“çš„ãªæ©Ÿèƒ½ã§ã‚ã‚Šã€éžå¸¸ã«æ´»å‹•çš„ã«é–‹ç™ºä¸­ã§ã™ã€‚ - XMLƒf[ƒ^‚Å‚Ìì‹Æ + XMLデータã§ã®ä½œæ¥­ - Hibernate‚ł͉i‘±«‚ÌPOJO‚ðŽg‚Á‚Äì‹Æ‚·‚é‚Ì‚Æ‚Ù‚Ú“¯‚¶‚悤‚È‚â‚è•û‚ÅA - ‰i‘±«‚ÌXMLƒf[ƒ^‚ðŽg‚Á‚Äì‹Æ‚Å‚«‚Ü‚·B + Hibernateã§ã¯æ°¸ç¶šæ€§ã®POJOを使ã£ã¦ä½œæ¥­ã™ã‚‹ã®ã¨ã»ã¼åŒã˜ã‚ˆã†ãªã‚„ã‚Šæ–¹ã§ã€ + 永続性ã®XMLデータを使ã£ã¦ä½œæ¥­ã§ãã¾ã™ã€‚ - Hibernate‚ÍXMLƒcƒŠ[‚ð‘€ì‚·‚邽‚ß‚ÌAPI‚Æ‚µ‚Ädom4j‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B - ƒf[ƒ^ƒx[ƒX‚©‚çdom4j‚̃cƒŠ[‚𕜌³‚·‚éƒNƒGƒŠ‚ð‘‚­‚±‚Æ‚ª‚Å‚«A - ƒcƒŠ[‚ɑ΂µ‚Äs‚Á‚½C³‚ÍŽ©“®“I‚Ƀf[ƒ^ƒx[ƒX‚Æ“¯Šú‚³‚ê‚Ü‚·B + Hibernateã¯XMLツリーをæ“作ã™ã‚‹ãŸã‚ã®APIã¨ã—ã¦dom4jをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + データベースã‹ã‚‰dom4jã®ãƒ„リーを復元ã™ã‚‹ã‚¯ã‚¨ãƒªã‚’書ãã“ã¨ãŒã§ã〠+ ツリーã«å¯¾ã—ã¦è¡Œã£ãŸä¿®æ­£ã¯è‡ªå‹•çš„ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨åŒæœŸã•ã‚Œã¾ã™ã€‚ - ‚Ü‚½XMLƒhƒLƒ…ƒƒ“ƒg‚ðŽæ“¾‚·‚邱‚Æ‚ª‚Å‚«Adom4j‚ðŽg‚Á‚ăhƒLƒ…ƒƒ“ƒg‚ðƒp[ƒX‚µA - Hibernate‚Ì”CˆÓ‚ÌŠî–{‘€ì‚ðŽg‚Á‚ăf[ƒ^ƒx[ƒX‚Ö‘‚«ž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·BF - ‚‚܂èApersist(), saveOrUpdate(), merge(), delete(), replicate() - ‘€ì‚Å‚·(ƒ}[ƒW‚Í‚Ü‚¾ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ)B + ã¾ãŸXMLドキュメントをå–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã€dom4jを使ã£ã¦ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’パースã—〠+ Hibernateã®ä»»æ„ã®åŸºæœ¬æ“作を使ã£ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸æ›¸ã込むã“ã¨ãŒã§ãã¾ã™ã€‚: + ã¤ã¾ã‚Šã€persist(), saveOrUpdate(), merge(), delete(), replicate() + æ“作ã§ã™(マージã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)。 - ƒf[ƒ^‚̃Cƒ“ƒ|[ƒg/ƒGƒNƒXƒ|[ƒgA - JMS‚É‚æ‚éƒGƒ“ƒeƒBƒeƒBƒf[ƒ^‚ÌŠO•”‰»‚âSOAPAXSLTƒx[ƒX‚̃Œƒ|[ƒg‚È‚ÇA - ‚±‚Ì‹@”\‚É‚Í‘½‚­‚Ì—p“r‚ª‚ ‚è‚Ü‚·B + データã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ/エクスãƒãƒ¼ãƒˆã€ + JMSã«ã‚ˆã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ‡ãƒ¼ã‚¿ã®å¤–部化やSOAPã€XSLTベースã®ãƒ¬ãƒãƒ¼ãƒˆãªã©ã€ + ã“ã®æ©Ÿèƒ½ã«ã¯å¤šãã®ç”¨é€”ãŒã‚ã‚Šã¾ã™ã€‚ - ’Pˆê‚̃}ƒbƒsƒ“ƒO‚ÍAƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ÆXMLƒhƒLƒ…ƒƒ“ƒg‚̃m[ƒh‚ð - “¯Žž‚Ƀf[ƒ^ƒx[ƒX‚Öƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B - ‚Ü‚½ƒ}ƒbƒsƒ“ƒO‚·‚éƒNƒ‰ƒX‚ª‚È‚¯‚ê‚ÎA - XML‚¾‚¯‚ðƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B + å˜ä¸€ã®ãƒžãƒƒãƒ”ングã¯ã€ã‚¯ãƒ©ã‚¹ã®ãƒ—ロパティã¨XMLドキュメントã®ãƒŽãƒ¼ãƒ‰ã‚’ + åŒæ™‚ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ãƒžãƒƒãƒ”ングã™ã‚‹ãŸã‚ã«ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ + ã¾ãŸãƒžãƒƒãƒ”ングã™ã‚‹ã‚¯ãƒ©ã‚¹ãŒãªã‘ã‚Œã°ã€ + XMLã ã‘をマッピングã™ã‚‹ãŸã‚ã«ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ - XML‚ƃNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚𓯎ž‚ÉŽw’è‚·‚é + XMLã¨ã‚¯ãƒ©ã‚¹ã®ãƒžãƒƒãƒ”ングをåŒæ™‚ã«æŒ‡å®šã™ã‚‹ - ‚±‚ê‚ÍPOJO‚ÆXML‚𓯎ž‚Ƀ}ƒbƒsƒ“ƒO‚·‚é—á‚Å‚·BF + ã“ã‚Œã¯POJOã¨XMLã‚’åŒæ™‚ã«ãƒžãƒƒãƒ”ングã™ã‚‹ä¾‹ã§ã™ã€‚: - XMLƒ}ƒbƒsƒ“ƒO‚¾‚¯‚ðŽw’è‚·‚é + XMLマッピングã ã‘を指定ã™ã‚‹ - ‚±‚ê‚ÍPOJOƒNƒ‰ƒX‚ª‚È‚¢ƒ}ƒbƒsƒ“ƒO‚Ì—á‚Å‚·BF + ã“ã‚Œã¯POJOクラスãŒãªã„マッピングã®ä¾‹ã§ã™ã€‚: ]]> - ‚±‚̃}ƒbƒsƒ“ƒO‚É‚æ‚èAdom4jƒcƒŠ[‚©A - ƒvƒƒpƒeƒB–¼/’l‚Ì‘g‚̃Oƒ‰ƒtijava‚Ì Mapj‚Æ‚µ‚Ä - ƒf[ƒ^‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B + ã“ã®ãƒžãƒƒãƒ”ングã«ã‚ˆã‚Šã€dom4jツリーã‹ã€ + プロパティå/値ã®çµ„ã®ã‚°ãƒ©ãƒ•ï¼ˆjavaã® Map)ã¨ã—㦠+ データã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ - ƒvƒƒpƒeƒB‚Ì–¼‘O‚ÍAHQLƒNƒGƒŠ[“à‚ÅŽQÆ‚Å‚«‚郈‚Ș_—\‘¢‚Å‚·B + プロパティã®åå‰ã¯ã€HQLクエリー内ã§å‚ç…§ã§ãる純粋ãªè«–ç†æ§‹é€ ã§ã™ã€‚ @@ -111,53 +113,53 @@ - XMLƒ}ƒbƒsƒ“ƒO‚̃ƒ^ƒf[ƒ^ + XMLマッピングã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ - ‘½‚­‚ÌHibernate‚̃}ƒbƒsƒ“ƒO—v‘f‚Í@node@‘®«‚ªŽg—p‚Å‚«‚Ü‚·B - ‚±‚ê‚É‚æ‚èXML‘®«‚Ì–¼‘O‚âƒvƒƒpƒeƒB‚âƒGƒ“ƒeƒBƒeƒBƒf[ƒ^‚ð•ÛŽ‚·‚é—v‘f‚ðŽw’è‚Å‚«‚Ü‚·B - node@‘®«‚̃tƒH[ƒ}ƒbƒg‚͈ȉº‚Ì’†‚Ì1‚‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñBF + 多ãã®Hibernateã®ãƒžãƒƒãƒ”ングè¦ç´ ã¯ã€€node 属性ãŒä½¿ç”¨ã§ãã¾ã™ã€‚ + ã“ã‚Œã«ã‚ˆã‚ŠXML属性ã®åå‰ã‚„プロパティやエンティティデータをä¿æŒã™ã‚‹è¦ç´ ã‚’指定ã§ãã¾ã™ã€‚ + node 属性ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¯ä»¥ä¸‹ã®ä¸­ã®1ã¤ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。: - "element-name" - Žw’肵‚½XML—v‘f‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚· + "element-name" - 指定ã—ãŸXMLè¦ç´ ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ - "@attribute-name" - Žw’肵‚½XML‘®«‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚· + "@attribute-name" - 指定ã—ãŸXML属性ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ - "." -@e—v‘f‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚· + "." - 親è¦ç´ ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ "element-name/@attribute-name" - - Žw’肵‚½ƒGƒŒƒƒ“ƒg‚ÌŽw’肵‚½‘®«‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚· + 指定ã—ãŸã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã®æŒ‡å®šã—ãŸå±žæ€§ã¸ãƒžãƒƒãƒ”ングã—ã¾ã™ - ƒRƒŒƒNƒVƒ‡ƒ“‚Æ’Pˆê‚Ì’l‚ÌŠÖ˜A‚ɑ΂µ‚ÄA - ‚¨‚Ü‚¯‚Ì embed-xml ‘®«‚ª‚ ‚è‚Ü‚·B - ƒfƒtƒHƒ‹ƒg‚Ì embed-xml="true" ‚Æݒ肵‚½ê‡A - ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB(’lŒ^‚̃RƒŒƒNƒVƒ‡ƒ“)‚ÌXMLƒcƒŠ[‚ÍA - ’¼ÚŠÖ˜A‚ðŠ—L‚·‚éƒGƒ“ƒeƒBƒeƒB‚ÌXMLƒcƒŠ[“à‚É–„‚ßž‚Ü‚ê‚Ü‚·B - ”½‘΂ÉAembed-xml="false" ‚Æݒ肵‚½ê‡A - ŽQÆ‚³‚ê‚鎯•ÊŽq‚Ì’l‚¾‚¯‚ª‘½d“x‚P‘¤‚ÌŠÖ˜A‚ɑ΂·‚éXML‚ÉŒ»‚êA - ’Pƒ‚ɃRƒŒƒNƒVƒ‡ƒ“‚Í‚Ü‚Á‚½‚­Œ»‚ê‚È‚­‚È‚è‚Ü‚·B + コレクションã¨å˜ä¸€ã®å€¤ã®é–¢é€£ã«å¯¾ã—ã¦ã€ + ãŠã¾ã‘ã® embed-xml 属性ãŒã‚ã‚Šã¾ã™ã€‚ + デフォルト㮠embed-xml="true" ã¨è¨­å®šã—ãŸå ´åˆã€ + 関連ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£(値型ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³)ã®XMLツリーã¯ã€ + 直接関連を所有ã™ã‚‹ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®XMLツリー内ã«åŸ‹ã‚è¾¼ã¾ã‚Œã¾ã™ã€‚ + å対ã«ã€embed-xml="false" ã¨è¨­å®šã—ãŸå ´åˆã€ + å‚ç…§ã•ã‚Œã‚‹è­˜åˆ¥å­ã®å€¤ã ã‘ãŒå¤šé‡åº¦ï¼‘å´ã®é–¢é€£ã«å¯¾ã™ã‚‹XMLã«ç¾ã‚Œã€ + å˜ç´”ã«ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ã¾ã£ãŸãç¾ã‚Œãªããªã‚Šã¾ã™ã€‚ - ‚ ‚Ü‚è‚É‘½‚­‚ÌŠÖ˜A‚ɑ΂µ‚Ä - embed-xml="true" ‚Æ‚µ‚½‚Ü‚Ü‚É‚·‚é‚Ì‚Í’ˆÓ‚·‚ׂ«‚Å‚·B - XML‚ÍzŠÂ‚ð‚¤‚Ü‚­ˆµ‚¦‚Ü‚¹‚ñB + ã‚ã¾ã‚Šã«å¤šãã®é–¢é€£ã«å¯¾ã—㦠+ embed-xml="true" ã¨ã—ãŸã¾ã¾ã«ã™ã‚‹ã®ã¯æ³¨æ„ã™ã¹ãã§ã™ã€‚ + XMLã¯å¾ªç’°ã‚’ã†ã¾ã扱ãˆã¾ã›ã‚“。 ]]> - ‚±‚Ì—á‚Å‚ÍAŽÀÛ‚Ìaccount‚̃f[ƒ^‚Å‚Í‚È‚­A - account‚Ìid‚̃RƒŒƒNƒVƒ‡ƒ“‚ð–„‚ßž‚Þ‚±‚Æ‚É‚µ‚Ü‚µ‚½B - ‘±‚«‚ÌHQLƒNƒGƒŠ‚Å‚·F + ã“ã®ä¾‹ã§ã¯ã€å®Ÿéš›ã®accountã®ãƒ‡ãƒ¼ã‚¿ã§ã¯ãªã〠+ accountã®idã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’埋ã‚込むã“ã¨ã«ã—ã¾ã—ãŸã€‚ + 続ãã®HQLクエリã§ã™ï¼š - ‚±‚̂悤‚ȃf[ƒ^ƒZƒbƒg‚ð•Ô‚·‚Å‚µ‚傤 + ã“ã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã‚’è¿”ã™ã§ã—ょㆠ@@ -219,9 +221,9 @@ ]]> - <one-to-many> ƒ}ƒbƒsƒ“ƒO‚Å - embed-xml="true" ‚Æݒ肵‚½ê‡A - ƒf[ƒ^‚Í‚±‚̂悤‚É‚È‚é‚Å‚µ‚傤B + <one-to-many> マッピング㧠+ embed-xml="true" ã¨è¨­å®šã—ãŸå ´åˆã€ + データã¯ã“ã®ã‚ˆã†ã«ãªã‚‹ã§ã—ょã†ã€‚ @@ -245,11 +247,11 @@ - XMLƒf[ƒ^‚ðˆµ‚¤ + XMLデータを扱ㆠ- XMLƒhƒLƒ…ƒƒ“ƒg‚ðAƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚ÅÄ“Ç‚Ýž‚Ý‚âXV‚ð‚µ‚Ä‚Ý‚Ü‚µ‚傤B - ˆÈ‰º‚Å‚Ídom4j‚̃ZƒbƒVƒ‡ƒ“‚ðŽæ“¾‚·‚邱‚Æ‚Ås‚¢‚Ü‚·BF + XMLドキュメントをã€ã‚¢ãƒ—リケーション内ã§å†èª­ã¿è¾¼ã¿ã‚„æ›´æ–°ã‚’ã—ã¦ã¿ã¾ã—ょã†ã€‚ + 以下ã§ã¯dom4jã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’å–å¾—ã™ã‚‹ã“ã¨ã§è¡Œã„ã¾ã™ã€‚: - XMLƒx[ƒX‚̃f[ƒ^‚̃Cƒ“ƒ|[ƒg/ƒGƒNƒXƒ|[ƒg‚ðŽÀ‘•‚·‚邽‚ß‚ÉA - Hibernate‚Ì replicate() ‘€ì‚ð‚±‚Ì‹@”\‚ðŒ‹‚Ñ‚Â‚¯‚é‚Ì‚Í - ‹É‚ß‚Ä—LŒø‚Å‚·B + XMLベースã®ãƒ‡ãƒ¼ã‚¿ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ/エクスãƒãƒ¼ãƒˆã‚’実装ã™ã‚‹ãŸã‚ã«ã€ + Hibernateã® replicate() æ“作をã“ã®æ©Ÿèƒ½ã‚’çµã³ã¤ã‘ã‚‹ã®ã¯ + 極ã‚ã¦æœ‰åŠ¹ã§ã™ã€‚ diff --git a/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml b/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml index 1fe3fba20b..b2dcbfa5bf 100644 --- a/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml +++ b/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml @@ -1,4 +1,4 @@ - +