hibernate学习(4)——update

  update方法用于更新数据库内容。在hibernate API中的解释是可以把一个Detached状态的对象更新成Persistent对象。而通过实验发现,只要是有Id的对象(数据库有相应记录,包括手动指定id的Transient对象)都可以使用update方法进行更新。而对于Persistent对象来说,只要重新设置了对像的属性值,再Session提交的时候就会自动更新(隐式的调用update方法?)。关于更新。hibernate在Session flush的时候会和数据库进行比较。如果Session缓存中数据和数据库里的不一致就会发出Sql语句进行更新。

  注意到不论是使用update方法还是hibernate自动更新的时候,发出的sql语句都是把整个表的所有字段都更新一遍。这样在有的情况下(有某个字段存的数据比较大)效率会比较低。自然就想到要是能改动了那个字段就更新那个字段就好了。实现这个功能的方法有3个:1、在xml中配置property的update属性,对应在annotation中设置@column的updatable。(不灵活)2、在xml中设置dynamic-update。但是在annotation中没有对应的设置。可以使用merge()方法。3、使用hql语句来更新(实用的方法)。

你可能感兴趣的:(Hibernate)