`
bruce008
  • 浏览: 173397 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EJB 中 事务的粒度问题

阅读更多

今天碰到一个 Hibernate  flush 里 一些本不想提交的对象。  这个问题在本地的测试版本中不存在, 为什么呢?  同事为了方便调试EJB 的代码 特地搞了一个proxy 在 本地Tomcat 测试代码里面运行, 因此在本地开发人员很方便的验证mass change 的 validation 逻辑。  由于mass change  要将原业务表的数据取出, 并且 merge 用户要想做的mass change, 然后做一系列复杂的validation 校验。   在服务器上的EJB 中 这些所有逻辑都是在一个EJB 中的事务中做的,  Hibernate  的 session  也就跟这个transaction 的范围一致,  导致了N 多不想做 提交的对象都 在session 中 , 并且在transaction 结束时flush。  

 

 在解决这个问题的时候,  开始的想法是找出所有不需要save 的对象 在load 它们之后 修改之前做一个clone , 用它们的克隆。  由于涉及的对象太多, 在 本人做了 十几次修改, 验证后以失败告终。 

 

最后一招,  想到本地版本是没有问题的,  将所有load 出来validation 的逻辑 都放到一个 方法中, 将这个方法 TransactionType  指定为 Not_Supported.   只有最后保存的逻辑放在一个 TransactionType.Required 的方法里面。  由于load , validation 都是 只读的,  修改后  发表 测试  搞定。   

 

以前还用的比较少 将一个EJB 设定为 TransactionType.Required, 然后将个别 方法  指定为TransactionType  Not_Supported。  在WebSphere 中 验证为可行的, 特记录在此。

分享到:
评论

相关推荐

    ejb spring

    2. **Spring AOP与ejb事务管理**:Spring的声明式事务管理可以与ejb的事务管理相结合,提供更细粒度的事务控制。 3. **Spring与ejb的协作**:在某些场景下,会话bean可能只负责协调工作,而具体的业务逻辑由Spring...

    EJB技术代码样例

    EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的...通过深入研究提供的代码样例,你可以更好地掌握EJB在实际项目中的运用,以及如何利用EJB的优势来解决企业级问题。

    EJB与Hibernate的整合简述

    2. **Transaction Management**:EJB容器负责事务管理,而Hibernate则提供了细粒度的事务控制。在整合后,开发者可以利用EJB的声明式事务管理,同时利用Hibernate的事务边界,实现更灵活的事务策略。 3. **Query ...

    EJB方面相关详解

    EJB容器提供了强大的事务管理支持,它自动处理事务的开始、提交、回滚等操作,确保了业务逻辑中数据处理的原子性、一致性、隔离性和持久性(ACID属性)。开发者无需编写复杂逻辑来管理事务,这减少了错误发生的可能...

    jboss+myeclipse+ejb案例

    【ejb】是一个Java企业级应用开发的重要组件,全称为Enterprise JavaBeans,它提供了一种在分布式环境中构建可复用、安全和事务处理的应用服务框架。ejb是Java EE(Java Platform, Enterprise Edition)规范的一部分...

    我的ejb培训资料共享

    3. **事务管理**:EJB支持事务特性,可以自动处理事务的开始、提交、回滚等操作,确保数据的一致性。 4. **安全模型**:EJB提供了角色基的安全机制,允许对方法访问进行细粒度控制,确保应用的安全性。 5. **远程...

    EJB 3 in Action

    同时,安全性也是EJB3的重要组成部分,书中会讲解如何利用角色和权限进行细粒度的访问控制。 总之,《EJB 3 in Action》这本书详尽地阐述了EJB3的各种特性,从基本的Bean类型到高级的主题,都是Java EE开发者必备的...

    基于java的EJB中JNDI的使用源码例子.zip

    声明式事务管理允许开发者通过在EJB方法上添加注解来控制事务边界,而编程式事务管理则允许更细粒度的控制。 7. EJB与JNDI结合的例子: 在压缩包中的"codefans.net"文件中,可能包含了一个简单的EJB项目,其中包括...

    ejb.rar_Java EJB_ejb

    EJB运行在EJB容器中,容器负责管理Bean的生命周期、事务、安全性和资源分配等。容器为Bean提供了执行其业务逻辑的环境,减轻了开发者的负担。 3. **EJB 3.0及之后的版本**: EJB 3.0引入了许多改进,包括注解驱动...

    EJB原理剖析电子书

    开发者只需要关注业务逻辑的实现,而无需关心诸如线程管理、事务处理、安全控制等复杂的问题。 - **RMI**:为EJB提供了远程通信的基础,使得EJB能够在不同的JVM之间进行交互。 - **容器**:通过提供容器管理服务,...

    Mastering_EJB_3.0.pdf

    EJB 3.0提供了更加灵活的事务管理机制,支持细粒度的事务控制,包括容器管理的事务(Container Managed Transactions, CMT)和Bean管理的事务(Bean Managed Transactions, BMT)。 ##### 4. 改进了消息驱动Bean ...

    EJB 企业级javabean

    3. **安全性**:通过应用服务器,EJB可以实现细粒度的安全控制,限制对资源的访问。 4. **可移植性**:由于基于标准,EJB组件可以在符合Java EE规范的任何应用服务器上运行,增强了系统的可移植性。 5. **并发和性能...

    EJB3.0深入编程

    - EJB 3.0继承了Java EE的安全模型,可以通过角色和权限进行细粒度的访问控制。 7. **部署与生命周期** - **元数据驱动部署**: 使用注解简化部署描述符,使得部署更简单。 - **Bean生命周期方法**: 如@...

    EJB3.0和Spring比较

    - 两者都支持声明式服务,如事务管理和安全性,但EJB3.0通常将这些服务更紧密地集成到框架中,例如通过@TransactionAttribute注解控制事务行为。 - Spring的声明式服务可以通过AOP(面向切面编程)实现,允许更细...

    EJB3.0实例教程(PDF)

    在EJB3.0中,引入了诸多改进和新特性,以应对早期版本EJB的一些复杂性问题。以下是EJB3.0的关键知识点: 1. **实体Bean(Entity Beans)的简化**:EJB3.0引入了注解驱动的实体管理,不再需要编写接口或Home接口。...

    EJB3.1cookbook的源代码

    - EJB 3.1允许通过`@RolesAllowed`等注解来指定方法级别的权限控制,实现细粒度的安全管理。 7. **生命周期方法**: - 如`@PostConstruct`和`@PreDestroy`注解标记的方法,分别在Bean实例创建后和销毁前被调用,...

    ejb3.0src.rar_ejb

    3. **容器管理的事务**:EJB 3.0支持容器自动管理事务,通过注解如`@TransactionAttribute`可以设置事务的传播行为和隔离级别,让开发者不必关心事务的具体实现。 4. **依赖注入**:EJB 3.0利用Java Dependency ...

    EJB2.0_CMP.rar_cmp_ejb_ejb2 c++

    在EJB 2.0中,CMP通常与容器管理的事务(Container Managed Transactions, CMT)一起使用,确保数据操作的原子性和一致性。CMT允许开发者通过设置事务属性来控制事务的粒度,如只在特定方法上开启事务。 **6. C++与...

Global site tag (gtag.js) - Google Analytics