Spring集成Hibernate源码方法解析一

继承HibernateDaoSupport后. 里面有直接的getSession方法 不需要getHibernateTemplate()获取实例,该方法提供了一个重载,
用于在不存在的时候创建一个session

其中可以选择是否session的单例.就是一个线程内共享一个session,需要研究找下点资料NativeSession,以及两个boolean设置

get方法有四个重载 第一个为普通的Class类型,主键
第二个为类,主键,是否锁定
第三个和第四个为executeWithNativeSession的方法调用

load方法也是四个,使用和上面一样 关注executeWithNativeSession,以及String entityName 这个的类型到底是什么
load方法还有个重载,传入一个Object对象,以及一个ID 可是返回void,应该是用于加载数据到缓存,或者是重新加载一次数据
loadall方法用于加载指定类的全部数据库实例 参数为一个class
refresh 用于更新对象 两个重载,包括了是否锁定LockMode

contains方法判断是否存在当前对象,传入Object对象

evict方法用于一级缓存中清除一个对象

initialize方法 强制全部加载一个对象 传入一个Object 代理对象 PS:这里的代理应该指数据库数据在内存中的对象映射

lock 方法 会从数据库检查版本

String entityName 用于在同类名的时候进行更新操作 ,用到的方法很多

Update 同样都是四个方法重载

savaOrUpdateAll(Collection) 用于传入一个集合,然后进行更新, 其实也是在内部进行循环更新

lock 是把一个没有更改过的脱管状态的对象变成持久状态
Update 是把一个已经更改过的脱管状态的对象变成持久状态

session.replicate() 直接把游离态对象变成持久态的对象

persist把一个瞬态的实例持久化 不过需要flush的时候才会被保存

clear方法同样提供了清空session缓存操作

查询的语句

find方法 3个重载
第一个为简单的HQL语句
第二个为加入一个Object参数的语句,用于传递单一的条件,其中在方法中会被转换成一个数组
第三个为传入一个数组,会在循环里面赋值给HQL语句中的?. 也就是第二个重载的实现


findByNamedParam()方法 2个重载,通过传入HQL语句(带:参数),对应的参数名,以及对应的值 进行HQL查询
其中第二个是多参数的形式,第一个中也是调用了第二个的实现

findByValueBean() 方法提供了HQL语句和对象的查询 传入一个HQL语句和一个Object对象,setProperties的形式

findByNamedQuery() 应该是提供了按照顺序的复制生成HQL语句,具体用途未知,可能是根据属性名和HQL中的名字,进行自动转换

findByNamedQueryAndNamedParam() 两个重载,提供了上面两种方法的合体

findByNamedQueryAndValueBean()上面也进行了描述

findByCriteria()根据Criteria(条件)进行查询 提供了两个重载
其中第一个中进行了第二个重载的调用
第二个方法中的后面两个参数提供了firstResult和maxResults的分页功能,如果不设置,可以成-1;也就是第一个重载的实现

findByExample()提供了四个的重载, 其中两个是输入了完整的类名,防止类名重复
参数基本也为Object,firstResult,maxResults

iterate()方法提供了3个的重载,分别为一个HQL语句,一个Object或者Object数组
用于直接生成Iterator的方式查询

closeIterator(Iterator it) 用于显式的关闭该Iterator对象

bulkUpdate()提供了3个重载,功能类似与HQL和参数的传入,然后进行操作,不过是在内部进行了循环的执行HQL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值