ejb-3.0 - 我从设置这个 TransactionAttributeType.NOT_SUPPORTED 得到什么

标签 ejb-3.0 jpa-2.0

我碰巧找到了使用这个结构的例子,虽然我不确定我能从中得到什么?

这是否意味着无状态 EJB 中的所有 select 语句都应该遵循这一点?

@Stateless
public class EmployeeFacade {
    @PersistenceContext(unitName="EmployeeService")
    EntityManager em;

    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Department> findAllEmployees() {
        return em.createQuery("SELECT e FROM Employee e",
        Employee.class)
        .getResultList();
    }

我能从中得到什么?

谢谢。

最佳答案

你得到的是:

  • 相对正式的方式来告诉您的方法不需要事务(因此您知道例如它不会在 EntityManager 中调用持久、合并或删除)。
  • 在某些情况下可能的性能优化。
  • 无需创建/传递交易。根据 Java EE 5 Tutorial :“因为事务涉及开销,这个属性可能会提高性能。”
  • 根据其他来源(例如 Pro JPA 2),它提供了根本不创建托管实体的实现可能性(这可能比立即创建分离实体更繁重的操作)。
  • 关于ejb-3.0 - 我从设置这个 TransactionAttributeType.NOT_SUPPORTED 得到什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796172/

    相关文章:

    java - EJB3为null,在j2se环境中使用时会触发NullPointerException

    jersey - 在 WebLogic 10.3.6 上将 EJB 3.0 注入(inject) Jersey 1.9

    java - Hibernate插入问题

    hibernate - JSE 中带有 JPA 的 EntityManager ThreadLocal 模式

    spring - 在 JUnit 测试用例上获取 LazyInitializationException

    java - 使用 JPA 和 Hibernate 保存 OneToMany 关系的命令

    java - Websphere 85 ejb 3 部署问题

    ejb - 如何在 JBoss AS 7 中保护 RESTful 接口(interface)

    jakarta-ee - EJB 中的异步调用方法

    java - 用作 websphere 8 应用程序的 -javaagent 的 openjpa jar 位于哪里?