HibernateTemplate的
常规
用法
1
,void delete
( Object entity ) : 删除指定持久化实例
public void removePerson( int
personid)
{
//先加载特定的实例
Object p = getHibernateTemplate().load(
Person.class , new Integer( personid));
//删除特定实例
getHibernateTemplate().delete
(p);
}
2
,deleteAll
( Collection entities ) :
删除集合内全部持久化类实例
3
,find
( String queryString ) :
根据HQL查询字符串来返回实例集合
Public List getPersons()
{
//返回Person的全部实例
return
getHibernateTemplate().find
( " from
Person " );
}
4
,findByNamedQuery
( String queryName) :
根据命名查询返回实例集合
5
,get
( Class entityClass , Serializable id ) :
根据主键加载特定持久化类的实例
public Person getPerson()
{
//返回特定主键对应的Person实例
return (Person)getHibernateTemplate().get
(Person.class , new Integer(person
id));
}
6
,save
( Object entity ) : 保存新的实例
7
,saveOrUpdate
( Object entity ): 根据实例状态,选择保存或者更新
8
,update
( Object entity ) : 更新实例的状态,要求entity是持久状态
9
,setMaxResults
( int maxResults ) : 设置分页的大小。
HibernateTemplate的
更灵活
的用法
:
更灵活的访问是通过以下两个方法完成的:
Object
execute ( HibernateCallback
action )
;
List execute ( HibernateCallback
action
);
这两个方法都需要一个HibernateCallback的实例,可以在任何有效的hibernate数据访问中使用。用法灵活,解决了Spring封装Hibernate后灵活性不足的缺陷。
HibernateCallback
是一个接,该接口只有一个方doInHibernate
( org.hibernate.Session session ),
该方法只有一个参数Session.
具体代码如下:
public class PersonDaolmpl implements
PersonDao
{
// 私有实例变量保存SessionFactory
private SessionFactory
sessionFactory;
// 依赖注入必需的setter 方法
public void
setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory =
sessionFactory;
}
/**
*通过人名查找所有匹配该名的Person 实例
* @param name
匹配的人名
* @return 匹配该任命的全部Person 集合
*/
public List
findPersonsByName(final String
name)
//创建HibernateTemplate实例
HibernateTemplate hibernateTemplate = new
HibernateTemplate(this.sessionFactory);
//返回HibernateTemplate的execute
的结果
return (List) hibernateTemplate.execute
(
//创建匿名内部类
new
HibernateCallback
()
public Object
doInHibernate
(Session session)
throws
Hibernate Exception
{
//使用条件查询的方法返回
List result =
session.createCriteria(Person.class)
.add(Restrictions.like("name", name+ "
%") .list ( ) ;
return result;
} )
:
}
}
注意:在方法doInHibernate内可以访问到Session,该session是完全绑定到当前线程的Session实例,保证在对于复杂的持久层访问时,依然可以使用Hibernate的访问方式。
分享到:
相关推荐
小红薯电商实操课小红书开店实操必学课.mp4
AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
基于java的新能源充电系统设计与实现.docx
吸波材料建模单元周期仿真模拟,参数优化,计算反射损耗,极化角,入射角,等效阻抗等
AGV调度系统的仿真平台(含源码+项目说明+实验结果分析).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
【本体】Internet Download Manager v6.42.26.zip
NLP中文垃圾短信分类系统源码+设计全部资料+文档报告(自然语言处理课设).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
Python大作业封面.doc
基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开
操作系统课后题参考答案
几何图霸软件是一个非常强大的三维几何图形绘制工具,可以根据约束条件绘制标准示意图,写相关技术类文章需要绘图时很适用。
《写给大众的健康饮食指南》.mp4
智能相册Piktures v2.19 build 815 for 高级版.mp4
建行开养老金必中58元微信立减金亲测.mp4
Converter视频音频转换器v2.2.5.2解锁VIP版.mp4
车来了v4.59.0高级版 精准实时公交地铁神器.mp4
基于java的招生宣传管理系统设计与实现.docx
iiiicfdfdsffffffffffffffffffff
这是本人期末复习期间的产物,传上来主要是为了方便保存和复习,如有错漏还请谅解。