以前在一个3,400人公司做产品,系统非常大,倒是有EJB,可是他们都说简单,我也没机会搞,后来跳到别的公司了,系统小,更没机会搞EJB了,整的现在写了3年代码了,EJB还是不懂,真是郁闷。你们用EJB机会多吗?
解决方案 »
- ajax请求action失败
- 刚学struts2 按照书上说的,启动tocmat时候出了如下问题
- hbm2ddl生成ddl sql脚本问题
- 新手想问关于学习JAVA选择的STRUTS2书?
- 100分请教几个概念问题:什么是集群?怎么理解分布式和分布式对象?
- EXCEL报表,哪位熟悉?
- tomcat5能否支持双IP,比如有一个外部IP,有一个内部IP,在局域网内,用内部IP可以访问,在外部网用外部网访问
- 哪位高手有 Eclipse in Action ?200分!
- [求助]我的jsp服务器以前是用的resin, 但是后来装了jbuilder4。 这个时候jsp服务器就用不了了。
- J2EE 服务器的测评...
- 急!!struts2 + jasperreport pdf 显示空白
- 大家喜欢MyEclipse来写JSP吗?
推荐这一本,超级精炼。
http://www.amazon.com/EJB-Developer-Guide-developers-architects/dp/1847195601/ref=sr_1_3?ie=UTF8&s=books&qid=1268014990&sr=8-3
EJB分为三种:EntityBean(实体),SessionBean(会话),MessageDrivenBean(消息驱动)。
EntityBean(实体):其实就是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上就是对一条数据记录的绑定。比如对记录的新建,更新,删除等操作,EJB容器都会自动将EntityBean的状态和数据库同步。
SessionBean(会话):用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
MessageDrivenBean(消息驱动):它是基于JMS消息,只能接收客户端发送的JMS消息然后处理。我们平常用的最多的可能就是SessionBean(会话)。
它一般是由一个继承javax.ejb.EJBObject接口的远程对象接口;
一个继承SessionBean的实体类,主要是去实现远程对象接口的方法(业务逻辑);
一个继承javax.ejb.EJBHome的远程访问接口,主要是通过远程访问接口,得到一个远程对象接口。通常客户端常用的访问代码如下
// EJB服务端地址
String url = "t3://localhost:7001";
// EJB服务端处理的上下文工厂类
String type = "weblogic.jndi.WLInitialContextFactory";
// EJB服务端的配置设定
Properties pro = new Properties();
pro.put(Context.PROVIDER_URL,url);
pro.put(Context.INITIAL_CONTEXT_FACTORY,type);
Context context = new InitialContext(pro);
// 通过远程访问的JNDI名,得到一个EJB的远程访问接口
Object obj = context.lookup("MaintainLogin");
MaintainLoginHome home = (MaintainLoginHome)
PortableRemoteObject.narrow(obj,
MaintainLoginHome.class);
// 通过EJB的远程访问接口,得到一个远程对象
MaintainLogin remote = home.create();
// 实现远程业务逻辑处理
List list = remote.findByName("accp");
Hiberenate 实现了 传统EJB的 Entity Bean的功能,它的出现也是因为EJB2做的太滥的缘故,但是EJB3的出现,解决了这个问题。首先,EJB3 现在的Entity Bean 已经独立出来为JPA,而这个JPA的设计者 就是当初Hiberenate的设计者 GavenKing 。从这一点来说 这两者是一样的,但是JPA中可以使用那个Annotation 这个使用起来超级简单,可以说一看就懂。
主要是测试麻烦一些,所以影响效率,灵活性也差一些。其他的还好吧,但这两个问题也很要命。
这本书中关于 Session Bean 和 MDB 的章节只有两章,这足以说明在 EJB 3 中这两个 Bean 的技术是非常简单的。而这本书中的重头戏是 JPA,JPA 是 EJB 3 中新增的东西,全书花六个章节的篇幅进行了介绍。之前有人提到 Hibernate 的 Entity Bean,其实 Hibernate 的 Entity Bean 只是 JPA 的众多实现之一,JPA 是一个技术规范,JCP 组织规定了接口,由具体的 Provider 去实现。常用的 JPA Provider 有 Hibernate, Eclipse 的 EclipseLink,Apache 的 OpenJPA
应该称为 Hibernate entity manager,呵呵。
你用的是ejb2的。ejb3都出来很久了。只是现在还是有很多公司用的是ejb2.
ejb3只需要几个Annotation。
@PersistenceContext EntityManger em;直接注入就可以了 使用起来很方便的
只有大型的项目才会用吧!