2011-07-24 18 views
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とエンティティが関わっている他のすべての同様のケースでこの反射コードを再利用できると思っています。

効率的なやり方を教えてください。

ありがとうございます。

+2

答えはありませんが、手元の問題に関連しています。なぜDTOとエンティティを同時に使用していますか? DTOとして機能するために分離されたエンティティを使用することができます。そのため、エンティティに既に値が設定されているため、エンティティに値を設定するという問題を回避できます。 –

+0

こんにちはVineet、いいアイデアありがとう。理由は私はDTOとエンティティの両方を使用したい。 1 - (bizロジックとエンティティを管理する)loose coupling b/wサービス層とサーブレットコントローラを持つ。 2 - 私が理解しているのは、エンティティを永続させる初めての場合、分離されたエンティティは使用できないということです。 3 - エンティティを取得する際に、すべての値がロードされている可能性があります(たとえば、インスタンス変数20個、一部を修正するために遅延ロードを使用できることなど)。私はDTOを使用する場合、完全に読み込まれたエンティティを送信する代わりに、軽量バージョンのDTOを使用できます(例:わずか5つの値) –

+0

正直なところ、2番目の問題はありません。コミット。したがって、エンティティを永続化している場合は、JPAエンティティのライフサイクルが進む新しい/一時的なインスタンスです。ポイント1と3が関係している限り、DTOはエンティティのレプリカではない場合にのみ役立ちます(投稿コードではそうではありません)。 20フィールドのDTOにエンティティの5/20フィールドを送信する場合は、単にフィールドを複製するだけで意味がありません。さらに悪いことに、データモデルにフィールドを追加するには、1つではなく2つのクラスを変更する必要があります。 –

答えて