动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java布局管理器使用方法探讨.
.编辑Java类对象.
.基于J2EE的电子商务网站实例.
.另一种bbs设计的思路.
.struts标签使用举例--logic篇.
.constructor 属性.
.J2EE项目执行:若干最佳实践.
.Weblogic上配置Hibernate为JNDI.
.MIDlet生命周期的理解及游戏死机.
.Java 概 述.
.最佳J2EE方案讨论之O-R Mapping.
.Java极度性能调整.
.Java中Sprite类的defineReferenc.
.J2EE1.4新特性之EJB2.1的新特性.
.一个字母频率分析计算小程序.
.简析JAVA的XML编程(to:初学者们).
.JavaOne2003:Less hype more fi.
.论J2EE程序员的武功修为.
.SCJP 310-025 Braindumps.
.使用JBuilder2007开发Web Servic.

在Eclipse中使用Hibernate二(驵图)

发表日期:2008-1-5 |



  添加Driver Class 的方法有点希奇,你需要单击Browse按钮,然后开始输入driver的类名(译者注:你需要确定该driver类在该工程的类路径中)。假如你输入"jdbcD",窗口就会出现这个选择,很轻易就可以从中选取一个。具体如图15所示。
  
 在Eclipse中使用Hibernate二(驵图)(图一)
  图15 指定HSQLDB的driver类

  
  只要添加如图14中那些属性值就可以。完成后单击Finish来完成创建配置文件。Hibernate Synchronizer 现在已经可以开始使用了。完成创建文件后,配置文件会打开,这时候你就可以看看Hibernate XML格式的配置文件的结构和细节。
  
 在Eclipse中使用Hibernate二(驵图)(图二)
  图16 生成的配置文件

  
  要想测试配置文件是否可用,有一个又快又简单的方法:使用向导来创建一个影射文件。选择文件(File) -> 新建(New) -> 其它(Other),选取Hibernate类别,然后再选Hibernate 影射文件,单击下一步(Next)。向导出现的时候,其中有些属性已经自动填入了在配置文件中相应属性的值,单击Refresh(确保可以通过这些信息和你的数据库相连)。和数据库连接后,会显示库中的表,这里只有一个TRACK表。第一次使用的时候,不知什么原因,需要你指定包含HSQLDB驱动的.jar文件的路径。好在你只需要指定一次。只要你认为工作正常(译者注:显示了数据库中有权限访问的表),单击Cancel。试验中使用已有的影射文件,不需要实际创建一个。
  
  生成代码
  
  这可能是你一直在等待的部分。我们能用这个插件来做什么?好,马上就开始。为Hibernate影射文档提供一个新的菜单条目。
  
  右击(假如是单键鼠标,在按住Control键的同时点鼠标键)一个影射文档,菜单条目中会显示几个和Hibernate相关的选择(如图17所示),其中有一个和synchronize有关,这是一个手工方法,可以让Hibernate Synchronizer产生和该影射文档相对应的数据访问对象。
  
 在Eclipse中使用Hibernate二(驵图)(图三)
  图17 Synchronizer插件为影射文档提供的几个菜单项

  
  Add Mapping Reference 选项也很有用,当你单击该项时,会把相应的影射文件增加到Hibernate配置文件中,表明该文件是影射文档,因此你不需要在源代码中增加任何信息要求相应的影射文件进行设置。现在让我们看看选取Synchronize Files后的结果。
  
  事情开始变得有趣,出现了两个子包,一个是“base”的DAO,Hibernate Synchronizer所有,可以在任何时候重写,一个是继续那些DAO类的商业对象,不会被覆盖,也就给了我们一个机会,可以在其中加入商业逻辑(具体如图18中所示)。
  
 在Eclipse中使用Hibernate二(驵图)(图四)
  图18 同步后的DAO,图中显示的是我们可以编辑的子类

  
  和Hibernate的代码生成工具相比,用该插件生成了更多的类。这是优点,也可能是一些潜在的缺点,将在Trade-Offs 部分进行讨论。你可以在工程配置文件中选取要生成的类和它们所在的包的结构。我可以证实这点,但现在的发行版有个bug ,,无法访问Mac OS X上的配置界面。针对该bug的一个补丁已经做好了,但仍没有发布。
  
  基于Hibernate Synchronizer网页上的例子,和以下这个类一起,用那些新的数据访问对象来试着把一些数据放入数据库中。看起来和标准的Hibernate代码生成工具生成的版本(在Hibernate: A Developer's Notebook一书的39-40页)很相似,甚至更简单一些。因为Hibernate Synchronizer生成的类为你的每个数据库操作都创建和提交一个新事务,因此在与此类似的简单情况下,你不需要自己来设置事务(当然,假如你需要把一组操作作为一个单独事务,有很多方法可以做到这点)这里是新版本的代码。
  
  package com.oreilly.hh;import Java.sql.Time;
  import java.util.Date;import net.sf.hibernate.HibernateException;
  import com.oreilly.hh.dao.TrackDAO;import com.oreilly.hh.dao._RootDAO;
  /** * Try creating some data using the Hibernate Synchronizer approach.
  */public class CreateTest2 {
  public static void main(String[] args) throws HibernateException {
  // Load the configuration file
  _RootDAO.initialize();
  // Create some sample data
  TrackDAO dao = new TrackDAO();
  Track track = new Track("Russian Trance", "vol2/album610/track02.mp3",
  Time.valueOf("00:03:30"), new Date(), (short)0);
  dao.save(track);
  track = new Track("Video Killed the Radio Star",
  "vol2/album611/track12.mp3", Time.valueOf("00:03:49"), new Date(),
  (short)0);
  dao.save(track);
  // We don't even need a track variable, of course:
  dao.save(new Track("Gravity's Angel", "/vol2/album175/track03.mp3",
  Time.valueOf("00:06:06"), new Date(), (short)0));
  }}
  
  当我写这个的时候,有Eclipse在手边真是太好了 ,我已经忘了当写书中例子的时候多么想念智能代码完成功能,有另外几件事情JDT也发挥了作用。
  
  为了在Eclipse中运行这个简单的程序,需要设置一个新的运行配置。用CreateTest2.java作为当前文件,选择运行(Run )-> 运行...(Run...)。然后单击新建(New),因为该类有一个main() 方法,Eclipse推断出要运行该工程的当前类。Eclipse为新的运行配置取的名字,CreateTest2,很合适。屏幕窗口看起来如图19中所示,单击运行来在数据库中创建一些数据。
  
 在Eclipse中使用Hibernate二(驵图)(图五)
  图19 预备在Eclipse中运行创建数据的测试程序

  
  假如你确实按照上边说的来做,你会发现第一次的尝试运行失败。Hibernate抱怨配置文件中连一个映射文件都没有参考,为了运行程序,至少需要一个这样的文件。这也是为什么XMLBuddy在图16底部用黄色下划线发出警告。可以很轻易修改该错误,你只要在包资源浏览器(Package EXPlorer)中的Track.hbm.xml这个影射文档上单击右键,在Hibernate Synchronizer子菜单中选取Add Mapping Reference(如图17中所示),这样XMLBuddy就不会再抱怨XML文件有错误,程序也可以继续向前。不幸的是,没有向前推进我们所愿的那样远,下一个问题又出来了。Eclipse中显示的下一个错误是“不能在JNDI中找到JTA UserTransaction initial context”。不止我一个人犯这种错误,因为在a forum thread中有这样的讨论,而且到目前为止仍然没有找到一个解决方法。
  
  既然我知道不需要使用JTA,我倒是很想知道为什么Hibernate竟然会使用JTA?打开Hibernate配置文件,如图16所示,看看是不是Hibernate Synchronizer在其中加入了可疑的内容。看了配置文件后,可以确定,有一些行看起来是罪魁祸首:
  <property name="hibernate.transaction.factory_class">
  net.sf.hibernate.transaction.JTATransactionFactory
  </property>
  <property name="jta.UserTransaction">
  java:comp/UserTransaction </property>
  
  一旦把那些行变成注释后,再次运行程序。这次,也就是第三次运行成功。我在自己计算机上运行没有一点错误,数据已经保存到数据库中。运行 ant db 这个target(在Developer's Notebook一书的第一章有相应的解释)可以把表中所有的数据显示出来(不可否认,这也许有点简单),如图20中所示。假如你跟着这篇文章中顺序来做的,而不是跟着书中步骤一步一步来的,你需要先运行ant schema来创建数据库中的表,或是删除以前试验留下的数据。
  
 在Eclipse中使用Hibernate二(驵图)(图六)
  图20 在Eclipse中运行Ant

  
  你可以在Eclipse内运行Ant的target,方法是用右键单击包资源浏览器(Package Explorer)中的build.xml 文件,选择菜单中的运行Ant(Run Ant),然后在弹出对话框中选择你要运行的target,如图21所示。这个功能很cool。
  
 在Eclipse中使用Hibernate二(驵图)(图七)
  图21 在Eclipse中运行Ant

  
  查询数据相当简单、直白,即使Hibernate Synchronizer产生了很多辅助方法来使用指定查询,我认为这些没有什么用处,都是运行查询,然后返回包含结果的列表,而不是返回一个Query对象,让你直接使用该对象。这使你不能使用任何Query提供的、方便的、类型安全(type-safe)的参数设置方法,因为这个,我打算让_RootDAO对象提供一个Session对象,可以用“老式”的方法来使用Hibernate。公平来说,我认为假如编辑Hibernate Synchronizer 用来生成代码所使用的模板,就可以生成想要的任何方法,假如有一个项目,要用到该插件,可以肯定我会试着这么做。
  
  实际上,进一步考虑,当你得到一个活动的Session时,你只能使用Query,而这些DAO对象已经提供为相应功能最佳的实现。假如你和我在例子中使用查询的方法一样,那就需要你自己来实现session治理。你能够把session治理内嵌于你自己所写的那一半DAO中,这样可以给你提供两方面的好处。(译者注:和有base的java POJO对象一样,对于DAO,该插件也生成一对类,一个base DAO给该插件用,一个是继续该base DAO的自定义DAO,你可以在其中添加商业逻辑)。这也是Hibernate Synchronizer把类分隔开来如此有用的另一个原因。对该插件的远见在下边做了一点研究
  
  不管怎么说,下边是我第一次使用的代码,和书中48-49页上的代码功能
上一篇:Hibernate中any元素的应用体会 人气:584
下一篇:在Eclipse中使用Hibernate一(组图) 人气:743
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成