桌面 SWING 应用程序上的 jpa

2023-11-30

我正在使用 SWING 开发一个单用户桌面应用程序。我对这种使用 java.sql api 的应用程序有一点经验,并发现它一点也不舒服......

在我的新应用程序中,我第一次尝试使用 JPA,我阅读了很多教程,这些教程使我几乎了解了我需要的所有内容,但没有找到真正的 java 桌面应用程序的好示例。

我正在考虑使用以下架构,但不知道我是否正确......

我想创建一个 MyPersistenceUnit 类:

    public class MyPersistenceUnit {
        private static EntityManagerFactory factory;
        private static EntityManager entityManager;

        public static void initiate(){
            factory=Persistence.createEntityManagerFactory("PU_Name");
            entityManager=factory.createEntityManager();
        }

        public static EntityManager getEntityManager() {
            return entityManager;
        }

        public static void close(){
            entityManager.close();
            factory.close();
        }

    }

initiate() 方法将首先被调用,close() 方法将在应用程序关闭时被调用。

当应用程序运行时,所有事务都将通过 getEntityManager() 实例完成,该实例可以在应用程序中的任何位置访问。如果我对 JSE 应用程序的理解是正确的,则获得的实体管理器具有扩展的持久性上下文,它将在实体管理器不关闭时将所有实体保持在托管状态,这就是让我这样想的原因......

我不知道我是否遗漏了一些东西,所以任何提示将不胜感激

请注意,我将 eclipselink 提供程序与 derby 嵌入式数据库一起使用。
Thanks


据我了解,问题归结为您是否应该打开 EntityManager 并全局存储其引用并在应用程序中的各处访问相同的实例。

我认为如果您的应用程序是中小型的,那应该没问题。请注意,数据库连接(因此会话/entityManager)可能会由于各种因素而下降。并且不要对事务执行此操作(即不要在开始时打开它们并在结束时提交)。保持交易尽可能细粒度。

有经验丰富的人对此进行了各种讨论,您可以在这里关注:for and counter关于这个问题的争论 -在 Swing 应用程序中使用 Hibernate 进行会话管理

另请参阅this关于同一主题。

Here是一个由 hibernate 委员会创建的示例桌面应用程序。不老,你就能明白。

最后this这篇文章非常适合理解桌面应用程序的一般 JPA 概念。

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

桌面 SWING 应用程序上的 jpa 的相关文章

