Hbernateでは、Hibernature Templateを使用する3つの方法


回転:http://www.oseye.net/kb/show/1376 記録収集をするだけです.文章に違いがあります.発掘が必要です.
私たちのプロジェクトでは、常にHbernature DaoSupportから受け継いで、彼のHbernature Templateを使ってパッケージ化してくれます.
ユーザーモジュールの持続層UserDaoというクラスのaddUser(User user)方法を例に挙げます.
第一の方法:userDao extens Hbernate DaoSupport:(推奨されていない)
このクラスを継承するには、ヒベルナタテックスの対象を注入しなければならないことを知っています.またはSession Factoryの対象ですが、ヒベルナタDaoSupportという類のすべての方法はfinalで、彼のsetsSession Factory(Session Factory session Factory)メソッドを書き換えることができません.このオブジェクトを第二の方法:
public class BaseDao extends HibernateDaoSupport {   
       
    @Resource(name="sessionFactory")   
    public void setSF(SessionFactory sessionFactory) {   
        super.setSessionFactory(sessionFactory);   
    }   
 }  
私たちはDao層の基質を抽出し、これをヒベルナDaoSupportに引き継ぎ、自分で勝手に方法パラメータを書くのがSession Factoryです.そして方法上に@Resourceコメントを入れて、Session Factoryの対象をこの方法に注入してから、この方法で父類の中でもHybernatiDaoSupportのFactionを呼び出します.(Session Factory session Factory)方法はsession Factoryを彼に注入します.デフォルトでは@Resourceコメントは名前によって注入されますが、この時私達が自分で書いたこの方法はspringプロファイルの中のidの名前と一致できないので、タイプによって注入されます.そして私達のUserDao類は私達のBaseDao類を継承して、HbernatieTemlateの方法を使うことができます.
第三の方法:
public class BaseDao extends HibernateDaoSupport {
	private HibernateTemplate hibernateTemplate;
	@Resource
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
}
やはりBaseDaoのクラスを抽出して、Hbernature DaoSupportのクラスを引き継ぎませんでした.私はこのクラスの中で、Hbernature Templateタイプの属性を定義して、このクラスを注入します.UserDaoなどの持久化類は依然としてこのクラスから継承されています.Hbernature Templateの方法を使用することができます.