【问题标题】:What do i get from setting this TransactionAttributeType.NOT_SUPPORTED我从设置这个 TransactionAttributeType.NOT_SUPPORTED 中得到什么
【发布时间】:2012-06-03 12:01:25
【问题描述】:

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

这是否意味着无状态 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();
    }

我能从中得到什么?

谢谢。

【问题讨论】:

    标签: ejb-3.0 jpa-2.0


    【解决方案1】:

    你得到的是:

    1. 以相对正式的方式告诉您的方法不需要事务(因此您知道例如它不会在 EntityManager 中调用持久化、合并或删除)。
    2. 在某些情况下可能性能优化。
      • 无需创建/传递事务。根据Java EE 5 Tutorial:“由于事务涉及开销,此属性可能会提高性能。”
      • 根据其他来源(例如 Pro JPA 2),它提供了根本不创建托管实体的实现可能性(这可能比立即创建分离实体更繁重)。

    【讨论】:

    • EntityManager 如何在没有事务的情况下执行查询? /困惑/
    猜你喜欢
    • 2023-01-12
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多