随机推荐

  • 在opencv中求熵

    我需要一个像这样的函数entropyfilt 在matlab中 opencv中不存在 在Matlab中 J entropyfilt I 返回数组 J 其中每个输出像素包含输入图像 I 中相应像素周围 9 9 邻域的熵值 我写了一个函数在 C
  • 给类点击事件C#

    嗨 我只是想知道是否有一种方法可以为班级提供自己的点击事件 例如 我有一个卡片类 有没有办法知道用户何时单击该类中的矩形 显示卡片的图片 或者更好的是 我如何知道何时单击卡片矩形 要从 Windows 获取 鼠标已单击此处 消息 您需要有一
  • JTextArea 不动态更新

    我在一个类中有一个 JTextArea 我想动态更新它 目前它只显示我在所有处理完成后附加到它的文本 我尝试执行以下操作来修复它 public NewConsole initComponents public void write fina
  • 如何使用videoview流畅地播放url中的视频?

    我有一项活动VideoView 它正在播放来自 url 的视频 我所做的就是为了玩得顺利 我已经放了一个ProgressDialog在活动开始时 并在里面驳回它onPreparedListener这样才能玩得又好又流畅 但仍然没有帮助 视频
  • android - 如何使按钮闪烁?

    有没有什么方法 在代码中 使按钮持续闪烁 然后在按下时停止闪烁 有几种 具体取决于您所指的闪烁类型 例如 您可以使用 alpha 动画并在按钮第一次出现时启动它 当用户单击按钮时 在您的OnClickListener做就是了clearAni
  • 将围绕 sockaddr_storage 和 sockaddr_in 进行转换,打破严格的别名

    继我之前的question 我真的很好奇这段代码 case AF INET struct sockaddr in tmp reinterpret cast
  • 将原始 HTTP 请求转换为 HTTPWebRequest 对象

    在 NET 中 是否可以将原始 HTTP 请求转换为 HTTPWebRequest 对象 我确信 NET 内部正在这样做 知道 NET 的哪一部分实际上在处理这个问题吗 我可以调用它吗 或者是否有任何允许原始 HTTP 连接的外部库 我不相
  • dart 中的转义“正则表达式”

    我正在尝试捕获 dart 正则表达式中的符号 我的正则表达式如下所示 RegExp containsSymbolRegExp RegExp r lt gt 但是 我还需要让它捕获符号 但我不能把 放在那里 因为它会弄乱字符串 有什么想法如何
  • 如何比较数组中的日期以找到最早的日期?

    我有一个名为 dateArray 的变量 其中包含日期 例如 09 09 2009 16 07 2010 29 01 2001 我想用 for 循环找到最早的一个 所以结果是 29 01 2001 or dateArray 2 语言是jav
  • 选择窗口无法选择子窗口

    在我的 Java 代码中 单击 编辑描述 链接后 将打开一个窗口 即 Java 脚本窗口 此处的图像第一个给出带有属性的锚标记 第二个打开窗口 Image 1 Image 2 Window image Along with Page Sou
  • 在Python中将字符串二维列表转换回二维列表[重复]

    这个问题在这里已经有答案了 我刚刚开始玩Python 我知道我们可以使用 str 将任何列表转换为字符串 喜欢 gt gt gt l 1 1 2 2 3 3 gt gt gt l 1 1 2 2 3 3 gt gt gt type l
  • 太多的回溯:为什么这里有“重做”?

    我正在 Prolog 中做一个非常简单的练习 但跟踪中有些东西我不明白 该程序是一个 大于 gt 对表示为后继的整数 greater than succ 0 greater than succ A succ B greater than A
  • 如何清除p:dataTable中的所有输入字段?

    我将 JSF 2 0 与 PrimeFaces 一起使用 我有一个
  • CSS 位置 - 顶部 100% 不等于底部 0

    我在分配时注意到了这一点fixed定位到 css3 动画的元素 即top 100 没有得到相同的效果bottom 0 它定位文档外部的元素 而bottom 0 仍然显示整个元素 JSFiddle演示 css位置有相反的吗top 0 这会自动
  • Yocto 中支持 PHP 的 Apache2

    我正在使用 Yocto 创建一个包含 apache2 的构建 但我很难添加 php 支持 我之前运行过它 阅读 去年 但从那时起 meta openembedded 中的meta webserver 层发生了变化 来自元网络服务器中的自述文
  • 将外部 javascript 导入到 google apps 脚本 [重复]

    这个问题在这里已经有答案了 我正在尝试从 Google 电子表格 Google 文档 使用 Trello 但不确定如何导入 引用 链接使用其库所需的 javascript 文件 我唯一的其他选择是直接使用他们的 REST API 很好 但我
  • 如何在Tensorflow中将字符串张量转换为Python字符串?

    以下代码是批量数据提供程序 mat文件 但运行时出现以下问题 TypeError expected str bytes or os PathLike object not FIFOQueue 代码是 import numpy as np i
  • 强制绑定DataGridView生成列和行

    我以编程方式创建一个 DataGridView 对象 然后使用网格的 DataSource 属性将其绑定到 DataTable 创建网格后 我将其添加到 WinForms 的控件集合中 即 Form1 Controls Add grid 我
  • 银行式导航限制

    某些网络应用程序 尤其是银行网站 会阻止您使用浏览器的导航按钮 在新选项卡中打开链接甚至刷新页面 通常他们会警告您不要这样做 甚至终止会话 迫使您再次登录 他们是否遵循特定的架构模式来实现这一目标 他们的目标是什么 这如何提高安全性 他们可
  • 桌面 SWING 应用程序上的 jpa

    我正在使用 SWING 开发一个单用户桌面应用程序 我对这种使用 java sql api 的应用程序有一点经验 并发现它一点也不舒服 在我的新应用程序中 我第一次尝试使用 JPA 我阅读了很多教程 这些教程使我几乎了解了我需要的所有内容