posts - 32, comments - 117, trackbacks - 0, articles - 0

看看 EJB 3.0 的 O/R Mapping

Posted on 2006-06-15 15:38 yysun 阅读(2146) 评论(6)  编辑 收藏

现在主要做 .NET,但是每过一段时间总是要回头看看 Java 世界。看到了新的 EJB 3.0 spec。联想到最近这里有不少 ORM 的讨论,就顺便推荐大家看看这个 Java Persistence API in 60 Minutes

Java 中的 Annotation 就是 .NET 中的 Attribute。虽然 Java 中有这个东东比 .NET 晚,但是通过 EJB 3.0,Java 世界把 Annotation 发挥得更加淋漓尽致,ORM, Dependency Injection, AOP ... 。这正是士别三日,当刮目相看。

长久以来,一直觉得 .NET 缺乏的是 Container 这个概念。 MTS 实在 Sucks。EJB 以前当然也 Sucks。人们甚至觉得 EJB 带来的问题比解决的问题多。这两个因素掩盖了 container 的重要性。加上 SOA 这个 Buzz word 又转移了一部分注意力。

现在的 EJB 3.0 借助 Annotation 实现了瘦身,完全回到了 POJOs 的路线上来。顿时感到一阵清风。

很希望看到 .NET 世界也出个类似的 Container 。NHibernate?
没有 Container 的情况下, ORM 也没有多少意义。

[Update] 谢谢下面很多好的评论。联想到了 Annotation (注记) 与 Attribute (属性) 的用法。

一是静态的 MetaData。告诉使用者我是什么,比如 [Serializable] 。二是动态的,在 Container 配合下,请它帮我做点什么。例如 [ServiceDependecy] 就是告诉 ObjectBuilder 这个 Container 用 Dependcy Injection 帮我初始化。@Remote 就是告诉 EJB Container,有人远程叫我得时候,你想办法把我送出去 ...。通过 Container 进行功能扩充后,我自己集中做我得事情,不必顾及其他方面的细节(AOP的精髓)。所以,这就可以用 POJO 来解决主要的业务,加个注记,扔给 EJB Contain,让它变成 Stateless Session Bean。加个注记,扔给 EntityManager,让它保存到什么地方去,Table, XML ...。 

Dependcy Injection 相对简单些,在 Container 的什么 Collection 中找到想要的东西。 Interception 和 Dynamic Proxy 则相对复杂些,一般需要 Emit 新的类出来。Deployment (发布) 因此有了新的含义。在发布的时候动态生成程序 Emit dynamic proxy during deployment 是个很有意思的方向。

Feedback

#1楼    回复  引用  查看    

2006-06-15 19:38 by 蔡克伦      
就我目前的感觉,EJB3.0中的对象持久化方案和Hibernate区别不大,这也间接说明Hibernate实在是太成功了。

#2楼    回复  引用  查看    

2006-06-15 19:46 by 编写人生      
晕,你这个家伙一定是在外企工作的,当然这也没有办法,总不能将这些术语用中文表示。
看的出来你的功底不浅哦

#3楼    回复  引用  查看    

2006-06-15 20:05 by 双鱼座      
dr. sun:
没有Container情况下,ORM的意义还是有的,相反AOP没有多少意义。
对于annotation,正所谓“成也萧何,败也萧何”,总有一天同样会成为一种负担。

#4楼    回复  引用  查看    

2006-06-15 20:53 by idior      
---
现在的 EJB 3.0 借助 Annotation 实现了瘦身,完全回到了 POJOs 的路线上来。
---

POJO只是在某种情况下的解决方案,当你使用分布式对象的时候怎么也不可能用POJO,而EJB一个重要的功能就是提供了良好的分布式框架,MTS也是一个目的。只不过以前使用EJB的解决方案往往分布过头了,所以才冒出个简单有效的POJO,但这不是全部。

#5楼    回复  引用    

2006-06-16 03:37 by ew [未注册用户]
...

#6楼    回复  引用    

2006-06-16 05:37 by ddee [未注册用户]
...
把眼界放到.net的开源上吧,看看castle,这些东东会给你带来不同的感觉的

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-06-17 21:56 编辑过


相关链接: