gpt4 book ai didi

java - 通过 EJB/JPA(Hibernate) 仅传输一次对象

转载 作者:行者123 更新时间:2023-11-30 05:09:49 25 4
gpt4 key购买 nike

我正在将带有 JPA(Hibernate) 的 Java Enterprise Edition 用于服务器客户端应用程序(通过 EJB)。该程序在数据库中存储了大量需要传输到客户端的数据。因为我想传输尽可能少的数据,所以我不想传输对象两次。

我想用一个小例子来演示我的问题:

数据库:

[User]
- UserID (PK)
- Name
- Adress (FK)

[Adress]
- AdressID (PK)
- Street

Sample data:
[User:1, Max, 1]
[User:2, Peter, 2]
[Adress:1, Mainstreet]
[Adress:2, Riverstreet]

现在我想将所有用户的列表(以及预先加载的地址)传输到客户端以及所有地址的列表。

服务器端创建列表:

用户列表:

Query q = manager.createQuery("select u from UserBean m LEFT JOIN FETCH u.adress");
List<UserBean> l = (List<UserBean>) q.getResultList();
return l;

地址列表:

Query q = manager.createQuery("select a from AdressBean m");
List<AdressBean> l = (List<AdressBean>) q.getResultList();
return l;

当客户端获取列表时,我检查 user1.getAdress().hashCode()adress1.hashCode() 的哈希码。结果是不相等,因此在获取列表时该对象必须保存两次并且传输两次。

是否可以告诉(也许在 EJB 中)仅传输对象一次并传输正确的引用?或者我可以改进我的转移机制吗?

非常感谢!彼得31280

最佳答案

如果您的客户端在不同的虚拟机中运行,则无法传输相同的实例。默认情况下,反序列化会创建对象的新实例。

因此,您最好在类上重写 hashCode()equals()

关于java - 通过 EJB/JPA(Hibernate) 仅传输一次对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com