介绍
最近我开始使用Eclipse作为我的开发环境部分原因是因为在我进行开发的许多平台上都可以使用Eclipse来工作还有部分原因是因为Eclipse是展示人人皆可作出贡献的开放可扩展环境的优势的一个极好的例子我开始研究其他人提供的对Eclipse的扩展例如当用到xml文件时我使用XMLBuddy插件该插件对于我的工作很有助益因为最近一直在写Developers Notebook所以我很想知道是不是已经有人写了关于Hibernate的插件事实上有好几个这样的插件正在开发在这篇文章中我们将探索其中之一Hibernate Synchronizer
Hibernate Synchronizer
在我找的和Hibernate有关的插件中Hibernate Synchronizer最令我感兴趣因为它为我在Developers Notebook书中采用的以映射为中心的工作流(mappingcentric workflow)提供了最好的支持(可以用多种方法使用Hibernate你可能会试试其它一些插件它们提供的方法可能正是你自己特定环境所要求的)事实上当使用Hibernate Synchronizer时如果你改变了映射文件你不需要为更新相应的java文件而劳心费神当你编辑映射文件时和Eclipse采取的方法类似该插件自动更新你的java代码还不止于此还提供了比Hibernate内建的代码生成工具更多的功能它为每个映射对象创建一对类( a pair of classes)其中一个是基础类当你改变映射内容时它可以随意重写这个类另一个类作为该基础类的子类在子类中你可以添加具体的商业逻辑和另一些代码使用这个插件生成java代码时不用象使用Hibernate内置的代码生成工具那样担心其它代码(如商业逻辑的代码)会在你的眼皮底下消失
对于以Hibernate影射文档为基础的方法还有一些其它的好处Hibernate Synchronizer有一个新编辑器当编辑这类文件时为Eclipse添加了智能辅助和自动完成功能一个比较好的以DTD驱动的XML编辑器如以前提及的XMLBuddy也可以完成部分功能与此相比Hibernate Synchronizer利用对影射文档语义的了解提供了更进一步的功能例如提供了对属性和影射关系的可视化显示创建新元素的向导界面象以上提及的一样缺省设置情况下当你编辑影射文档时编辑器会自动生成数据访问类(dataaccess class)
当然还有其它一些功能在Eclipse的新建(New)菜单中提供了一个向导可以用来创建Hibernate配置文件和映射文件在包资源浏览器(package explorer)和其它一些合适的地方增加了上下文菜单方便调用和Hibernate相关的功能
好了在这些抽象的描述之后到了开始做实事的时候当然这正是你兴趣所在不然你就不会读这篇文章怎么安装和使用呢?下边一一解释
安装
Hibernate Synchronizer可以用Eclipse内置的更新管理器(Update Manager)来安装对Eclipse 和即将发布的Eclipse 的用户提供了不同的更新站点(因为用Eclipse作关键性的工作我仍使用作为产品发行的版当我写这篇文章的时候Eclipse 已经进入了候选发布阶段我希望当我今夏晚些时候从JavaOne回来时我可以更新到版本的产品发行版提及这个的主要原因是因为我想强调一下这些指南是以Eclipse 的角度的来讲解毫无疑问一些命令和窗口会在版本中发生变化因此当你使用Eclipse 时你应当做一些相应的调整我印象中Hibernate Synchronizer自己的install instructions是针对Eclipse 也许这对你有所帮助
启动Eclipse顺次单击帮助(Help) >软件更新(Software Updates) > 更新管理器(Update Manager)来打开更新管理器当安装/更新(Install/Update)透视图打开之后在功能更新视图(Feature Updates)中用右键单击(如果你用的单键你需要controlclick)选择新建(New) > 站点书签(Site Bookmark)如图中所示
educitycn/img_///gif >图 在更新管理器中添加Hibernate Synchronizer插件的更新地址
在弹出对话框中输入适合你的Eclipse版本的插件地址
·Eclipse :
·Eclipse :
还需要为新建的书签命名Hibernate Synchronizer就是个很贴切的名字图中显示的是在Eclipse 中填完所有需要的信息后的对话框填完之后你可单击完成(Finish)按钮来完成增加书签
educitycn/img_///gif >图 Hibernate Synchronizer插件更新站点书签
单击完成(Finish)后新建的书签就会出现在功能更新(Feature Updates) 视图中如图中所示
educitycn/img_///gif >图 Hibernate Synchronizer站点已经可以使用
为了实际安装该插件单击该书签左边的三角形符号然后再次单击在书签下边出现的条目左边的三角形符号继续这个过程一直到书签下边出现的条目中出现该插件的图标单击该条目就会出现一个可以让你安装的界面如图所示
educitycn/img_///gif >图 准备开始安装插件
单击Install Now让Eclipse引导你完成安装(如图)
educitycn/img_///gif >图 安装Hibernate Synchronizer
educitycn/img_///gif >
图 许可协议
你可以看看下边TradeOffs部分对许可协议的一些讨论当你打算在实际的项目中使用该插件时想必你会仔细研究该协议我认为也许好一点不过该插件基于GPL协议而不是开放源代码令人迷惑
educitycn/img_///gif > 选择安装位置缺省的已经很好了
educitycn/img_///gif >图 安装没有签名插件时的标准警告
educitycn/img_///gif >
图 正在进行安装
educitycn/img_///gif >
图 完成安装
现在已经完成安装你需要退出然后重新启动Eclipse以使所做的更改生效看上边的对话框好像说能够自动重新启动Eclipse以我的经验Eclipse只会退出还是需要你自己手工重新启动这可能是Max OS X平台上Eclipse 的一个局限Eclipse 已经许诺把对OS X的支持列入第一级别无论如何这只是个小问题如果你需要重新启动Eclipse现在就可以这样做安装完之后接着需要对其对其进行配置以便在项目中使用
配置
重新启动Eclipse后关闭安装/更新透视图打开一个使用Hibernate的Java工程如果你已经完成了Developers Notebook一书中的例子那么就有几个目录可供你选择这里以书中第三章中的例子来说明第三章是可以在线免费获得的样章你还可以从该书的站点下载所有例子的源代码
如果你打算使用其中的一个例子来新建一个Eclipse工程选择文件(File) >新建( New )> 工程(Project)选定工程类型然后单击下一步(Next)填入该工程名(我填的是Hibernate Ch如图所示)不要复选使用缺省检查框(Use default)这样你可以告诉Eclipse从哪里找到已经存在的工程目录单击浏览按钮(Browse)来定位目录选定工程目录后可以单击完成(Finish)来创建工程不过一般情况下我喜欢单击下一步(Next)来复查Eclipse为此工程所作的设置(当然如果发现有些配置不对总是可以选择回退来修改这些设置不过我总是发现如果有一个库文件丢失或是其它一些原因会有非常多的错误和警告信息)
educitycn/img_///gif >图 创建一个需要使用Hibernate的新工程
在当前情况下我的谨慎有点多余Eclipse准确的算出了目录是如何组织以及是用来干什么的找到我为使用Hibernate和 HSQLDB 数据库而下载的第三方库(下载和安装的详细过程可以参看书中第一章)如此聪明的适应能力是Eclipse优点之一图显示新工程已经打开准备好可以用来做实验从这个图中也可以推断Eclipse不喜欢调整窗口大小使其小到形成合适的屏幕布局从现在开始显示的屏幕截图只显示窗口的一部分而不是完整的窗口
educitycn/img_///gif >图 使用Chapter 例子的工程
下一个需要做的工作是创建一个Hibernate配置文件提供给Hibernate Synchronizer使用在src目录中已经有了一个hibernateproperties文件这是书中例子使用的配置这里有个问题坏消息是Hibernate Synchronizer只能使用XML样式的Hibernate配置文件这样就需要把hibernateproperties中的内容移植到XML样式的配置文件hibernatecfgxml中好消息是这正是Hibernate Synchronizer创建配置文件向导第一次大显身手的时候选择文件(File) >新建(New) > 其它(Other)然后在弹出对话框选取刚可用的Hibernate类选取 Hibernate Configuration File然后单击下一步(Next)
educitycn/img_///gif >图 打开Hibernate配置文件向导
打开向导时保存文件的位置和在Eclipse中现在选择的文