0

プロジェクトをspring 3.0.5 & hibernate 3からspring 3.1.1 & hibernate 4.1にアップグレードしています

私はorg.springframework.orm.hibernate3.support.HibernateDaoSupportを広範囲に使用しています。具体的にはHibernateTemplate ; このスニペットのように:

public class MenuDaoImpl extends HibernateDaoSupport implements MenuDao, Serializable {

public List<Menu> getMenus() {
    return getHibernateTemplate().find("from Menu menu");
}

//etc

}

しかし、HibernateTemplateの使用は推奨されなくなったことを読みました。

では、Spring3.1.1 で DAO 内のデータベースにアクセスするための推奨される方法は何ですか?

ありがとう

4

2 に答える 2

4

EntityManager を注入し、それを直接使用します。

public class MenuDaoImpl implements MenuDao {


@PersistenceContext
private EntityManager entityManager;

...

}

SpringSource ブログの良い例を次に示します。

于 2012-04-18T11:02:25.457 に答える
2

Hibernate 3.0.1以降、Springでは。SessionFactoryではなく、の使用を推奨していますHibernateTemplate

Spring 3.0 HibernateTemplate APIドキュメントから:

注:Hibernate 3.0.1以降、トランザクションHibernateアクセスコードはプレーンなHibernateスタイルでコーディングすることもできます。したがって、新しく開始されたプロジェクトの場合は、SessionFactory.getCurrentSession()に基づいて、代わりに標準のHibernate3スタイルのコーディングデータアクセスオブジェクトを採用することを検討してください。

例:

public class MenuDao {

    @Autowired
    private SessionFactory sessionFactory;

    public List<Menu> getMenus() {
        return (List<Menu>) sessionFactory.getCurrentSession.createQuery("from Menu").list();
    }
}
于 2012-04-18T20:01:03.897 に答える