我遇到了一个自己无法解决的问题,因此,我正在寻求你的帮助。问题如下: 我们必须升级持久层。以前项目使用JDBC来访问数据,但现在它应该使用JPA。这意味着现在在新对象中检索数据,但系统与旧对象一起使用。因此,我们应该在新旧实体之间编写一些转换器。但问题是,有时候从旧的实体形成新的实体,我们需要一些额外的信息。例如:
class OldEntity{
private int id;
// old entity contains only foreign key
private int otherEntityId;
...
}
class NewEntity{
private int id;
// new entity contains object that associated with foreign key
private OtherEntity otherEntity;
...
}
我们想为所有转换器添加一些通用接口,但是如果我们从旧实体转换为新实体,首先,我们应该通过其id检索“otherEntity”并将其提供给转换器。由于我们有很多具有不同结构的实体,转换器的方法应该接收不同数量的不同参数以形成新的实体。 问题是:对于这样的问题,有没有好的架构解决方案?
答案 0 :(得分:1)
它似乎是Adapter Pattern的工作。您的应用程序需要OldEntities,但现在由NewEntities管理,因此需要一个管理OldEntities和NewEntities之间转换的适配器。
然后,您需要为域模型中的每个实体构建一个适配器。他们应该是这样的:
class NewEntityAdapter extends OldEntity{
private NewEntity newEntity;
//This is an overriden method
public int getOtherEntityId(){
return newEntity.getOtherEntity().getId();
}
答案 1 :(得分:1)
你可以试试这个。
public interface IBaseEntity{
public int getId();
}
public class OldEntity implements IBaseEntity{
public int getId(){
return id;
}
}
public class NewEntity{
IBaseEntity entity;
public NewEntity(IBaseEntity entity){
this.entity=entity;
}
public int getId(){
return entity.getId();
}
}