当前位置: 首页 > 知识库问答 >
问题:

使用JPA和CDI的JSF应用程序后端架构

狄珂
2023-03-14
    null

此外,EntityManager的作用域应该是请求(或会话或方法)吗?

谢谢,克里西

共有1个答案

柯瀚玥
2023-03-14

我将使用服务层来管理业务逻辑,使用数据访问层来管理对象关系模型。因此,实体管理器和事务应该是DAO的一部分。保持交易尽可能短是很重要的。

选择哪种类型的作用域的决定并不明显,因为它取决于bean/应用程序的性质。幻灯片15中演示文稿后面的用法示例:

  • @requestscoped:dto/models,JSF backing beans
  • @conversationscoped:多步工作流,购物车
  • @sessionscoped:用户登录凭据
  • @applicationscoped:整个应用程序共享的数据,缓存
@SessionScoped // conversation, application scoped as well
public class ServiceImpl implements Service {
    @Inject
    private Dao dao;

    public void createSomething(SomeDto dto) {
        // dto -> entity transformation
        dao.create(entity);
    }

    public SomeDto getSomething(int id) {
        SomeEntity entity = em.findById(id);
        // entity -> dto transformation
        return dto;
    }
}
@RequestScoped
@Transactional
public class DaoImpl implements Dao {
    @Inject
    private EntityManager em; //creating em is cheap

    // TxType.REQUIRED by default
    public void create(SomeEntity entity) { 
        em.persist(entity);
    }

    @Transactional(TxType.NOT_SUPPORTED)
    public SomeEntity findById(int id) {
        return em.find(SomeEntity.class, id);
    }   
}
 类似资料:
  • 我的应用程序中的查询有问题。这是执行查询的查询方法: 这是错误: 在我发现的痕迹中: 原因:java。lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:语法错误解析[SELECT*FROM PRODUCT WHERE CATEGORY='Humano'。[22,22]select语句必须有FROM子句。[7,7]算术表达式中缺少

  • 我从一个新项目开始,目前正在评估是否使用JPA或JDBC。我们的操作主要是大容量插入和大容量读取,很少是单次插入/读取。我用JPA和JDBC检查了一个原型,意识到两者都有自己的优点和局限性。考虑到当前的用例,对于一个事实,我将永远只有大容量读和大容量写,哪一个会是更好的选择? Spring JPA Repository提供了一个简单的方法save(Collection),该方法既可以收集又可以保存

  • 我在JBoss EAP 6上使用Java EE 6,我的JSF bean注释如下:(都来自包) 但是,它们也是CDI bean(默认构造函数,使用、等)。我一直读到不能混合这些注释(JSF和CDI),但它显然工作得很好:注入工作正常,视图更改时调用preDestroy等)。 我是不是漏掉了什么?问题出在哪里?为什么不用呢?

  • 我正在尝试关闭本地mysql数据库的ssl。但我无法在spring应用程序中找到实际属性。属性文件,该文件将执行此操作。 我当前的文件是: 我试过Spring。数据源。useSSl=false,这不起作用。我也尝试过spring。数据源。url=jdbc:mysql://localhost:3306/test

  • 我整天都在尝试运行JSF应用程序的JMeter测试。我知道,但这似乎是一个非常简单的问题。我准备了正则表达式提取器: 以下采样器是用代理和记录创建的。 第一个请求。这是将从中提取ViewState的请求。 请求其中<代码>${jsfviewstee}被传递到 第二个请求在本例中非常重要。 结果是: 首先。在右边我们可以看到ViewState的值。 ,它显示jsfViewState值是正确的。我们可