1.14 session的删改

一、delete方法

在detached状态下删除teacher对象。代码如下:

 

根据ID号删除实例

 

二、load方法

load方法是从数据库中加载实例。它有两个参数:第一个是类型,第二个是序列化接口类型(ID数字型打包成Intiger实现了该接口)

load方法特性:利用load方法加载对象时,只是生成Teacher对象的一个代表(系统并没有将Teacher加载出来),在后面打印teacher对象的名字时,系统才会加载(延迟加载)。特别注意:在事物提交后,如果调用teacher对象的名字,系统将会报错。因为无法调用了,session关闭了。【设计模式中:动态代理模式】

 

三、get方法

同样的利用get方法,将不会出现load方法的报错情况,因为调用get方法时,就将teacher对象装入了。

 

四、get+update方法进行更新

 

如果你想设定某个字段不能更新,用annotated的方法为:

@column(updatable=false)

public String getName(){}

用xml的方法为:<property name="name" update=false></property>

注意:在<class name="hibernate.util.Student" dynamic_update="true">这样做得目的是使得hibernate在进行更新时,只对有变更的字段进行更新;否则,hibernate生成的更新sql语句将对对象所有字段进行更新。

五、saveorupdate方法

 

前面执行的是save方法,后面执行的是update方法

 

六、clear方法

clear方法可以清除缓存中的对象

 

七、flush方法

上面只执行第二个setname的方法。而使用下面方法可以执行两次数据库中的修改。

 

代码为:

t.setname("tt");

session.flush();

t.setname("tttt");

什么时候flush,取决于flushmode。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值