BT

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

简化持久性实体的传递

| 作者 Craig Wickesser 关注 0 他的粉丝 ,译者 金明 关注 0 他的粉丝 发布于 2009年5月12日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Gilead旨在实现

把持久性实体简便地传送到JVM环境外。

Gilead的全称是Generic Light Entity Adapter,之前曾叫做Hibernate4GWT。随着开发团队开始支持其他一些框架,项目于是修改成当前的名字,

由于Gilead目前可以处理的前端技术不单单GWT一个,而且还计划支持Hibernate以外的JPA实现,所以,我们换了一个含义更宽泛的名字。

创建Gilead项目的主要目的是减轻人们把持久性实体传递到其他系统或者其他技术前端时遇到的痛苦。为什么这个过程那么棘手呢?通常是由于持久化框架在编译期或者运行期修改类的定义,添加某些所需信息以减少持久化实体时的麻烦。如此一来,当这些修改了的对象传送到JVM外面以后,就会发生一些奇怪的事情,比如说接收方甚至可能会抛出“NoClassDefFoundError”、“ClassCastException”之类的错误。

针对这种情况,Gilead采取了“克隆-合并”(clone-merge)策略。对象从服务器发送出来的时候,本身会被克隆,

克隆操作会根据持久性实体创建普通实例,这个实例既不包含代理,也不包含带持久化特性的集合。

当对象返回给服务器时,Gilead可以以下面三种“模式”中的任一种来合并返回的对象。

  1. 无状态:对象类型必须继承自 LightEntity ,或者实现 ILightEntity 接口,这样持久化信息才会被保存在克隆出来的对象上面(服务器上不保留相关信息)。
  2. 有状态:持久化信息是保存在HTTP会话里面。
  3. 动态代理:这也是一种无状态模式,尚处试验阶段。适用于无法修改已有遗留代码来满足无状态模式的情况。

目前,Gilead的版本是1.2.2,可以对采用Hibernate作为JPA实现框架的应用系统提供可靠的克隆/合并操作。同时,Gilead 对包括GWTFlex(使用 BlazeDS 数据库)在内的前端技术提供成熟的适配器。

Gilead的下一个版本1.3,计划提供基于XML/Web Services技术的适配器,支持OpenJPA(EclipseLink将来也会纳入支持范围)以及其他一些改进。

查看英文原文Easy Persistent Entity Transfers

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的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通知我

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

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

讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT