0
在此先感謝您的時間和幫助。看看其他帖子,但只有一些信息可用,所以如果有人給出了完整的圖片,非常感謝。使用java反射設置值
我:
public enum AddressType {
HOME,WORK,BILLING,SHIPPING,OTHER
}
public class AddressDto implements java.io.Serializable {
private String street;
private String city;
private String stateCode;
private int zipcode;
private String country;
private AddressType addressType;
public AddressDto() {
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStateCode() {
return stateCode;
}
public void setStateCode(String stateCode) {
this.stateCode = stateCode;
}
public int getZipcode() {
return zipcode;
}
public void setZipcode(int zipcode) {
this.zipcode = zipcode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public AddressType getAddressType() {
return addressType;
}
public void setAddressType(AddressType addressType) {
this.addressType = addressType;
}
}
@Entity
@Table(name = "ADDRESS")
public class Address implements java.io.Serializable {
private String street;
private String city;
private String stateCode;
private int zipcode;
private String country;
private AddressType addressType;
public Address() {
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStateCode() {
return stateCode;
}
public void setStateCode(String stateCode) {
this.stateCode = stateCode;
}
public int getZipcode() {
return zipcode;
}
public void setZipcode(int zipcode) {
this.zipcode = zipcode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public AddressType getAddressType() {
return addressType;
}
public void setAddressType(AddressType addressType) {
this.addressType = addressType;
}
}
使用反射,我試圖擺脫DTO值和設定值的實體。爲何反思?考慮到我可以重新使用這個反射代碼來處理涉及DTO和實體的所有其他類似情況。
請大家指教一下這樣做的有效方法。
謝謝。
不是答案,而是與您的問題相關 - 爲什麼您同時使用DTO和實體?您可以使用分離的實體充當DTO,因此可避免將值設置爲實體的問題,因爲它已在實體中可用。 –
嗨維尼,謝謝你的好主意。理由我想使用DTO和實體。 1 - 具有鬆耦合黑白服務層(管理商務邏輯和實體)和servlet控制器。 2 - 我的理解是,我們第一次堅持實體時,不能使用獨立實體。 3 - 當獲取一個實體時,它可能會加載所有的值(例如:20個實例變量,要知道我們可以使用延遲加載來修復其中的一些實例變量)。如果我使用DTO,而不是發送完全加載的實體,我可以使用DTO的輕量級版本(例如:只有5個值) –
老實說,點2是沒有意義的,因爲分離的實體只有在實體承諾。所以,如果你堅持一個實體,它是一個新的/暫時的實例,依靠JPA實體生命週期。就第1點和第3點而言,DTO只有在它們不是實體的複製品(在您的發佈代碼中不是這種情況)時才提供幫助。如果您要發送具有20個字段的DTO中的實體的5/20個字段,因爲您只是複製字段,所以沒有意義。更糟糕的是,向數據模型添加一個字段將需要兩個類而不是一個類的更改。 –