我有一个客户端 - 服务器应用程序。
客户端有一个类:Item.java
public class Item
public string name;
public string size;
并且服务器有一个类PersistableItem.java,它允许我使用JPA
存储它public class PersistableItem extends Item
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long Id;
并将其发送到执行addItemToServer方法的服务器:
public void addItem( Item item){
//create PersistableItem from item
DAO.save([paramerter = PersistableItem]);
}
在我的服务器方法中,我将项目转换为PersistableItem吗?我是否在PersistableItem中创建了一个带有Item的构造函数?
这里的设计是什么?
答案 0 :(得分:2)
正如您所建议的,您可以在SomePersistedItem中创建一个带有SomeItem的构造函数。在构造函数中,使用名称和大小调用super,因此可以正确填充SomePersistedItem。
public class SomePersistableItem extends SomeItem
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
public SomePersistableItem(SomeItem originalItem) {
super(originalItem.getName(), originalItem.getSize());
}
你只需添加它。
public void addItem( someItem item){
DAO.save(new PersistableItem(item));
}
假设你在SomeItem中有一个带有名称和大小的构造函数。否则,您使用任何方法来构建SomeItem(Factory,setters ...)
答案 1 :(得分:0)
我会让你的可持续项扩展一个接口
public interface Persistable {
boolean persist();
}
public class SomePersistableItem extends SomeItem implements Persistable {
}
public void addItem(Persistable p) {
p.persist();
}