-1

嗨,现在我JSF2+Hibernate在我的网络项目中使用,但我知道Spring它非常流行和强大的框架(我是 Spring 中的新手)所以我正在考虑集成SpringHibernate4在我的项目中,所以我在谷歌中寻找一些演示示例,但我注意到在大多数地方人们使用下面的代码进行会话初始化

public class UserDAO implements IUserDAO {

     private SessionFactory sessionFactory;

     /**
      * Get Hibernate Session Factory
      *
      * @return SessionFactory - Hibernate Session Factory
      */
     public SessionFactory getSessionFactory() {
      return sessionFactory;
     }

     /**
      * Set Hibernate Session Factory
      *
      * @param SessionFactory - Hibernate Session Factory
      */
     public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }

这是SessionFactory在每个DAO类中创建对象的好方法吗?或者有什么更好的方法来处理数据库连接?这样就没有任何会话管理不善的机会。请帮助我实施最佳方法。谢谢

4

2 回答 2

1
  1. 添加BaseDAO
  2. 扩展你的每个 DAO (extends BaseDAO)
  3. 仅添加sessionFactoryBaseDAO并制作protected SessionFactory sessionFactory.

您将可以访问sessionFactory所有扩展BaseDAO.

abstract public class BaseDAO {
   protected SessionFactory sessionFactory;

   public void setSessionFactory(SessionFactory sessionFactory) {
      this.sessionFactory = sessionFactory;
   }
}

public class UserDAO extends BaseDAO implements IUserDAO {
...
}
于 2013-08-19T06:46:53.610 回答
0

它会起作用的。

@Transactional
    public class ProductDaoImpl implements ProductDao {
        private SessionFactory sessionFactory;

        @Resource
        public SessionFactory getSessionFactory() {
            return sessionFactory;
        }

        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }

        public void save(Product product) {
            Session session = getSessionFactory().openSession();
            try {
                session.save(product);
            } finally {
                session.close();
            }
        }

    }
于 2013-08-19T06:36:57.907 回答