需要 EJB 3.1 Singleton + JPA + JSF 设计建议

2024-03-30

给定:简单的 JSF web 应用程序(无 Seam),让 JSF bean 调用几个 EJB,而 EJB 又加载并保存 JPA 实体。我想要的是使用@Singletonejb 和注入的注释EntityManager 代替 EntityManagerFactory:

@Singleton
public class MyEJB {
  @PersistenceContext(unitName = PERSISTENCE_UNIT_NAME)
  protected EntityManager em; // not EntityManagerFactory
}

规格说@Singleton是线程安全的,支持并发和事务属性(从我的观点来看)这使得从 JSF bean 调用变得安全。我预计性能也会有所提高,因为EntityManager不会为每个调用重新创建,并且具有内部缓存功能。

我在这里主要关心的是当我有多个单例并且因此具有相同数量的长期生存的 EntityManager 时,对 JPA 实体的创建/更新操作。

  • 如果一个单例更新 JPA 实例会发生什么以及这些如何发生 更改是否会填充到其他单例?
  • 由于我无法关闭实体管理器,我是否需要刷新它 每个实体更新?
  • 如果这几个单例共享同一个实体会更好吗 经理?
  • 我只看到了很少的这种设计的例子。为什么?有没有严重的 缺点?

提前谢谢了!


我还期望性能上的提升,因为 EntityManager 不会为每个调用重新创建,而且它具有内部缓存功能。

您可能会使用单例节省一些内存,但在应用程序中的任何地方使用它实际上可能会使其速度变慢,因为由于只有一个 EJB 来服务应用程序的各个用户的所有并发请求,因此容器会锁定对 EJB 的访问,并且当它忙于处理一个请求,无法处理另一个请求。然而,使用锁类型(即,@Lock(WRITE) and @Lock(READ)).

当您想要使用 EJB 计时器定期执行一段代码或定期更新缓存等时,单例非常有用。

如果一个单例更新 JPA 实例会发生什么以及如何将这些更改填充到其他单例?

与非单例 EJB 的行为方式应该没有任何不同。

由于我无法关闭实体管理器,我是否需要在每次实体更新时刷新它?

如果您使用 CMT,则不会。在每笔交易结束时,所有内容都会自动刷新。

如果这几个单例共享同一个实体管理器会更好吗?

对我来说似乎是过早的优化。只需让容器为您注入 EM 即可。

我只看到了很少的这种设计的例子。为什么?有什么严重的缺点吗?

