hibernate 常用方法介绍
程序员文章站
2023-12-20 22:18:34
一、hibetnatetemplate常用方法1、delete(object entity) 删除指定的持久化实例在程序中一般先用 as...
一、hibetnatetemplate常用方法
1、delete(object entity) 删除指定的持久化实例
在程序中一般先用 assert.notnull和 assert.istrue断言entity是否为空 和 entity的id是否大于0若
否则事务回滚。再用get(class entityclass,serializable id,lockmode lockmode)加锁查询出持久
化实例,一般用lockmode.update悲观锁,最后用delete(object entity)来删除此实例。
2、deleteall(collection entities) 删除集合内全部持久化实例
entities必须为持久化实例,否则报数据库异常错误。
3、find(string querystring) 根据hql查询字符串来返回实例集合
find方法在执行时会先查找缓存,如果缓存找不到再查找数据库,如果再找不到就会返回null。
4、get(class entityclass,serializable id)根据主键加载特定持久化实例
在程序中一般先用 assert.istrue断言id是否大于0,若大于0继续执行,若查到数据则返回实例,否则返回空
不同于load,load若有数据则返回实例,否则报出objectnotfoundecception异常,相比来说get效率高些
5、save(object entity) 保存新的实例
在程序中一般先用 assert.notnull断言实体是否为空,在进行保存。
6、saveorupdate(object entity)根据实例的状态选择保存或者是更新
此方法同时包含了save与update方法的功能,如果传入的参数是临时对象vo 没有id,就调用save方法;如果传
入的参数是游离对象有id,就调用update()方法;如果传入的参数是持久化对象po,就直接返回。
7、update(object entity) 更新实例的状态 实例必须为持久化状态
在程序中一般先用 assert.notnull和 assert.istrue断言entity是否为空 和 entity的id是否大于0,
然后在更新实例,entity必须含有id否则不能更新。
8、object execute(hibetnatecallback action)是hibernatecallback接口类。
当dao中的方法不能满足程序需要时可以考虑用此方法。如:根据几个不同参数需要返回唯一实体时用uniqueresult()返回。
hibernatecallback里面定义了一个doinhibernate的方法,这个方法是可变的。如果要查找数据方法应该就
是:session.load()。删除数据就是session.delete().这样的话查询数据库的方法用execute方法。
9、bulkupdate()通过语句直接增加、更新、删除实体
一般有bulkupdate(string sqlstring) 和 bulkupdate(string sqlstring,object[] object)两个
方法,返回增加,更新,或者删除的数量一般用于批量。
10、hibernate主键生成策略
(1)assigned: 在插入数据的时候主键由用户自己添加。如:<generator class="assigned"/>
(2)sequence: 调用数据库的sequence来生成主键,要设定序列名,否则hibernate无法找到。
如:<param name="sequence">entty_name_seq</param>
(3)increment 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,
所以在多个实例运行的时候不能使用这个方法。
11、实体对象的三种状态
session的生命周期绑定在一个物理的事务(tansaction)上面。
session的主要功能是提供对映射的实体类实例的创建,读取和删除操作
(1)*状态(transient): 不曾进行持久化,未与任何session相关联
(2)持久化状态(persistent): 仅与一个session相关联
持久化实例可以通过调用 delete()变成游离状态。通过get()或load()方法得到的实例都是持久化状态的
(3)游离状态(detached): 已经进行过持久化,但当前未与任何session相关联
游离状态的实例可以通过调用update(),lock(),replicate(),save(),persist()或者saveorupdate()方法进行持久化
1、delete(object entity) 删除指定的持久化实例
在程序中一般先用 assert.notnull和 assert.istrue断言entity是否为空 和 entity的id是否大于0若
否则事务回滚。再用get(class entityclass,serializable id,lockmode lockmode)加锁查询出持久
化实例,一般用lockmode.update悲观锁,最后用delete(object entity)来删除此实例。
2、deleteall(collection entities) 删除集合内全部持久化实例
entities必须为持久化实例,否则报数据库异常错误。
3、find(string querystring) 根据hql查询字符串来返回实例集合
find方法在执行时会先查找缓存,如果缓存找不到再查找数据库,如果再找不到就会返回null。
4、get(class entityclass,serializable id)根据主键加载特定持久化实例
在程序中一般先用 assert.istrue断言id是否大于0,若大于0继续执行,若查到数据则返回实例,否则返回空
不同于load,load若有数据则返回实例,否则报出objectnotfoundecception异常,相比来说get效率高些
5、save(object entity) 保存新的实例
在程序中一般先用 assert.notnull断言实体是否为空,在进行保存。
6、saveorupdate(object entity)根据实例的状态选择保存或者是更新
此方法同时包含了save与update方法的功能,如果传入的参数是临时对象vo 没有id,就调用save方法;如果传
入的参数是游离对象有id,就调用update()方法;如果传入的参数是持久化对象po,就直接返回。
7、update(object entity) 更新实例的状态 实例必须为持久化状态
在程序中一般先用 assert.notnull和 assert.istrue断言entity是否为空 和 entity的id是否大于0,
然后在更新实例,entity必须含有id否则不能更新。
8、object execute(hibetnatecallback action)是hibernatecallback接口类。
当dao中的方法不能满足程序需要时可以考虑用此方法。如:根据几个不同参数需要返回唯一实体时用uniqueresult()返回。
hibernatecallback里面定义了一个doinhibernate的方法,这个方法是可变的。如果要查找数据方法应该就
是:session.load()。删除数据就是session.delete().这样的话查询数据库的方法用execute方法。
9、bulkupdate()通过语句直接增加、更新、删除实体
一般有bulkupdate(string sqlstring) 和 bulkupdate(string sqlstring,object[] object)两个
方法,返回增加,更新,或者删除的数量一般用于批量。
10、hibernate主键生成策略
(1)assigned: 在插入数据的时候主键由用户自己添加。如:<generator class="assigned"/>
(2)sequence: 调用数据库的sequence来生成主键,要设定序列名,否则hibernate无法找到。
如:<param name="sequence">entty_name_seq</param>
(3)increment 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,
所以在多个实例运行的时候不能使用这个方法。
11、实体对象的三种状态
session的生命周期绑定在一个物理的事务(tansaction)上面。
session的主要功能是提供对映射的实体类实例的创建,读取和删除操作
(1)*状态(transient): 不曾进行持久化,未与任何session相关联
(2)持久化状态(persistent): 仅与一个session相关联
持久化实例可以通过调用 delete()变成游离状态。通过get()或load()方法得到的实例都是持久化状态的
(3)游离状态(detached): 已经进行过持久化,但当前未与任何session相关联
游离状态的实例可以通过调用update(),lock(),replicate(),save(),persist()或者saveorupdate()方法进行持久化