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来执行数据库查询,就没有可用的数据库连接。