使用什么 session.beginTranscation 或 session.getTranscation?
what to use session.beginTranscation or session.getTranscation?
我正在使用 Spring mvc 和 Hibernate。
我对 beginTranscation 和 getTranscation 感到困惑。
使用任何代码都可以,但我想知道哪种方法是正确的。
下面是我的Dao代码class
Session session = sessionFactory.getCurrentSession();
session.beginTransaction().begin();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
session.beginTransaction().commit();
谁能告诉我应该使用 beginTranscation 还是 getTrancation ?
session.getTransaction().begin() - 假设交易已经存在(您已经开始交易),并且它将使用它。
session.beginTransaction() - 将检查是否已经存在交易,如果存在则不会创建新交易,并将使用 运行 一个。如果还没有交易存在,它将创建一个新交易。
所以显然取决于您的需求。
此外,请注意,因为您正在调用 sessionBeginTransaction()
两次,所以请将您的代码更改为
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
tx.commit();
而这个 session.beginTransaction().begin()
调用等于 session.beginTransaction()
一般来说,由于您已经配置了Spring环境,Spring具有强大的transaction management , so instead of handling transactions by yourself, stick to what offers a framework you are using. At least you can try to use programmatic way of managing transactions (e.g. TransactionTemplate)
我正在使用 Spring mvc 和 Hibernate。 我对 beginTranscation 和 getTranscation 感到困惑。 使用任何代码都可以,但我想知道哪种方法是正确的。
下面是我的Dao代码class
Session session = sessionFactory.getCurrentSession();
session.beginTransaction().begin();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
session.beginTransaction().commit();
谁能告诉我应该使用 beginTranscation 还是 getTrancation ?
session.getTransaction().begin() - 假设交易已经存在(您已经开始交易),并且它将使用它。
session.beginTransaction() - 将检查是否已经存在交易,如果存在则不会创建新交易,并将使用 运行 一个。如果还没有交易存在,它将创建一个新交易。
所以显然取决于您的需求。
此外,请注意,因为您正在调用 sessionBeginTransaction()
两次,所以请将您的代码更改为
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
tx.commit();
而这个 session.beginTransaction().begin()
调用等于 session.beginTransaction()
一般来说,由于您已经配置了Spring环境,Spring具有强大的transaction management , so instead of handling transactions by yourself, stick to what offers a framework you are using. At least you can try to use programmatic way of managing transactions (e.g. TransactionTemplate)