产生数据库中的表
和我的第一印象-一切都可以通过影射文档得到-不同,Hibernate Synchronizer现在没有为创建或更新数据库提供任何支持。支持论坛上已经张贴了一个这样的功能要求,如果我们将来看到这些功能,我不会感到惊奇。这种功能应该不是很难。暂时,你不得不采用其他方法,如果你想从影射文档生成数据库,你可以象Hibernate: A Developer's Notebook 一书中使用Ant一样来做到。下边描述的Hibernator插件支持在Eclipse中更新数据库。或许,我应该研究一下是否能够同时安装这两个插件。
好了,我当然希望这个简单介绍的指南能够让你对这个插件的功能有一个大致的了解,当然,我没有提及它的所有功能。如果文中有些内容激起了你的兴趣,那就下载,安装,自己试试。
Trade-Offs
很清楚,你可以用Hibernate Synchronizer来做灵巧的事情。我会在我自己的Hibernate项目中使用该插件吗?这个想法有其它一些优缺点需要考虑,可能现在还不是做决定的时候,直到需要用Hibernate来取代自家酿(当然非常简单)的、已经在工作的轻量级O/R工具时才能做出决定。这是个足够重要的改变,我们一直推迟做出决定,直到有其它原因出现。下边的因素在我的决定中占有重要分量。
在安装部分已经提及,有几个涉及到许可证的问题,该插件的论坛对这个也有些讨论。现在所采用的许可证是作了适合自己的修改后的GNU GPL,删除了关于源代码共享的规定,保留了"copyleft"保护的其它方面。关于这个的合法性有些问题,作者正在找另外一个可用来替代的许可证。它的确切意图是保护该插件,不妨碍使用该插件生成代码的其它一些项目。不过还是值得仔细读一下现在的许可证,看看你是否相信该许可证已经达到其本来意图。否则,对你来说,会有很多风险
同样的讨论显示,作者本来想把该插件作为开源软件,但临时改变了主意,因为他觉得该插件还没有“琢磨”到足够给其他人以作为一个优秀的开源软件的程度。此后,他通过电子邮件和一些性急的人进行了交流,这些人的电子邮件非常讨厌,最终使他没有兴趣再分享整个源代码,真是令人感到悲哀。当然,和我们分享什么是他的权力。对于世界来说,这个插件是个礼物,作者不欠我们什么。但我希望其它用户的积极影响或许可以帮助说服他重新实行原来的计划-分享源代码。我真正重视可以得到源代码的工具,不仅是因为这是个很好的学习机会,而且意味着有了源代码,如果有需要,我(或其他人)可以马上修改出现的一些小问题。到目前为止,该插件的作者一直非常积极的回应用户的问题,但是没有人能够一个人做的象一个团队一样好,我们有些时候很忙,筋疲力尽,或是心情烦乱
Hibernate Synchronizer用它自己的模版和一套机制来生成你的数据访问类,这个事情有好的一面,也有坏的一面。好的一面在于它为你提供了比标准的Hibernate代码生成工具更多的功能。在自动产生的你所定义的数据对象的子类中嵌入商业逻辑,而不用害怕重新生成代码的时候有关商业逻辑的代码被覆盖,这是一个很大的额外好处。该插件生成的、使许多简单的类更简单的类提供了其它一些优秀的功能。
另一方面,这并不意味着当这个平台添加新功能或是有其它一些变化的时候,Hibernate Synchronizer生成的代码会滞后。这个插件的代码也很有可能在支持Hibernate很少用到的方式方面存在一些bug,因为使用该插件的用户群很小,仅有一个人对其进行更新,你可以从论坛中看到这种现象的证据。
和许多事情一样,由你决定是否潜在好处胜过风险。即使你没有使用代码生成器,或许你会发现影射文档编辑器极端有用。如果你只是使用编辑器的自动完成和协助功能,你可以关闭automatic synchronization。
如果你真的采用了这个插件,而且发现它很有用,毫无疑问,我鼓励你和作者联系,表达你的谢意,如果可能,可以考虑捐些钱以支持该插件继续开发。
其它一些插件
在我搜寻插件的过程中,我发现了其它两个插件,可以为在Eclipse中使用Hibernate提供支持(如果你知道其它一些插件,或是在将来的某一天偶遇其它的插件,我很有兴趣了解这些插件)。也许将来我会写一些关于这些插件的文章。
HiberClipse
HiberClipse看起来是另一个非常有用的工具,该插件采取的是数据库驱动的工作流方法:你已经有了数据库,想用该插件构造Hibernate映射文件和Java类文件。这种事很常见,如果你面对这样的任务,我肯定会推荐你使用该插件。该插件提供了一个很cool的功能 :在Eclipse中提供给你一个正在使用的数据库的图形化显示的“关系视图”(应该指出,当你从一个现存的数据库开始工作时候,Hibernate Synchronizer也没有使你处于孤立无援的境地,New Mapping File Wizard 可以连接数据库,然后根据它找到的内容生成映射文件,如图28所示)
Hibernator
最后,Hibernator看起来向另一个方向倾斜,从你的Java代码来产生简单的Hibernate映射文档,然后可以由此创建(或是更新)数据库。另外,还提供了在Eclipse中进行数据库查询的能力。在这三个插件中,它处于开发的最早期,但是已经值得你时常关注,特别是该插件援引Hibernate开发小组的成员作为贡献者。
了解更多
如果这篇文章激起了你的兴趣,有很多资源可以让你深入了解那些主题,除了文中所连接的站点以外,有一些也许你会感兴趣。当然,包括我自己的书Hibernate: A Developer's Notebook。对于更有深度的参考资料,在线文档非常有帮助,特别是其中的参考手册,还有一本Hibernate开发人员自己写的Hibernate in Action即将发行,我自己也很期待读这本书。
和我的第一印象-一切都可以通过影射文档得到-不同,Hibernate Synchronizer现在没有为创建或更新数据库提供任何支持。支持论坛上已经张贴了一个这样的功能要求,如果我们将来看到这些功能,我不会感到惊奇。这种功能应该不是很难。暂时,你不得不采用其他方法,如果你想从影射文档生成数据库,你可以象Hibernate: A Developer's Notebook 一书中使用Ant一样来做到。下边描述的Hibernator插件支持在Eclipse中更新数据库。或许,我应该研究一下是否能够同时安装这两个插件。
好了,我当然希望这个简单介绍的指南能够让你对这个插件的功能有一个大致的了解,当然,我没有提及它的所有功能。如果文中有些内容激起了你的兴趣,那就下载,安装,自己试试。
Trade-Offs
很清楚,你可以用Hibernate Synchronizer来做灵巧的事情。我会在我自己的Hibernate项目中使用该插件吗?这个想法有其它一些优缺点需要考虑,可能现在还不是做决定的时候,直到需要用Hibernate来取代自家酿(当然非常简单)的、已经在工作的轻量级O/R工具时才能做出决定。这是个足够重要的改变,我们一直推迟做出决定,直到有其它原因出现。下边的因素在我的决定中占有重要分量。
在安装部分已经提及,有几个涉及到许可证的问题,该插件的论坛对这个也有些讨论。现在所采用的许可证是作了适合自己的修改后的GNU GPL,删除了关于源代码共享的规定,保留了"copyleft"保护的其它方面。关于这个的合法性有些问题,作者正在找另外一个可用来替代的许可证。它的确切意图是保护该插件,不妨碍使用该插件生成代码的其它一些项目。不过还是值得仔细读一下现在的许可证,看看你是否相信该许可证已经达到其本来意图。否则,对你来说,会有很多风险
同样的讨论显示,作者本来想把该插件作为开源软件,但临时改变了主意,因为他觉得该插件还没有“琢磨”到足够给其他人以作为一个优秀的开源软件的程度。此后,他通过电子邮件和一些性急的人进行了交流,这些人的电子邮件非常讨厌,最终使他没有兴趣再分享整个源代码,真是令人感到悲哀。当然,和我们分享什么是他的权力。对于世界来说,这个插件是个礼物,作者不欠我们什么。但我希望其它用户的积极影响或许可以帮助说服他重新实行原来的计划-分享源代码。我真正重视可以得到源代码的工具,不仅是因为这是个很好的学习机会,而且意味着有了源代码,如果有需要,我(或其他人)可以马上修改出现的一些小问题。到目前为止,该插件的作者一直非常积极的回应用户的问题,但是没有人能够一个人做的象一个团队一样好,我们有些时候很忙,筋疲力尽,或是心情烦乱
Hibernate Synchronizer用它自己的模版和一套机制来生成你的数据访问类,这个事情有好的一面,也有坏的一面。好的一面在于它为你提供了比标准的Hibernate代码生成工具更多的功能。在自动产生的你所定义的数据对象的子类中嵌入商业逻辑,而不用害怕重新生成代码的时候有关商业逻辑的代码被覆盖,这是一个很大的额外好处。该插件生成的、使许多简单的类更简单的类提供了其它一些优秀的功能。
另一方面,这并不意味着当这个平台添加新功能或是有其它一些变化的时候,Hibernate Synchronizer生成的代码会滞后。这个插件的代码也很有可能在支持Hibernate很少用到的方式方面存在一些bug,因为使用该插件的用户群很小,仅有一个人对其进行更新,你可以从论坛中看到这种现象的证据。
和许多事情一样,由你决定是否潜在好处胜过风险。即使你没有使用代码生成器,或许你会发现影射文档编辑器极端有用。如果你只是使用编辑器的自动完成和协助功能,你可以关闭automatic synchronization。
如果你真的采用了这个插件,而且发现它很有用,毫无疑问,我鼓励你和作者联系,表达你的谢意,如果可能,可以考虑捐些钱以支持该插件继续开发。
其它一些插件
在我搜寻插件的过程中,我发现了其它两个插件,可以为在Eclipse中使用Hibernate提供支持(如果你知道其它一些插件,或是在将来的某一天偶遇其它的插件,我很有兴趣了解这些插件)。也许将来我会写一些关于这些插件的文章。
HiberClipse
HiberClipse看起来是另一个非常有用的工具,该插件采取的是数据库驱动的工作流方法:你已经有了数据库,想用该插件构造Hibernate映射文件和Java类文件。这种事很常见,如果你面对这样的任务,我肯定会推荐你使用该插件。该插件提供了一个很cool的功能 :在Eclipse中提供给你一个正在使用的数据库的图形化显示的“关系视图”(应该指出,当你从一个现存的数据库开始工作时候,Hibernate Synchronizer也没有使你处于孤立无援的境地,New Mapping File Wizard 可以连接数据库,然后根据它找到的内容生成映射文件,如图28所示)
图28 Hibernate Synchronizer的创建映射文件向导 |
Hibernator
最后,Hibernator看起来向另一个方向倾斜,从你的Java代码来产生简单的Hibernate映射文档,然后可以由此创建(或是更新)数据库。另外,还提供了在Eclipse中进行数据库查询的能力。在这三个插件中,它处于开发的最早期,但是已经值得你时常关注,特别是该插件援引Hibernate开发小组的成员作为贡献者。
了解更多
如果这篇文章激起了你的兴趣,有很多资源可以让你深入了解那些主题,除了文中所连接的站点以外,有一些也许你会感兴趣。当然,包括我自己的书Hibernate: A Developer's Notebook。对于更有深度的参考资料,在线文档非常有帮助,特别是其中的参考手册,还有一本Hibernate开发人员自己写的Hibernate in Action即将发行,我自己也很期待读这本书。