Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 在UI中使用Hibernate对象图之前,加载它的最佳方法是什么?_Java_Hibernate - Fatal编程技术网

Java 在UI中使用Hibernate对象图之前,加载它的最佳方法是什么?

Java 在UI中使用Hibernate对象图之前,加载它的最佳方法是什么?,java,hibernate,Java,Hibernate,情况是这样的: 您有一个带有 对象图,它具有一些惰性 加载已定义 你想用 将UI中的Hibernate对象作为 无需复制数据 某处 有不同的用户界面 需要不同语言的上下文 数据量 数据太多了 大到只急着装整个 每次都画一张图表 以可配置的方式加载对象图中所有适当对象的最佳方法是什么,以便无需返回数据库加载更多数据即可访问这些对象 任何帮助。假设你有客户,在某一点上你必须对他的订单做些什么,也许他的订单会有奖金 然后,我将定义一个具有流畅界面的存储库,它将允许我说: new ClientRep

情况是这样的:

  • 您有一个带有 对象图,它具有一些惰性 加载已定义
  • 你想用 将UI中的Hibernate对象作为 无需复制数据 某处
  • 有不同的用户界面 需要不同语言的上下文 数据量
  • 数据太多了 大到只急着装整个 每次都画一张图表
以可配置的方式加载对象图中所有适当对象的最佳方法是什么,以便无需返回数据库加载更多数据即可访问这些对象


任何帮助。

假设你有客户,在某一点上你必须对他的订单做些什么,也许他的订单会有奖金

然后,我将定义一个具有流畅界面的存储库,它将允许我说:

new ClientRepo().LoadClientBy(id)
                .WithOrders()
                .WithBonus()
                .OrderByName();

在那里,你的客户提供了你所需要的一切。你最好提前知道当前操作需要什么。这样,您可以避免不必要的数据库访问。(团队中的新开发人员通常会这样做-调用属性,而不知道这实际上是对数据库的调用)

假设您有客户,在某一点上您必须处理他的订单,并且可能他的订单有奖金

然后,我将定义一个具有流畅界面的存储库,它将允许我说:

new ClientRepo().LoadClientBy(id)
                .WithOrders()
                .WithBonus()
                .OrderByName();

在那里,你的客户提供了你所需要的一切。你最好提前知道当前操作需要什么。通过这种方式,您可以避免不必要的数据库访问。(团队中的新开发人员通常会这样做-调用一个属性,而不知道它实际上是对数据库的调用)

如果它是一个webapp,而您使用的是Spring,那么OpenSessionInViewFilter可以解决您的问题。

如果它是一个webapp,而您使用的是Spring,那么OpenSessionInViewFilter就可以解决您的问题。

我们在项目中使用的一种方法是为您拥有的每个视图创建一个服务。然后视图获取这个特定视图所需的子图,总是试图减少发送到数据库的SQL数。因此,我们使用大量联接来获取n:1关联对象

如果您使用的是直接连接到DB的两层桌面应用程序,您只需将对象保持连接状态,即可随时自动加载其他数据。否则,您必须将其重新连接到会话,并初始化与
Hibernate.initialize(对象实体,字符串属性名称)


(内存不足,可能不是100%正确)

我们在项目中使用的一种方法是为您拥有的每个视图创建一个服务。然后视图获取这个特定视图所需的子图,总是试图减少发送到数据库的SQL数。因此,我们使用大量联接来获取n:1关联对象

如果您使用的是直接连接到DB的两层桌面应用程序,您只需将对象保持连接状态,即可随时自动加载其他数据。否则,您必须将其重新连接到会话,并初始化与
Hibernate.initialize(对象实体,字符串属性名称)


(内存不足,可能不是100%正确)

这并不能解决“无需返回数据库”的问题,因为这正是OpenSession将要做的…而整个使用案例都是将它与GWT结合使用,GWT意味着不需要对服务器执行一些巧妙的AJAX来执行数据库查询,就没有可用的数据库连接。这并不能解决“不必返回数据库”的问题,因为这正是OpenSession将要做的……而整个使用案例都是将它与GWT结合使用,GWT意味着不需要对服务器执行一些巧妙的AJAX来执行数据库查询,就没有可用的数据库连接。