使用hibernate插入数据对象不成功,且数据库自增长

最近在写一个struts1.0+hibernate的demo 

在使用hibernate插入书库对象的时候 出现了

不能插入到数据库的问题

回想在以前都是使用spring+hibernate去集成的插入的 在这里买包括了事务的操作

所以在使用单独的hibernate去操作的时候 页会出现事务的问题

这里贴出我的 代码


@Override
public boolean insertUserInfo(UserInfo userInfo) {
Session session = getSession();
//Transaction aa = session.beginTransaction();
Object object = session.save(userInfo);
System.out.println(object);
//aa.commit();
session.flush();
session.close();
if (object != null)
return true;
return false;

}

在这里注释的部分 是后来加的 在加之前h是不可以提交到数据库的 我很郁闷

在网上找了好多 大家也有这样的问题 我只记得 在使用sqlserver2008执行删除的时候 需要 flush一下

这回我是使用的mysql数据库的 



在这里贴出网友的博客


测试方法:
         Session session = getSession();//取得session
        Client client = new Client();
        client.setClientName("client");
        session.save(client); // 保存
         session.close();

当不加入事务的时候执行,在控制台打印sql语句:
     Hibernate: insert into chapter6.clients (clientName) values (?)
问题1:
但是查询数据库中并没有添加记录?这是为什么?
但是我用sql手动添加数据时候,发现clientId已经自增了,这又是为什么?

测试方法:
        Session session = getSession();
        tx = session.beginTransaction();
Client client = new Client();
client.setClientName("client");
session.save(client);
tx.commit();
         session.close();

当加入事务的时候,数据插入没有问题,数据库中也可以查询到。
问题2:
       session的sava方法必须加入事务才能成功提交吗?
附:数据库mysql5.0

问题补充:
to llade (高级程序员)
System.out.println(session.getFlushMode());打印结果为AUTO,没有设置FlushModel,默认就为AUTO,同时我调用session.flush()同样不能持久到数据库。
但是我用sql手动添加数据时候,发现clientId已经自增了,这又是为什么?
问题补充:
to:wangxin0072000
谢谢你的提示,数据库的autocommit=1;
查询了hibernate官方指南,发现hibernate对自动提交默认为false,必须加入事务手动提交,也可以在hibernate配置文件钟加入属性connection.autocommit并设置为true(不推荐这样),这样不加入事物也可以自动提交,在没有设置改属性之前,如果不加入事物,即使调用session.flush(),数据也不能插入数据库;但还有问题:
为什么数据库中没有插入数据,自增变量的值却自增了;也就是当我在不加入事务和不设置connection.autocommit属性的情况下调用save()方法,数据库没有插入数据,但是我数据库钟设置为auto_increment的字段id的值却自增了,因为当我手动插入数据发现id值已经是2了?


在这里 对于自动增长的问题 我来稍微的分析一下 

首先稍微解释一下事务 对于事务来说 事务本省就是数据库的特有名词

当我们在执行一个插入操作的时候 其实数据库已经将这个数据保存起来了,只是没有显示到列表中,当我们如果执行事务去提交的话 他就把这条数据

放在表中,然而如果我们没有提交数据库就会删除这条数据 那么这个自动增长的列就自然会留下来了。


不知道自己的思路是否正确 还请大家多指教。

(个人微信号)  (技术公众号)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值