论坛首页 入门技术论坛

对于EJB3的一些看法(在IBM秋季沙龙上的讨论)

浏览 8291 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-09-17  
    
     实际上EJB3规范我05年就略微了解了一些。
     9月3号,广州IBM组织了技术沙龙,专题介绍EJB3,JPA的技术特点。这几年由于对 Hibernate,Spring 应用经验增加,当时对EJB3 的一些疑惑和不感冒,现在更加明确了。
     沙龙上主要针对Hibernate 介绍了 EJB 3的 JPA, 针对Spring 介绍了 EJB 3 的容器特性,感觉IBM有贬低 Hibernate, Spring,力推EJB 3的气势,大概是为 WAS7的推广做准备吧,呵呵。
    
    一些明显的点就是 EJB 3为了轻量化,避免 EJB 1, EJB 2当年设计缺陷的后尘,采用了许多 Spring IOC的思想; 为了实体bean, 而又采用了 Hibernate 的许多思想,只是适当的引入了 annotation 等技术。似乎有些偷窃概念和技术,而又贬低前人的意味,这一点让人感觉很不好。
   
     另外一点,运用 annotation 进行映射,服务发布,注入等, 着实感觉不是一个好的方案,这就是我3年前的感觉。 虽然说不一定完全用 annotation 开发,但IBM将这个未经实践检验的开发模式作为一个开发推荐规范介绍给我们客户,, 有点类似当年极力推 EJB 2的感觉。 annotation 是JDK1.5开始的一个语言级的好特性,但不能滥用。特别是在 ORM 映射,将bean发布为服务等,直接在method上写 annotation,就是一种 hard coding,通俗说就是写死的做法,如:将实体的表名写死,将属性对应的库表column写死,将发布的web service 的地址写死等, 失去了 ORM 映射配置的灵活性.
  
    @Entity
  @Table(name = "STUDENT")  
  public class Student implements Serializable  {
     .....
    }
    



  
    @ManyToOne
  @JoinColumn(name = "student_id")  
  public Student getStudent() {
      return student;
  }
   

   
    实践才是最好的选择器,就像Hibernate ,Spring 成为事实上的企业级开发标准一样。 所以我们对 IBM,Oracle 的新品宣传,新规范介绍, 还要多留个心眼,有自己的思考,不能死板的照单全收。
   发表时间:2008-09-18  
天下本就是分久必合,合久必分,说不定哪里EJB3就真的流行起来了
0 请登录后投票
   发表时间:2008-09-18  
哥们 多举出一点ejb3的缺点让我们看看
0 请登录后投票
   发表时间:2008-09-22  
不能炒作概念,我觉得还是选择能解决问题的框架,毕竟大部分人不是搞学术研究的。当年被ejb1.0正惨了,不愿意当新技术的实验田。原理都差不多,还是加强基础为好。
0 请登录后投票
   发表时间:2008-09-22  
感觉是时候要开始留意EJB3了.这东西毕竟是大厂出品,对就业还是有非常有帮助的.而且SUN在规划EJB3时完全没有了当初的强权,变得更迎合开发者的想法!没准就这样成功了!
0 请登录后投票
   发表时间:2008-09-23  
现在就在用jpa,对annotation没有好感。
0 请登录后投票
   发表时间:2008-09-23  
JPA和annotation有直接关系吗? JPA也可以不用注释啊,原生Hibernate也可以用Hibernate.annotation啊,包括Spring也有
0 请登录后投票
   发表时间:2008-09-23  
jpa可以不用注释吗?我还真不知道..
麻烦指点.
0 请登录后投票
   发表时间:2008-09-23  
我怀疑所谓的“灵活性”是否真的有存在的必要。在ORM的方法中,运行时可变的数据表名字和column真的有大量的使用吗?是否有人很容易使用Hibernate组成复杂的自定义查询方法了?我好想记得,前几天还有人推荐team规范“禁止使用HQL”的。
在实际项目中,如果数据库设计都已经发生变化,改动java源码难道不是必要的吗?或者说修改xml会比较容易?再或者说一个表增加了3个column,java源码也是不需要改变的?到底要怎样理解hard coding?把一种基于java源程序的hard coding转移到基于xml配置文件中,就算是去除了hard coding?hard coding和“灵活性”都不是绝对的。
EJB3在使用annotation,这是一种设计选择,他们既然这样选择,还是衡量过灵活性和易用性的,除去hibernate不讲,看看最近spring的某些言论,支持EJB3已经是基本一致的看法了,想想当年spring是怎么起家的,反EJB算一面旗帜,也算一点点讽刺吧。
我一直在team规范中使用iBATIS,iBATIS for java and for .net,2种语言类型的项目都用,个人认为hibernate在跨数据库支持上还可以,其他的都不怎么样。
3 请登录后投票
   发表时间:2008-09-24  
所谓的xml灵活性通常不具备任何实际利用价值,你不可能只修改xml,不去修改实体bean,除非你很有毛病,喜欢把column名字改来改去。
1 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics