论坛首页 Java企业应用论坛

Hibernate和Spring的决裂以及Spring和EJB3之争

浏览 36949 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-09-08  
引用
这个消息对于spring来说是一个重大的消息,重量级人物的加盟让Spring显得前途更加光明,并且Java世界主流的AOP框架统一起来也指日可待了。

EJB3和Spring有相互重叠的地方。而EJB3规范定义的injection也更将decent。

在business object中定义一个EntityManager,  business Object可以是一个session bean, msg driven bean,或者就是一个java bean.
引用

@PersistenceContext(unitName="order")
EntityManager em;


然后在business method中使用em来做操作。并不要求一定要扩展某个template什么的。

目前的趋势是EJB3 core container可以做得很小和spring一样,所以说有ejb3使不是spring的killer的讨论。

如果spring对ejb3 persistence api的支持还是用template的模式,我觉得前途可不一定好。

P.S. 为什么冬眠村和spring村械斗,大概有点这个意思。
   发表时间:2005-09-08  
Charlesxp 写道
而EJB3规范定义的injection也更将decent。
能解释一下啥叫decent的injection吗?

Charlesxp 写道
并不要求一定要扩展某个template什么的。如果spring对ejb3 persistence api的支持还是用template的模式,我觉得前途可不一定好。

spring里面并不是要继承XXXTemplate,而一般是XXXDaoSupport,XXXDaoSupport很简单,具体操作都由XXXTemplate完成,看样子XXXTemplate和EntityManager倒很相似。我看不出template的模式和spring的前途有啥关系呀?
0 请登录后投票
   发表时间:2005-09-08  
EntityManager跟hibernate的session相似。

引用
能解释一下啥叫decent的injection吗?

EJB container不需要用户extends XXXsupport来获得Injection, 只需要声明,更简单和友好。Spring也会朝着相同的方向走。
0 请登录后投票
   发表时间:2005-09-08  
可惜阿
冬眠和春天如果统一。
j2ee开发就简单多了。
0 请登录后投票
   发表时间:2005-09-08  
Charlesxp 写道
EntityManager跟hibernate的session相似。

引用
能解释一下啥叫decent的injection吗?

EJB container不需要用户extends XXXsupport来获得Injection, 只需要声明,更简单和友好。Spring也会朝着相同的方向走。

我看也不是必须要extends XXXsupport,只要能往我的business object,dao里面注入一个XXXTemplate就可以了,只不过这些东西XXXsupport帮我做好了,就不需要自己写一个base class了

zkj_beyond 写道

可惜阿
冬眠和春天如果统一。
j2ee开发就简单多了。

spring和h3不是工作得很好吗?
再说了,orm不是必须的,也不是万能的,我现在用jdbc就开心得很
0 请登录后投票
   发表时间:2005-09-08  
引用
我看也不是必须要extends XXXsupport,只要能往我的business object,dao里面注入一个XXXTemplate就可以了,只不过这些东西XXXsupport帮我做好了,就不需要自己写一个base class了

我的意思是你什么都不用做,不需要写base class,不需要extends,只需要声明就可以获得资源。目前限ejb3的资源,单如果有ejb3 container支持更多的资源如jdbc也不惊讶)。
0 请登录后投票
   发表时间:2005-09-08  
Charlesxp 写道
引用
我看也不是必须要extends XXXsupport,只要能往我的business object,dao里面注入一个XXXTemplate就可以了,只不过这些东西XXXsupport帮我做好了,就不需要自己写一个base class了

我的意思是你什么都不用做,不需要写base class,不需要extends,只需要声明就可以了。

我看也可以
public class MyBusinessObject{
  private XXXTemplate _template;
  public void setXXXTemplate(XXXTemplate template);{
    _template=template;
  }
}
0 请登录后投票
   发表时间:2005-09-08  
引用
public class MyBusinessObject{
  private XXXTemplate _template;
  public void setXXXTemplate(XXXTemplate template){
    _template=template;
  }
}


如果这样不更好?

引用
public class MyBusinessObject{
    @Template
    private XXXTemplate _template;

}

不需要用户必须写一个setter. 而且Template自动跟transaction相关。
0 请登录后投票
   发表时间:2005-09-08  
没区别,都有个东西在inject东西进另一个东西
spring也支持annotion.
0 请登录后投票
   发表时间:2005-09-08  
引用
没区别,都有个东西在inject东西进另一个东西
spring也支持annotion.

你能否给出一个例子?

我看了看spring的开发手册。我看到这样的annotation。



public class OrderService {

@Transactional
void createOrder(Order order);{}


这个跟ejb3规范中表述的injection还是有区别。

我期望看到这样的代码(这里假设我们使用hibernate session。


public Class OrderService {

@Session
private Session mySession

@Transactional
void createOrder(Order order);{
    mySession.save( order );;
}

Spring目前的版本可以这样吗?
0 请登录后投票
论坛首页 Java企业应用版

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