BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

文章:使用Hibernate支持自定义领域对象字段

| 作者 Enterra Inc. 关注 0 他的粉丝 ,译者 王丽娟 关注 0 他的粉丝 发布于 2007年12月29日. 估计阅读时间: 不到一分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在开发企业级业务应用时,客户往往要求在不修改系统源代码的情况下,对应用对象模型的扩展性提供支持、在运行时按照实际需求设置应用。Enterra CRM团队在实践中应用了基于Hibernate的开放对象模型架构,通过Hibernate实现了对自定义字段的可扩展业务实体的支持,以此满足了客户的需求。

文章《使用Hibernate支持自定义领域对象字段》正是Enterra Inc.对该解决方案大体工作机制的介绍和分享。在这篇文章中,Enterra Inc.描述了客户的需求,提出了解决方案,对解决方案中涉及的概念“自定义字段”进行了解释,并用一个简单的例子详细讲解了工作机制和实现的关键环节。

阅读全文:使用Hibernate支持自定义领域对象字段

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

比较好的实现 by Andy Yao

翻译的不错:)
以前使用hibernate时,大致有过思路,但是没有这么详细的实现。
比较感兴趣的是,文中提到的对象类型(链接到业务对象)以及集合字段的完全支持。

不知有没有源码 :) by xu kevin

上个月文章刚出来的时候照着做了一遍没有成功,忘了是报什么错了,不知有没有源码?

Re: 比较好的实现 by blogbin avatar

领域对象的属性自定义,商业领域已经有很多成功的案例,希望开源领域能够所有突破。这或许是ORM之后的一个亮点

Re: 不知有没有源码 :) by Yuan Shayne

本地运行成功~~

Re: 不知有没有源码 :) by 王 丽娟

文章中的代码清单是完整的,我准备数据库环境(MySQL 4.1)时用到的几个关键SQL有:
CREATE DATABASE custom_fields_test;
USE custom_fields_test;
create TABLE tbl_contact (fld_id INT(20) AUTO_INCREMENT PRIMARY KEY, fld_name VARCHAR(20));

挺好的功能 by lee tom

我已经实现过了,不复杂
当时是和IBatis整合,没想到Hibernate提供了直接的支持

Re: 不知有没有源码 :) by Guo Xiaogang

译者很体贴地提供了源码包,没加上是我的过失。这就给补上。

en by fan fan

在CRM中是有类似需求出现,没想到HIBERNATE这么强大

挺不错的 by Pacino Al

这个网站的文章挺好的
比C*DN上的那些广告贴不知道强到哪里去了
关注 ing...
希望做得越来越好

Re: 挺不错的 by Pacino Al

好像时区不是北京时间吧?

不能在数据库中删除以增加的自定义字段,请问如何处理? by mata nakamula

范例程序我调试了一下,可以实现增加自定义字段的功能。
但是不能删除自定义字段,跟踪程序发现已经执行了删除的代码,Mapping文件中也删除了要删除字段的property属性元素。
但是数据库的表中仍然存在那个字段,怎么也删不掉呢?
请问这样正常吗?Hibernate进行Update数据库时,是只能增加不能删除吗?

Re: 不能在数据库中删除以增加的自定义字段,请问如何处理? by ado ado

没错。
<property name="hibernate.hbm2ddl.auto">update</property>
这个对于已有的属性是不会删除的。

能否用于javaweb中?? by Wang Miao

我为什么直接用java编译可以运行,也能自动添加到数据库字段。但是用于javaweb中,我用一个页面去调作者的测试那个main方法,为什么不能添加到数据库字段啊?开始怀疑读取XML的时候,一个读的是项目下,一个读的服务器下,反正挺郁闷了,都好几天了,还没弄出来。希望作者或者知道的朋友能给指点一下,是不是什么环节出了问题。感谢大家积极帮助!

Re: 能否用于javaweb中?? by j d

您好,我也遇到了同样的问题,能指点下您是怎么解决的吗?谢谢!

Re: 能否用于javaweb中?? by achuan achuan

可能的原因是在XMLUtil.loadDocument中解析xml文件时没有设置EntityResolver,可在其中加入一行代码

builder.setEntityResolver(new org.hibernate.util.DTDEntityResolver());

怎么和SPRING结合? by 李 方虎

怎么和SPRING结合?怎么才能应用到j2ee环境中呢?也就是说SessionFactory 重建以后怎么才能和Spring相结合呢?

Re: 能否用于javaweb中?? by Wang Miao

添加builder.setEntityResolver(new org.hibernate.util.DTDEntityResolver()); 这句还是不行,有成功的人给说下解决办法!

看了这篇文章,我有几个问题,望知道的朋友帮忙解答一下 by 王 根福

程序可以成功运行,可以实现添加字段,但有几个问题想请教下大家:

1、本地运行了一下,Contact.hbm.xml文件并没有更新呀;

2、连续两次添加同一个字段的时候,第二次运行会报错,说不能添加重复的字段;但是如果手动修改了Contact.hbm.xml文件(比如删除一个字符,ctrl+Z,ctrl+S)之后就运行成功了,表结构没变,添加了一行记录。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

18 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT