- 1 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 11:54:44 ]
- 前スレ:
Java⇔RDBのMapping-Frameworkを語るThre Vol.3 ttp://pc8.2ch.net/test/read.cgi/tech/1090653286/ 過去スレ: 「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」(落ち) ttp://pc5.2ch.net/test/read.cgi/tech/1086315004/ 「Java⇔RDBのMapping-Frameworkを語るスレ」(落ち) ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/ ●まずは、基礎知識と技術選択指針など [The Fundamentals of Mapping Objects to Relational Databases] (RDBに対するオブジェクトマッピングの基礎(英語)) ttp://www.agiledata.org/essays/mappingObjects.html [O/R-Mappingツールの比較サイト(英語)] ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison [Catalog of Patterns of Enterprise Application Architecture (PoEAA)] ttp://www.martinfowler.com/eaaCatalog/ あとは>>2以降
- 786 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:45:09 ]
- > 質問2.:
Spring の HibernateTemplate は基本的にすべての作業を HibernateCallback インターフェイス内で 行う。 この HibernateCallback には、Object doInHibernate(Session session) という関数が定義されており、 この関数に渡される Session は Spring が破棄してくれる。 さらに、Spring では HibernateCallback を実装しなくてもある程度は実行できるようにいくつかの簡単な 関数を HibernateTemplate で提供してくれている。 > return getHibernateTemplate().find("from person"); も、そのうちの一つ。これを、HibernateCallback を使用して実装すると以下のような感じになる。 return getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createQuery("from person"); return query.list(); } }); Spring のソースを追えばすぐに分かると思う。
- 787 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:54:03 ]
- このように、Hibernate+Spring の組み合わせの場合、基本的には Session#close() などを Spring 側に任せるように
することが出来る。 >>784 も言及しているが、この辺は各プロジェクトでどのような扱いにしているのかで話が変わってくるので、 聞いた方が早い。 ただ、HibernateDaoSupport を継承したとしても、HibernateCallback の中でない限りは Spring が Session を自動的に 閉じたりすることを期待できない気もする。 とはいえ、AOP を使用して閉じるようにしているのかもしれないので断言は出来ない。 だけど、ScrollableResults は自力で閉じないとムリなような気が・・・。
- 788 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:28:46 ]
- Struts+Spring+Hibernateの組み合わせなら、AOPで閉じてるかSession In Viewで閉じてるはず。
てか、俺はそうした。
|

|