wm2395的空间

我们一直在努力....

EJB使用规范

标签: ejb 使用规范

EJB使用规范

1.     EJB3.0中两个重要的变更分别是:使用了Java5中的程序注释工具和基于HibernateO/R映射模型。一套以注释为基础的EJB编程模型。(说明:在EJB3.0的里,任何类型的企业级Bean只是一个加了适当注释的简单Java对象(POJO)。注释可以用于定义bean的业务接口、O/R映射信息、资源引用信息,效果与在EJB2.1中定义部署描述符和接口是一样的。)

2.     新的持久化模型:新的实体bean也是一个加了注释的简单Java对象(POJO)。一旦它被EntityManager访问它就成为了一个持久化对象,并且成为了持久化上下文(context)的一部分。一个持久化上下文与一个事务上下文是松耦合的;严格的讲,它隐含的与一个事务会话共存。

3.     无状态会话bean:在EJB3.0规范中,写一个无状态会话bean(SLSB)只需要一个简单的Java文件并在类层加上@Stateless注释就可以了。这个bean可以扩展javax.ejb.SessionBean接口,但这些不是必须的。

4.     消息驱动Bean:消息驱动Bean是唯一一种必须实现一个业务接口的Bean。这个接口指出bean支持的是哪一种消息系统。对于以JMS为基础的MDB来说,这个接口是javax.jms.MessageListener。注意MDB业务接口不是一个真正意义上的业务接口,它只是一个消息接口。

5.     实体Bean1) 实体Bean使用@Entity注释来标记,所有实体bean中的属性/字段不必使用@Transient注释来标记。实体bean的持久化字段可以通过JavaBean-style机制或者声明为public/protected字段来实现。

2) 实体bean可以使用助手类来描述其状态,但是这些类的实例并没有持久化唯一性(persistent identity)的特性(即,唯一标识这个bean的字段等),实际上这些助手类与他们的实体bean实例是紧密结合的;并且这些对象还是以非共享方式来访问实体对象的。
6.     实体关联:EJB3.0同时支持Bean之间双向的合单向的关联,它们可以是一对一、一对多、多对一或者是多对多的关联。然而双向关联的两端还要分为自身端(owning side)和对方端(inverse side)不同的端。自身端负责向数据库通告关联的变更。对于多对多的关联自身端必须明确的声明。实际上对方端通过isInverse=true进行注释(由此自身端就不必说明了而是由另一段推断出)。7.         客户端程序模型:使用一个超级上下文环境对象:@javax.ejb.Context(),一个EJB客户端可以通过一个注释@javax.ejb.EJBContext.lookup()来完成获得一个bean的业务接口引用的操作

EJB QLEJB QL可以通过@NamedQuery来注释。这个注释有两个成员属性分别是namequeryString.一旦定义了这些属性,就可以通过EntityManager.createNamedQuery(name)来指向这个查询。你也可以创建一个标准的JDBC风格的查询并使用EntityManager.createQuery(ejbqlString)EntityManager.createNativeQuery(nativeSqlString)(这个方法用于执行一个本地查询)来执行查询。(说明EJB QL的增强特性:
EJB QL与标准SQL非常的接近。实际上规范中甚至直接支持本地的SQL
1)
支持批量更新和删除。
2)
直接支持内连接和外连接。FETCH JOIN运行你指出关联的实体,Order可以指定只查询某个字段。
3)
查询语句可以返回一个结果值集。
4) 支持group by having
5)
支持where子句的嵌套子查询。

 

 

附件:



    分享: 收藏到CSDN 收藏到javaeye 收藏到博客园 收藏&分享
  • 浏览 (588)
  • 评论 (0)
  • 发表于 2009-03-23 17:53
  • EJB系列
    评分: 请先登录再投票,同一篇博客一月只能投票一次!
    无人投票

相关博客:


评论


发表评论

验证码:
关注此文的人们还关注