Aru*_*run 1 java hibernate jdbc java-ee
在我的项目中,他们以下面提到的方式使用Hibernate的会话,然后在事务中保存实体对象.
Session session = HibernateUtil.getCurrentSession();
session.beginTransaction();
Employee employee = new Employee() ;
employee.setName("someName") ;
employee.setEmailId ("someId")
employee.setID (100000) ;
session.saveOrUpdate(employee) ;
session.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
现在我的功能很少,我决定运行本机SQL.下面是我用来运行本机sql的方式.我想在事务中运行查询,所以我决定以下面的方式编写代码
String query = "select name from master_employee where id=?"
Session session = HibernateUtil.getCurrentSession();
session.beginTransaction();
Connection connection = session.connection();
PreparedStatement psStmt = connection.prepareStatement(query);
psStmt.setInt(1,id) ;
ResultSet resultSet = psStmt.executeQuery();
// here i will take data from this result set
psStmt.close();
resultSet.close() ;
// I am not closing the connection object since am taking it from hibernate session
// rather i commit hibernate's transaction
session.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?交易还会被管理吗?从会话中获取连接对象无法管理到事务????
请告诉我这样使用有什么问题??? 谢谢
是的,这里没有问题.
但是,使用Session.createSQLQuery()以下命令运行本机查询会容易得多:
Session session = HibernateUtil.getCurrentSession();
session.beginTransaction();
String name = (String) session
.createSQLQuery("select name from master_employee where id = ?")
.setInteger(1, id)
.uniqueResult();
session.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |