有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多j2ee应用程序系统中具有惰性字段的实体的java最佳实践

我正在开发一个由部署在Oracle Weblogic服务器上的几个J2EE应用程序组成的系统,使用Toplink作为JPA提供商

在我的系统中,我有一个负责持久性的应用程序(它将我的所有实体读写到数据库中)。其他应用程序使用此应用程序访问数据库中的数据

我还有一个实体持有LOB字段。使用此实体时,不总是使用LOB字段。因此,我修改了实体,使其能够懒洋洋地获取LOB字段

但现在我遇到了一个问题:当我的一个应用程序从持久性应用程序读取这个实体时,返回的实体是一个普通的POJO,与任何EntityManager分离,因此我无法读取LOB字段(它从未被调用,因此从未被获取)

我想也许我可以向持久性应用程序添加一个方法,该方法将完全获取实体(或者使用带有布尔参数的相同方法),但这会使持久性应用程序的接口过于具体(如果该实体中有更多LOB字段呢?)

你会怎么做?在这种情况下,最佳做法是什么


共 (1) 个答案

  1. # 1 楼答案

    使用DTO(数据传输对象)——不是实体的对象,但用于在应用程序/应用程序层之间传输数据

    在那里,你可以自由决定何时使用哪个字段。例如:

    class Service {
       LoblessResult getSimpleData(..);
       LobbedResult getCompleteData(..);
    } 
    

    其中LoblessResultLobbedResult是两个类,包含实体字段的不同子集

    如果唯一的区别是@Lob字段,那么客户端应该发出第二个请求来获取该字段的值。您将只有一个DTO,它只有一个字段