ActionFormとDTO
ActionFormとDTOのコードについてです。
ActionFormはstrutsが由来なので、画面仕様寄りのプロパティの型(例えば日付がString型だったり)になると思います。
それに対してDTOはDB寄りの仕様になるので日付はDate型、LongならDBはNumberなどとDB寄りになるのが自然です。
で、ActionFormからDTOへ移送するのがActionクラスに書かれていたりしますが、リファクタリングしていくとActionFormクラスに書くべきです。(依存度が高いので)
ActionFormに書くと、以下みたいなコードになると思います。
public DTO makeDto(){
DTO dto = new DTO();
dto.setXX(this.xx);// xxはActionFormのプロパティ
dto.setXX(this.xx);
return dto;
}
ちなみにDTOのプロパティ(特に数値型)はプリミティブ型は使うべきではありません。
BigDecimalを使うべきです。
これはJava仕様上、プリミティブ型は0で初期化されるからです。
以下、DTOの例です。
package com.confrage;
public class SampleDto {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
ageをint型で定義しています。
これをsetterを使わずにいきなりgetするとnullではなく0が返ってきます。プリミティブ型にnullは指定できません。
package com.confrage;
public class Test3{
public static void main(String[] args) {
SampleDto dto = new SampleDto();
System.out.println(dto.getAge()); // プリミティブ型のため、nullではなく0で初期化される
}
}
結果は意図しない0となります。
0
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント