我应该使用EJB- @ Singleton(javax.ejb.Singleton)进行统计或监控,还是最好将统计信息缓存在常见的@SessionScoped-Bean中?要澄清我的问题,这里有两种情况:
情景I:
用户开始Websession并进行数据库查询以查看统计信息或数据表。这些查询在其会话中已满。因此,10.000用户将进行10.000个相同的数据库查询。
情景II:
用户开始Websession并从预初始化的@ Singleton-Bean重试统计数据或数据表的数据。 @Singleton(javax.ejb.Singleton)在Server-Startup(@Startup)的开头进行了查询。因此,10.000用户可以从一个缓存(@Singleton)读取,而不必查询数据库。如果其他人创建/编辑/删除数据,我的@ Singleton-Bean会触发刷新其缓存数据。
所以我的问题是:
答案 0 :(得分:2)
是的,场景2的扩展性优于1,我们在这里谈论效率。
最好使用较低层(即持久层)来简单地缓存实体 因为这是它的工作。
使用要么取决于你使用的服务器,你使用完整的企业服务器,如果是,那么更好地利用它提供的交易,如果你只是使用像tomcat这样的web容器,那么更好地使用托管豆。