仓酷云
标题:
JAVA网页编程之利用模板形式简化DAO操纵Hibernate
[打印本页]
作者:
冷月葬花魂
时间:
2015-1-18 11:10
标题:
JAVA网页编程之利用模板形式简化DAO操纵Hibernate
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。模板 信任利用过Spring+Hibernate开辟过的人,在写DAO的时分都利用过Spring的HibernateDaoSupport类,然后在完成的时分就能够很轻松的利用getHibernateTemplate()办法以后就能够挪用save()、delete()、update()等Hibernate的Session的操纵,很复杂。好比:
getHibernateTemplate().save(user);
如许一句话在我们没有Spring的时分就必需利用以下的代码才干完成:
Sessionsession=HibernateUtil.getSession();
Transactiontx=session.beginTransaction();
session.save(user);
tx.commit();
HibernateUtil.colseSession();
这里还省往了非常处置,同时利用了HibernateUtil类来简化从SessionFactory猎取Session,和封闭Session等处置。
可是我们在利用Hibernate的时分纷歧定会利用Spring,以是我们能够仿照Spring的处置体例,做一个Hibernate的模板,利用模板形式来简化我们的开辟,其次要的目标就是为了简化开辟,使代码到达最诳言的重用。
1.我们现来完成一个Hibernate模板:
packagekick.hibernate;
importnet.sf.hibernate.HibernateException;
importnet.sf.hibernate.Session;
importnet.sf.hibernate.Transaction;
publicclassHibernateTemplate{
publicstaticObjectrun(HibernateCallbackcallback)throwsHibernateException{
Sessionsession=null;
Transactiontx=null;
try{
session=HibernateSessionutil.currentSession();
tx=session.beginTransaction();
Objectresult=callback.execute(session);
tx.commit();
session.flush();
returnresult;
}catch(HibernateExceptione){
tx.rollback();
returnnull;
}finally{
HibernateSessionutil.closeSession();
}
}
这里类很复杂,就是利用一个完成HibernateCallBack接口的一个回失落类,在挪用的时分依据详细的需务实现HibernateCallBack类。
2.回失落接口HibernateCallBack:
packagekick.hibernate;
importnet.sf.hibernate.HibernateException;
importnet.sf.hibernate.Session;
publicinterfaceHibernateCallBack{
Objectexecute(Sessionsession)throwsHibernateException;
}
好了,到此为止我们就能够利用这个模板了,能够用以下的体例利用:
HibernateTemplate.run(newHibernateCallback(){
publicObjectexecute(Sessionsession)throwsHibernateException{
session.save(user);
returnnull;
}
});
看看,是否是省往了良多代码?
不外这还没有到达想Spring内里那样复杂,不要发急,“面包会有的”,我们会到达的。
3.完成我们本人的HibernateSupport类
从下面的代码能够看出,我们要本人完成HibernateCallback接口,而每次我们完成的时分又反复代码了。因而我们再笼统,讲这些完成放到我们的HibernateSupport类内里往。看看我们下面的代码就晓得我们完成HibernateCallback接口的目标就是为了挪用session.save()办法,即session的办法。代码以下:(点击检察
附件
)
4.笼统RootDao:
该类为笼统类,在完成本人的DAO类的时分承继该类。该类的有一个HibernateSupport的对象,在子类中利用getHibernateTemplate()办法就能够失掉该对象,然后挪用它对应的办法。完成代码以下:
packagekick.hibernate.dao;
importnet.sf.hibernate.Session;
importkick.hibernate.HibernateTemplateImpl;
publicabstractclassRootDao{
privateHibernateSupporttemp=null;
/**
*@returnReturnsthetemp.
*/
publicHibernateTemplateImplgetHibernateTemplate(Sessionsession){
returnnewHibernateSupport();
}
}
5.利用例子:
界说一个本人的DAO类,完成代码以下:
publicclassUserDaoImplextendsRootDaoimplementsUserDaoInterface{
publicvoidsaveUser(Useruser)throwsKickException{
getHibernateTemplate().saveOrUpdate(user);
}
…………………………………………
完成其他的办法
…………………………………………
}
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
作者:
山那边是海
时间:
2015-1-20 15:53
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
愤怒的大鸟
时间:
2015-1-25 17:37
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者:
小魔女
时间:
2015-2-1 16:58
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
不帅
时间:
2015-2-7 09:58
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
金色的骷髅
时间:
2015-2-21 14:57
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者:
第二个灵魂
时间:
2015-3-6 20:20
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者:
老尸
时间:
2015-3-13 08:08
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者:
简单生活
时间:
2015-3-20 16:57
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2