【问题标题】:Hibernate hql and session managementHibernate hql 和会话管理
【发布时间】:2013-01-10 22:27:57
【问题描述】:

这周我学会了编写休眠程序,我不确定我的方法是否正确。我阅读了很多文章,每一篇 hibernate 文章看起来都有些不同。我正在使用 Hibernate 4,这是从我的数据库中获取数据的正确方法吗?它目前正在工作,但如果这是最好的方法,我不知道 :) 我错过了什么吗?是否有更好/更清洁的方法来获取数据?

    @Autowired
private SessionFactory sessionFactory;

public List<UserFigures> getKeyFigure(int userId) {

    Session session = getSessionFactoryDw().openSession();

    String hql = "from Figures " +
                "where UserID = :userId ";

    Query query = session.createQuery(hql);
    query.setParameter("userId", userId);
    List<UserFigures> res = query.list();
    session.close();
    return res;
}

【问题讨论】:

    标签: hibernate hql sessionfactory


    【解决方案1】:

    您的代码的主要问题是不遵守 Java 命名约定、缺少事务以及糟糕的会话处理代码。

    鉴于您对@Autowired 的使用,我猜您正在使用Spring。因此,您应该使用 Spring 会话和事务管理来建立与当前 Spring 声明性事务相关联的上下文会话(即使用 sessionFactory.getCurrentSession() 而不是 sessionFactory.openSession())。

    Spring 文档有一个完整的chapter dedicated to Hibernate。阅读它。

    另外,Figures 应命名为 Figure

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      相关资源
      最近更新 更多