Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 桌面应用程序-Hibernate(使用JPA EntityManager)/Spring/Swing驱动的扩展会话_Java_Spring_Swing_Hibernate_Jpa - Fatal编程技术网

Java 桌面应用程序-Hibernate(使用JPA EntityManager)/Spring/Swing驱动的扩展会话

Java 桌面应用程序-Hibernate(使用JPA EntityManager)/Spring/Swing驱动的扩展会话,java,spring,swing,hibernate,jpa,Java,Spring,Swing,Hibernate,Jpa,我在为我正在开发的Swing两层JavaSE桌面应用程序扩展JPA持久性上下文(一种“对话中的开放会话”模式)时遇到问题 这对我的好处是: 延迟加载对象到GUI 允许用户编辑/使用对象,而无需从数据库重新加载对象-以防其他用户进行编辑。这将由Hibernate的版本控制进行检查,如果持久性上下文持续“对话”的持续时间,则会抛出错误 有很多详细的web使用方法,但几乎没有任何桌面使用方法 有人能推荐一种合适的方法吗?当每个对话框窗口都有自己的hibernate会话时,我使用“在窗口中打开会话”

我在为我正在开发的Swing两层JavaSE桌面应用程序扩展JPA持久性上下文(一种“对话中的开放会话”模式)时遇到问题

这对我的好处是:

  • 延迟加载对象到GUI
  • 允许用户编辑/使用对象,而无需从数据库重新加载对象-以防其他用户进行编辑。这将由Hibernate的版本控制进行检查,如果持久性上下文持续“对话”的持续时间,则会抛出错误
有很多详细的web使用方法,但几乎没有任何桌面使用方法


有人能推荐一种合适的方法吗?

当每个对话框窗口都有自己的hibernate会话时,我使用“在窗口中打开会话”模式。那是很久以前的事了,使用Hibernate2.x,效果不是很好。特别是当抛出一些异常时。会话中的所有hibernate对象都变得无效,您必须修复异常原因并重复所有更改。这就是我所认为的方法。我可以问一下,从那以后你是否改变了你的方法吗?不幸的是,我是我的第一个也是最后一个桌面应用程序。但它工作得相当快,可能是因为我们没有那么多用户,每个用户需要一个到DB的连接,所以如果有100-200个用户,这种方法可能是危险的。非常痛苦的是,我们通过编写合并窗口来处理它,在这里向用户显示他和服务器版本之间的差异。