JPA では Read-Only の Entity は定義できない

JPA Read-Only マッピング

JPA では今のところ読み込み専用で Entity を定義することはできない。

マッピングの定義で読み込み専用に定義することはできる。

@Entity
public class Employee {
    @Id
    @Column(insertable=false)
    private int id;
    
    @Column(insertable=false, updatable=false)
    private String name;
    
    @Column(insertable=false, updatable=false)
    private long salary;
    
    @ManyToOne
    @JoinColumn(name="DEPT_ID", insertable=false, updatable=false)
    private Department department;
    
    // ・・・
}

このように定義することで、Employee インスタンスのフィールドに対する追加と更新の操作はデータベースに対して無効化される。

なお、id に対しては一意識別子であるため更新はあり得ないため updatable については気にしなくてよい。

以上!