用户登录
用户注册

分享至

hibernate不用事务

  • 作者: 亖呉?盀
  • 来源: 51数据库
  • 2021-01-24
你所看到的数据库没反映并不是说数据库没有进行任何的更改

而是数据同步的问题

就像你同时打开两个超作数据库的窗口

在其中一个插入数据,不commit,在另外的窗口就查询不出来

但是在插入窗口是可以查询出来的

hibernate就像是你开的第二个窗口

当然楼上说的很对不修改数据库的数据是不会存在数据不同步的说法的。

这不是hibernate本身的问题哦
建议你看下数据库的知识哦



  

使用hibernate本身就是为了使用面向对象的方法来操作数据,并不是直接去操作表,它会自动生成sql并执行。你首先要建立一个对应表结构的实体类和一个映射xml文档,并要在hibernate的配置文件做些配置,这个需要你去认真学习一翻了。

1、增:

public boolean add(info info){
boolean fag =true;
session session =hibernatesessionfactory.getsession();
transaction tx =null; //初始化事务
try{
tx = session.begintransaction();
session.save(info);
tx.commit();
}catch(exception e){
tx.rollback();
fag = false;
}finally
{
session.close();
}

return fag;
}

2、删:

public boolean delete(string id){
boolean fag =true;
session session =hibernatesessionfactory.getsession();
transaction tx =null; //初始化事务
info info = new info();
try{
tx = session.begintransaction();
info = (info)session.get(info.class,id);
session.delete(info);
tx.commit();
}catch(exception e){
tx.rollback();
fag = false;
}finally
{
session.close();
}

return fag;
}

3、改:

public boolean update(info info){
boolean fag = true;
session session =hibernatesessionfactory.getsession();
transaction tx =null; //初始化事务
try{
tx = session.begintransaction();
string hql = "update info as a set s.name=?,s.pwd=?where s.id=?";
query query = session.creatquery(hql);
query.setparameter(0,info.getname());
query.setparameter(1,info.getpwd());
query.setparameter(2,info.getid());
session.update(info);
tx.commit();
}catch(exception e){
tx.rollback();
fag = false;
}finally
{
session.close();
}

return fag;
}





  恩.楼上说的有道理.不过加个log4j进去..有日志文件就行了!



  因为查询的时候不改变数据库啊,只要能查出来看到就可以了,要事物干什么?
软件
前端设计
程序设计
Java相关