初学hibernate,对flush方法不懂。

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:16:14
this.openSession();//打开session
tb.setName("zhangsam");//为之久化类赋值
session.save(tb);//保存
session.flush();//不理解
TestBean tb = session.get(TestBean.class,1);//查找对象

flush方法是清理缓存的,然后session发送inset语句,将数据插入到数据库中。
书上讲的是“执行insert语句保存对象。目的是创建一个处于缓存中的对象。”创建一个处在缓存中的对象怎么理解啊????

hibernate的实体都是存储在缓存中的,所以你会发现有的时候当你创建出两个主键相通的实体的时候会报错。正常情况是当你调用save方法的时候,这个实体对象未必已经保存到数据库了,调用close方法的时候,对象才真正保存如数据库。当你调用flush方法的时候是强制将对象保存到数据库。

用hibernate处理批量插入或更新时,才使用
session.flush()和session.clear(),两个方法放在循环中同时使用 单个插入不要用这个