已经解释过了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要 EJB 3.1 Singleton + JPA + JSF 设计建议 的相关文章

  • 使用 CrudRepository 进行自定义查询

    我想使用 CrudRepository 自定义查询 这是我的代码 Repository public interface CustomerRepository extends CrudRepository
  • Spring使用实体管理器实现分页

    如何在 Spring hibernate 项目中实现分页 以下是代码 我将获得 PageRequest 对象 并且我想返回项目页面 Repository public class ItemRepository PersistenceCont
  • spring data jpa 过滤 @OneToMany 中的子项

    我有一个员工测试实体是父实体并且FunGroup信息子实体 这两个实体都是通过employeeId映射 我需要一种方法来过滤掉与搜索条件匹配的子实体 以便结果仅包含父实体和子实体 满足要求 员工测试类 Entity name Employe
  • 重定向和导航/转发之间有什么区别以及何时使用什么?

    JSF 中的导航有什么区别 FacesContext context FacesContext getCurrentInstance context getApplication getNavigationHandler handleNav
  • 需要 Spring 3 JSF 2 集成示例

    我想将 Spring 3 Web Flow 2 JSF 2 集成在一起 我需要您向我推荐一个好的教程或示例 提前致谢 UPDATE 我使用了以下示例 它对我来说运行良好 没有任何问题 http www mkyong com jsf2 jsf
  • 当 ajax 请求验证失败时,如何使用 Primefaces 突出显示 UIInput?

    验证器类 FacesValidator br gov valec sicpd util CpfValidator public class CpfValidator implements Validator Override public
  • ViewScope:定位“正确的”复合组件的对象实例

    进一步了解 jsf 2 视图范围的过程 我再次遇到了问题 我的复合组件的绑定对象创建了多个实例 并且设置值似乎没有针对 正确 的对象 我的初始设置与中相同从视图范围的 bean 自动实例化会话范围的 bean https stackover
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • JPA 乐观锁与同步 Java 方法

    使用 JPA 乐观锁定 我们可以通过 Version 字段控制数据库表是否已被另一个事务同时更新 从而允许在数据库中存储可靠的数据 如果一个Java应用程序只有一个CRUD服务负责数据库中的特定实体 我们也可以同步其方法并管理信息在数据库中
  • 如何在 servlet 线程中获取新的有状态会话 bean?

    我正在尝试 EJB3 我想将一个有状态会话 bean 注入到 servlet 中 以便每个访问该 servlet 的用户都会获得一个新的 bean 显然 我不能让 bean 成为 servlet 的实例变量 因为它将被共享 显然不允许注入局
  • JpaRepository 上的@Transactional

    我正在使用只读数据库将一些数据输入到我的项目中 我们使用带有 jpa 和 hibernate 的 Spring v3 以下注释是否会使对我的存储库的所有调用成为只读事务 或者我是否需要调用存储库的服务层上的注释 package com bl
  • JSF 2.x @EJB 依赖注入错误

    因此 正如编程中通常发生的那样 我提出了一个问题 而一个潜在的解决方案又引发了更多问题 和错误 我刚开始使用 servlet JSF 和 EJB 并且遇到了依赖注入错误 这是我原来的问题 JSF h 标签不显示 https stackove
  • JPA - OneToOne 外键作为主键

    我有一个表 需要其主键作为其他表的外键 因此是单向的一对一关系 每本书只有一个作者 如下所示 Entity public class Author Id String code getters and setters Entity publ
  • 沉默 FullAjaxExceptionHandler

    所以在面对可怕的事情之后javax faces application ViewExpiredException 我不得不去互联网上寻找合适的解决方案 幸运的是 解决方案很容易获得 我继续采用了 OmniFacesFullAjaxExcep
  • jsf中如何处理周围的命名容器?

    我有一个 jsf 2 0 页面 其中包含
  • 在调用 toString() 时如何避免初始化 HibernateProxy?

    我有以下映射 Author Entity Getter Setter public class Author Id GeneratedValue strategy IDENTITY Access PROPERTY private Long
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 当 p:ajax event=change 时,如何禁用 selectOneMenu 上所需的标记?

    这是我的配置 PrimeFaces 4 0 4 精英 OmniFaces 1 6 3 JSF MyFaces 2 0 2 服务器 WebSphere 8 5 0 2 一些代码 为了更清楚我只发布相关部分
  • CrudRepository 未从 schema.sql 读取数据

    Setup 我有一个带有简单 Entity Customer 对象和 CustomerRepository 的 spring boot 应用程序 我想用描述的测试数据预加载数据库在我的另一个问题中 https stackoverflow c

