清单20:测试结果
在数据库里,可以看到如下所示的记录:
+--------+---------------------+----------------------+ |
清单21:DB结果
正如看到的那样,新的字段在运行时被创建,其值也被成功保存。
第二个测试使用新创建的字段来查询数据库:
package com.enterra.customfieldsdemo.test; + ".email", "test@test.com")); |
清单22:测试自定义字段查询
Execution result: |
清单23:查询结果
正如看到的,使用我们的方法创建的自定义字段能够很容易地参与到数据库查询中。
进一步改善
很显然,我们上面提到的实现相当简单。它并没有反映出该功能在实际实现中会遇到的各种情况。但是它还是说明了在建议的技术平台上解决方案的大体工作机制。
另外明显的是,该需求还可以使用其它办法(比如代码生成)来实现,这些办法也许会在其它文章中介绍。
这个实现仅支持String类型的自定义字段,但是,基于该方法的实际应用(Enterra CRM)中, 已经实现了对所有原始类型、对象类型(链接到业务对象)以及集合字段的完全支持。
为了在用户界面支持自定义字段,已经实现了针对自定义字段的元描述符系统,该系统使用了用户界面生成系统。但是生成器的机制是另外一篇文章的主题。
结论
最后,Enterra CRM团队创建、验证并在实践中应用了基于ORM平台Hibernate的开放对象模型架构,它满足了客户在运行时不需要对应用源代码做任何改动、就可以按照最终用户的实际需求设置应用的需求。
译注一:Hibernate EntityManager实现了JPA、对象生命周期法则、以及JSR 220 (EJB 3.0) 定义的查询选项。
译注二:Hibernate Annotations提供了JDK 5.0代码标注的功能,从而替代XML元数据。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Hibernate原理与配置 (359篇文章)
- Hibernate相关文章 (359篇文章)
- J2SE综合:浅谈java程序发布之 jre 篇 (11次浏览)
- JAVA代码中使用魔法数值 (8次浏览)
- Hibernate缓存管理 (6次浏览)
- JAVA代码应该流畅和结构化 (5次浏览)
- Java JVM设置对性能的影响 (4次浏览)
- 开发框架:深入了解 Struts Validator (3次浏览)
- Java中的通信机制及与C/C API的集成 (1次浏览)
- 用Hibernate实现领域对象的自定义字段 (1次浏览)
- Java语言入门 简述Java语言回收机制 (0次浏览)
- 2008年Java开发者最迫切的五个期望 (0次浏览)



