2

私たちが知っているように、Java の日付/時刻型は変更可能です。したがって、副作用を避けたい場合は、それらをカプセル化する必要があります。

JPA 2.0 でこれらのデータ型を使用し、同時にカプセル化の目標を達成できる方法を探しています。

私の実践では、次のコードのようなパターンをよく使用します。

// imports are omitted 

@Entity
@Access(AccessType.PROPERTY)
public class MyEntity {
    private Integer id;

    @Access(AccessType.FIELD)
    private Calendar createdAt;

    public MyEntity() {
        createdAt = Calendar.getInstance();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Transient
    public Date getCreatedAt() {
        return createdAt.getTime();
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt.setTime(createdAt);
    }

}

それを行うためのより良い方法はありますか?

前もって感謝します。良い1日を。

4

1 に答える 1

0

変更可能な日付は、私たち全員が受け入れなければならない設計上の癖です。そして、Date は不変であり、決して操作しないふりをすることで、それと一緒に暮らすことを学びました (また、Sun はそこにいくつかの非推奨を平手打ちすることでそれを容易にしました)。

自分自身や信頼できる同僚からコードを保護している場合、防御的なコードを書くことは役に立ちません。わざと間違ったことをするつもりの人がいないことを願っています!

于 2012-11-13T13:12:32.773 に答える