仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 418|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页编程之利用模板形式简化DAO操纵Hibernate

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是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:48 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-25 17:37:20 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
小魔女 该用户已被删除
地板
发表于 2015-2-1 16:58:00 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
不帅 该用户已被删除
5#
发表于 2015-2-7 09:58:15 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-21 14:57:46 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-6 20:20:07 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
老尸 该用户已被删除
8#
发表于 2015-3-13 08:08:35 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
简单生活 该用户已被删除
9#
发表于 2015-3-20 16:57:20 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-3 14:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表