本人是一个菜鸟,最近在学习EJB,看了好基本关于EJB的书
(1)Rmia Patel Sriganesh 的 Mastering Enterprise JavaBeans 3.0
(2)黎活明的 EJB3.0入门经典
(3)冯曼菲的 EJB JPA数据库持久层开发实践详解可能我理解能力不够强,看关于实体生命周期时总理解的不透彻(有些书还自相矛盾,比如书(3)将4态模型还分裂成了5态模型)。当然了,这几本书好像关于类似的话题讲解的也不太详细,有点避而不谈的味道。
貌似他们总结的EntityManager操作触发的过程也就是
A. persist()方法用于将新创建的实体纳入实体管理器的管理
B. merge()方法用于处理实体的同步。用于将detached状态的实体重新纳入持久上下文管理范围。
C.remove()方法用于从数据库中删除某条记录,但是并不删除还在内存中的实体。但是这些仅仅给出了某些情况,但是冰没有给出全部的情况。有没有哪位高手研究透彻的,能给出处在任何状态下的实体,调用这些方法可能出现的情况呢?
完成这样的表格,给出每种情况下 em.XX()方法的参数变化和返回值变化?(em为EntityManager的实例)实体A状态所处状态 em.persist(A) em.merge(A) em.remove(A)
new
attached
detached
removed
并且最好结合下面例子阐述,为什么这个方法会抛出异常,并且哪里会抛出异常例子 假设有个new 的实体Order o,作为实参被传递给某个SessionBean的业务方法
@PersistenceContext EntityManager em; //第一行
public boolean test(Order o){ //第二行
boolean b = false; //第三行
o=em.merge(o); //第四行
em.remove(o); //第五行
o=em.merge(o); //第六行
b=em.contains(o); //第七行
return b; //第八行
}
谢谢。 100分奉上
(1)Rmia Patel Sriganesh 的 Mastering Enterprise JavaBeans 3.0
(2)黎活明的 EJB3.0入门经典
(3)冯曼菲的 EJB JPA数据库持久层开发实践详解可能我理解能力不够强,看关于实体生命周期时总理解的不透彻(有些书还自相矛盾,比如书(3)将4态模型还分裂成了5态模型)。当然了,这几本书好像关于类似的话题讲解的也不太详细,有点避而不谈的味道。
貌似他们总结的EntityManager操作触发的过程也就是
A. persist()方法用于将新创建的实体纳入实体管理器的管理
B. merge()方法用于处理实体的同步。用于将detached状态的实体重新纳入持久上下文管理范围。
C.remove()方法用于从数据库中删除某条记录,但是并不删除还在内存中的实体。但是这些仅仅给出了某些情况,但是冰没有给出全部的情况。有没有哪位高手研究透彻的,能给出处在任何状态下的实体,调用这些方法可能出现的情况呢?
完成这样的表格,给出每种情况下 em.XX()方法的参数变化和返回值变化?(em为EntityManager的实例)实体A状态所处状态 em.persist(A) em.merge(A) em.remove(A)
new
attached
detached
removed
并且最好结合下面例子阐述,为什么这个方法会抛出异常,并且哪里会抛出异常例子 假设有个new 的实体Order o,作为实参被传递给某个SessionBean的业务方法
@PersistenceContext EntityManager em; //第一行
public boolean test(Order o){ //第二行
boolean b = false; //第三行
o=em.merge(o); //第四行
em.remove(o); //第五行
o=em.merge(o); //第六行
b=em.contains(o); //第七行
return b; //第八行
}
谢谢。 100分奉上
解决方案 »
- 关于HttpClient4.x实现登陆网站进行操作不能保存登陆状态的问题。。。
- 一个简单的概念问题
- Session 退出登陆问题??
- html:link动态传值问题
- 这是tomcat版本的问题么?
- struts2中的配置问题
- hibernate 注解@JoinColumn配置问题
- 请问一个关于sqlserver2000的问题,请各们达人进!
- JDBC数据更新/插入的问题,大家都来帮忙或学习呀!
- 调查一下:大家在用什么工具开发Ejb?开发多久了?目前待遇多少?
- 弱弱的问一下:用hibernate中的criteria怎么按月排序?
- 分析一段worldwind SDK里ApplicationTemplate的Java类代码~~
有状态会话Bean实例有三种状态,不存在,就绪,和钝化。
无状态会话Bean实例就两种状态,不存在和就绪.
2.实体bean
实体bean有三种状态,不存在,在pool中,就绪
3.mdb 消息bean
消息bean就两种状态:不存在和就绪
em.remove(o); //b
o=em.merge(o); //ca merge:一个脱离实体管理器管理的bean,比如person1,被修改之后,被传回后台,如果调用merge,将有两种情况发生
1 如果持久化上下文中有与这个bean相同id的bean存在,则把person1的属性赋值给上下文中的那个bean,然后将那个bean返回,而person1还是一个不受实体管理器管理的bean,返回那个Person是收管理的,对他的修改,会直接刷新到数据库;
2 如果持久化上下文中有与这个bean相同id的bean不存在,则创建一个该person1的拷贝,然后返回,对这个拷贝的set操作,会直接影响到数据库b remove:执行em.remove(person1),会删除数据库中的该条记录(在调用flush之后才会真正删除),此时person1并不会消失,而是变成一个不受到实体管理器管理的bean
c merge:再次调用merge(person1)时候,会进行上面的1操作希望楼主知道我再说什么,呵呵
以前学习过EJB,不过没理解透彻,受教了.