惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 司徒正美
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
博客园 - 聂微东

博客园 - yysun

Active Record Pattern 和 ORM Unit Test : MVP vs PM - yysun Refactor CAB Smart Part Quick Start Project to "Presentation Model" test P&P OB CAB EntLib SQL/e WB Editor 2.5 is in beta - yysun 把图片存到 Flickr 与 Biztalk 搏斗 Manage Plug-ins 申请 WB Editor 2 注册码 SharpReader Plug-in AJAX WB Editor 2 的口号[yysun] 用 XSL 生成 HTML 日历[yysun] 用 XSL 重命名 XML tag name[yysun] XPathDocument 与 XmlDocument 结合使用[yysun] 再谈 JXPath 与 ObjectXPathNavigator[yysun] 用 WB Editor 连接 cnblogs.com 的全攻略[yysun]
看看 EJB 3.0 的 O/R Mapping
yysun · 2006-06-16 · via 博客园 - yysun

现在主要做 .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 是个很有意思的方向。