2016-12-28 94 views
0

我沒有太多的實踐標準,甚至更少的使用Spring類,如HibernateDaoSupport。HibernateDaoSupport.getSession已棄用:如何將其替換爲創建Criteria?

我繼承了一個項目的所有道延伸的HibernateDaoSupport,和所有的方法都使用這樣的標準:

final Criteria criteria = this.getSession().createCriteria(MyClass.class, "alias"); 

因爲我的Maven遷移下的項目和升級的Spring版本(3.0.4 - > 3.2.17),getSession已被棄用。

重構所有Criteria創建的最佳實踐是什麼?

謝謝。

PS:做了一些研究,沒有發現此刻真正的解決辦法......所以請原諒我,如果這是一個重複的主題,或者如果有一個簡單的答案

+0

是HibernateTemplate.execute是否適合您的目的?它使用方法doInHibernate(Session)獲取HibernateCallback作爲參數 –

+0

您應該使用SessionFactory而不是HibernateDaoSupport。按照: http://stackoverflow.com/questions/5104765/why-is-hibernatedaosupport-not-recommended http://stackoverflow.com/questions/11188633/hibernatedaosupport-in-hibernate-4-0 –

+0

所以替換this.getSession()通過this.getSessionFactory()。getCurrentSession()?因爲我不想重現所有的應用程序(太多行代碼) – MychaL

回答

0

在實踐中,使用了一個SessionFactory直接是很好的做法。

經過研究,這是因爲在Spring 3中,事務管理現在是「最優」的。 但是,不幸的是,在這個繼承的項目中,Spring配置(1.x)非常糟糕,不可能在不重構的情況下使用SessionFactory。

最後,我們選擇了HibernateTemplate而不是HibernateDaoSupport。它的getSession方法用於創建Criteria不被棄用。

相關問題