随机推荐

  • 以编程方式删除标准 UITableView 中的栏

    有谁知道是否可以在代码中从 UITableView 中删除顶栏 那么在这种情况下 删除 书籍 栏吗 self navigationController setNavigationBarHidden YES
  • Powershell Get-ChildItem -Filter 的操作方式与具有相同值的Where 子句不同

    我的服务器上有一个名为 MyFolder 的文件夹 还有其他文件夹称为 MyFolder 1 MyFolder 2 MyFolder 3 等 如果我运行 gci C Sample Name like MyFolder 我得到预期的输出 Di
  • 可以在透明背景PNG图像上创建CSS阴影吗?

    有人知道是否可以在透明背景 PNG 图像上创建基于 css 的阴影 也许使用 CSS3 jquery 或者最后是服务器端 我想要实现的效果示例 非常确定是否可能它不会跨浏览器 但如果它性能良好 愿意应用吗 请随意添加您的意见 开放技术讨论
  • 在struts 2对话框中显示错误消息?

    我在 Struts 2 中有一个登录表单 其中包含用户名和密码字段 我想要的是当用户提交表单时 如果它不是有效用户 我想在对话框中显示错误消息 而不是在登录表单本身中显示错误消息 struts 2 中是否有可用的标签 或者有 人可以向我指出
  • Play Framework——向类路径添加新目录

    我希望能够有一个单独的目录 可以将代表插件的 jar 文件添加到 Play 2 0 项目中 Jar 文件通常保存在 Play 中的 lib 目录下 我想将我的 jar 放在一个名为 plugins 的目录中 这个问题之前被问过 但建议是只使
  • 在 Java 和 C# 中计算 SHA-1 哈希值

    在 Java 和 C 中计算 SHA 1 哈希值 我正在尝试在 C 应用程序中复制 Java 应用程序的逻辑 其中一部分涉及生成密码的 SHA 1 哈希值 不幸的是我无法从 Java 和 C 获得相同的结果 C Output 64 0a b
  • NotImplementedError:frozendict 不支持“更新” - Odoo v8

    我的 Odoo v8 模块上有以下代码 api multi def button generate wh doc self context self context partner self env res partner res for
  • 使用多个 log4net 文件记录器

    我有文件附加器 FileA FileB 和 FileC 我将 FileA 添加到根元素 因为我希望它成为一个包罗万象的元素 下面将详细介绍 我将 FileB 和 FileC 用于特定消息 并为每个附加程序创建命名记录器 在代码中 我加载用于
  • 为什么使用预编译头(C/C++)?

    为什么要使用预编译头 读了这些回复 我怀疑我对它们所做的事情有点愚蠢 pragma once Defines used for production versions ifndef PRODUCTION define eMsg x x Sh
  • 找不到 microsoft.sqlserver.batchparser.dll

    我编写了一个 asp net Web 应用程序 它使用 SMO 针对 SQL Server 2008 来运行一些数据库脚本 它引用这些程序集 位于 C Program Files Microsoft SQL Server 100 SDK A
  • qt5中MainWindow是用自身初始化的吗?

    我尝试学习 qt 5 但不明白一件事 Qt Creator 默认创建这两个文件 主窗口 h ifndef MAINWINDOW H define MAINWINDOW H include
  • 在 Laravel 迁移中向现有表添加新列

    我想在现有表中添加一些新列users在拉拉维尔 我已经用谷歌搜索了这一点 并在这些搜索之后我已经使用命令创建了迁移php artisan make migration add columns to users add columns to
  • 为什么 Swing 线程模型被认为是错误的?应该如何理解? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我多次听说 Java Swing 线
  • 使用图像映射创建不规则形状的 HTML 链接?

    我必须创建这种奇怪的蜂窝式导航 理想情况下 当用户悬停在每个 蜂窝 上时 它会改变颜色 也许是透明的橙色覆盖物或其他东西 我做了一个有点工作的 JS Fiddle 但不知道如何突出显示悬停时的形状 我已经很长时间没有看到使用图像映射了 但这
  • 如何取消设置嵌套 foreach 中的每个数组?

    我有一段多维数组输出 如下所示 Array 0 gt Array item gt null count gt 0 child gt Array Dagadu Bocah gt Array item gt Dagadu Bocah count
  • 如何在 adb (android) 中使用 Bash 而不是 Shell?

    我目前正在使用 adb 终端访问我的数据库文件 但是 我只能使用以下命令访问终端 adb shell 我想从 sh 切换到 bash 因为它对于某些快捷方式来说更方便 我怎么做 我不认为 adb 有 bash 选项 如果你输入adb hel
  • 如何使用 Apache Poi 在折线图中设置轴标签

    我正在尝试使用 java 和 Apache POI 自动创建报告 我快要完成了 但找不到如何在 XSSFChart 中设置轴标签 我已经找到了如何设置图表的标题 Apache POI 设置 Excel 图表标题 https stackove
  • SlideToggle 高度为“跳跃”

    我的 jQueryslideToggle 实验 谁能告诉我为什么我打开盒子时会 跳动 前半部分他们滑动 其余部分他们 跳跃 Thanks 约翰内斯 对我有帮助的是 overflow hidden 到那个切换
  • Android NDK:使用预编译静态库进行链接

    我正在尝试将 Jnetpcap 移植到 Android 以便使用它来解析 pcap 文件 Jnetpcap 是使用 JNI 的 libpcap 的 java 包装器 我已经使用 android 的源代码树将 libpcap 编译为静态库 当
  • 需要 EJB 3.1 Singleton + JPA + JSF 设计建议

    给定 简单的 JSF web 应用程序 无 Seam 让 JSF bean 调用几个 EJB 而 EJB 又加载并保存 JPA 实体 我想要的是使用 Singletonejb 和注入的注释EntityManager 代替 EntityMan