表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() | 判断是否连接了底层数据库 |