表8-1 Hibernate方法总结
方 法 |
描 述 |
创建、读取、更新和删除 | |
save() |
将一个对象保存到数据库。对于已经保存到数据库的对象,不应该调用这个方法 |
saveOrUpdate() |
将一个对象保存到数据库,如果对象已经存在的话,就更新数据库。这个方法的效率比save()方法略微低一点儿,因为它需要执行一个SELECT语句来检查对象是否已经存在;但是,如果对象已经保存过,它不会失败 |
merge() |
将未持久化对象的字段合并进适当的持久化对象(由ID决定)。如果数据库中不存在对应的对象,那么就创建对象并保存 |
persist() |
将一个对象与会话重新关联起来,让对对象的修改持久化 |
get() |
根据对象的标识符从数据库中获取特定的对象 |
getEntityName() |
获取实体名(这常常与POJO的类名相同) |
getIdentifier() |
判断与会话相关联的一个特定对象的标识符(代表主键的对象) |
load() |
根据对象的标识符从数据库加载一个对象(如果不确定这个对象在数据库中是否存在,那么应该使用get()) |
refresh() |
用数据库中的数据刷新一个相关联对象的状态 |
update() |
用对对象的修改更新数据库 |
delete() |
从数据库中删除对象 |
createFilter() |
创建一个过滤器(查询)来减小数据库操作的范围 |
enableFilter() |
在查询中启用由createFilter()产生的一个命名过滤器 |
disableFilter() |
禁用一个命名过滤器 |
getEnabledFilter() |
获取当前启用的过滤器对象 |
createQuery() |
创建一个应用于数据库的Hibernate查询 |
getNamedQuery() |
从映射文件获取一个查询 |
cancelQuery() |
取消当前从另一个线程执行的任何查询 |
createCriteria() |
创建一个条件对象来减小搜索的范围 |
方 法 |
描 述 |
事务和锁 | |
beginTransaction() |
开始一个事务 |
getTransaction() |
获取当前的事务对象。如果当前没有事务,这个方法不会返回null。而是返回对象的active属性是false |
lock() |
获得一个对象的数据库锁(如果设置了LockMode.NONE,它的作用与persist()相似) |
管理资源 | |
contains() |
判断特定的对象是否与数据库相关联 |
clear() |
清空所有加载的实例的会话,并且取消还没有完成的所有保存、更新和删除操作。保留正在使用的迭代器 |
evict() |
解除一个对象与会话的关联,以后对对象的修改将不持久化 |
flush() |
将所有未保存的修改存储进数据库——执行所有保存、更新和删除操作;这实际上会让会话与数据库同步 |
isOpen() |
判断会话是否已经关闭 |
isDirty() |
判断会话是否与数据库同步 |
getCacheMode() |
判断当前使用的缓存模式 |
setCacheMode() |
改变当前使用的缓存模式 |
getCurrentLockMode() |
判断当前使用的锁模式 |
setFlushMode() |
判断当前使用的转储清除方法。可用选项是在每个操作之后转储清除、在需要时转储清除、不转储清除或只在提交时转储清除 |
setReadOnly() |
将一个持久化对象标为只读(或可写)。将对象标为只读会对性能有些许好处,但是直到将它标为可写之前,对它的状态的修改会被忽略 |
close() |
关闭会话,因此也会关闭底层数据库连接;释放其他资源(比如缓存)。在调用close()之后,就不能在Session对象上执行操作 |
getSessionFactory() |
获取创建当前Session实例的SessionFactory对象的引用 |
JDBC连接 | |
connection() |
获取底层数据库连接的引用 |
disconnect() |
断开底层数据库连接 |
reconnect() |
重新连接底层数据库 |
isConnected() |
判断是否连接了底层数据库 |