冬眠的工作。每次都要使用交易吗?如果我在重新绑定数据时不使用它,会引起任何问题吗?

lee*_*lee 2 java session hibernate

我写了下面的代码来从数据库中检索数据,那我们需要开始事务吗?因为它运行没有任何问题。是否有必要每次使用?如果不这样做,将来会不会引起任何问题?

public static Student getStudentById(long id) {
    Session session = null;
    Student student = null;
    //Transaction transaction=null;
    try {
        session = HibernateUtil.getSessionFactory().openSession();
        //transaction = session.getTransaction();
        //transaction.begin();
        /**
         * names in the query should match the related class name and variable names.
         */
        Query query = session.createQuery("from Student where studentId = :id");
        query.setLong("id", id);
        student = (Student) query.uniqueResult();
        //transaction.commit();
    } catch (HibernateException e) {
        //transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
    return student;
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*Jay 7

根据休眠文档数据库或系统,事务边界始终是必需的。在数据库事务之外不能与数据库进行任何通信(这似乎使习惯于自动提交模式的许多开发人员感到困惑)。始终使用明确的事务边界,即使是只读操作也是如此。根据您的隔离级别和数据库功能,这可能不是必需的,但是如果您始终明确地划分事务,则没有不利之处。当然,即使读取数据,单个数据库事务也将比许多小型事务执行得更好。

您可以在这里参考休眠文档