当前位置: 首页 > 面试题库 >

桌面SWING应用程序上的jpa

安高翰
2023-03-14
问题内容

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

在我的新应用程序中,我第一次尝试使用JPA,我读了很多教程,这些教程使我几乎了解了我所需要的所有内容,但是找不到真正的Java
Desktop应用程序的好例子。

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

我想创建一个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嵌入式数据库一起使用。
谢谢


问题答案:

重新考虑设计之后,我决定将其更改为以下内容:

  • 在应用程序启动时创建一个“永久” EM,并保持打开状态,直到应用程序关闭。当需要时,permanentEM将用于查找/刷新实体(例如,获取懒惰的关系…)。
    为了确保通过WEAK刷新模式对内存进行有效管理,我将避免永久引用permanentEM的托管实体。

  • 创建一个“临时” EM来加载应用程序启动所需的“永久”数据。加载数据后,关闭该临时EM,以分离所有已加载的内存数据。

  • 为每个持久/合并/删除事务创建一个新的“临时” EM,并在事务提交后将其关闭。


 类似资料:
  • 问题内容: 我有一个非常大的程序,当前正在使用SWT。该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序。现在SWT有点老了,我想切换到Swing或JavaFX。我想听听您对三件事的想法。 我主要关心的是桌面GUI应用程序会更好吗?(我在网上看过,很多人认为JavaFX与Swing一样好,但是除了简单的见解大战之外,我没有看到很多有效的论点)。它必须在Wi

  • 问题内容: 我现在是一名Web开发人员,正在考虑构建我的第一个真正的桌面应用程序。这个想法是要构建一个工具,该工具可以在没有API的Web应用程序中自动执行非常重复的任务。 我知道我想使用Java。我以前在网络上使用过它,非常了解语法,并希望应用程序尽可能地跨平台。 我不确定的地方是应该使用SWT还是Swing。当我的主要受众使用Windows时,我希望在那里尽可能使用本机。Linux和Mac应该

  • 在学习这本书的过程中,你已经掌握了很多关于 Git 的命令。虽然这些是在学习过程中不可缺少的,但是版本控制的核心并不是让你学习所有的命令和参数。 当你掌握一些基本的概念,再加上一个带有用户图形界面的应用程序的帮助,就可以让你的日常工作变得更加简单。一个最大的好处就是它会为你提供了一个可视化的用户操作界面。 在桌面应用程序中,很多任务使用起来会更加容易和更方便。并且你也不需要记住那几十个繁琐的 Gi

  • 从零开始建造什么会更快? 我在我的应用程序中使用MVC方法,如果这对我有任何帮助的话。

  • 问题内容: 我已经开发了一个桌面Swing应用程序,并且正在考虑提供自动更新功能的最佳方法。我知道JavaWebStart提供了此功能,但我认为它不适合我的需求,因为我需要读取本地文件,因此需要对jar进行签名。此外,JWS需要额外的工作才能在服务器中部署,而现在我只需要上传.jar。 我一直在考虑这种方法: 第一个JAR(不需要更新)将加载初始屏幕,在config.xml中检查当前版本,并将其与

  • 作者:陈希章 发表于 2017年3月22日 桌面应用程序,在我这篇文章的语境中,我是特指在Windows桌面上面直接运行的.NET应用程序,包括Console Application,WPF Application,Windows Forms Application, UWP Application,并且限于篇幅,我只会以Console Application作为演示,因为无论表现形式如何不同,它