gpt4 book ai didi

singleton - EJB-@Singleton 管理查询结果

转载 作者:行者123 更新时间:2023-12-01 04:04:17 24 4
gpt4 key购买 nike

我应该使用 EJB-@Singleton (javax.ejb.Singleton) 进行统计或监控,还是将统计信息缓存在公共(public) @SessionScoped-Bean 中会更好?为了澄清我的问题,这里有两种情况:

场景一:

用户开始 Web session 并进行数据库查询以查看统计信息或数据表。这些查询在其 session 中完成。因此,10.000 个用户将进行 10.000 个相等的数据库查询。

场景二:

用户开始 Web session 并从预初始化的 @Singleton-Bean 重试统计数据或数据表的数据。 @Singleton (javax.ejb.Singleton) 在服务器启动 (@Startup) 的开头进行了查询。因此,10.000 个用户可以从 ONE 缓存 (@Singleton) 中读取数据,而不必查询数据库。如果其他人创建/编辑/删除数据,我的 @Singleton-Bean 会触发其缓存数据的刷新。

所以我的问题是:

  • 场景 II 的扩展性是否比场景 I 更好?我猜是。我对吗?
  • 还有其他注意事项或需要考虑的事情吗?
  • 我知道,Stateless-Beans 比@stateful 或@Singleton 扩展得多。我是否应该考虑使用@Stateless-Bean 并使用 JPA/Hibernate 缓存之类的东西缓存查询。
  • 我应该使用@ApplicationScoped (javax.enterprise.context) 而不是@Singleton (javax.ejb.Singleton) 来使用代理吗?会更好吗?
  • 最佳答案

    是的,场景 2 的规模比 1 更好,我们在这里谈论的是效率。

    最好使用较低的层,即持久层,来缓存实体,简单地
    因为这样做是它的工作。

    使用哪个取决于您使用的服务器,您是否使用完整的企业服务器,如果是,那么更好地利用它提供的事务,如果您只是使用诸如tomcat之类的Web容器,那么最好使用托管bean。

    关于singleton - EJB-@Singleton 管理查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10511943/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com