[JPA] DB Column, Class Field Mapping(@Column, @Enumerated, @Temporal, @Lob, @Transient, @Access)
🙆♂️ import 🙇♂️
Java ORM標準JPAプログラミング
以下、これらのAnnotationの説明です.
@Column
@Columnの説明はこの記事で確認できます。
@Enumerated
Javaをマッピングするための
使用する属性は以下の
値の説明EnumType.ORDINALは、列挙された順序値の数値をDB EnumTypeに保存します.STRINGはそのenumの名前をDBに保存します
デフォルト値は
ストレージのenum順序が変更されると、大きな混乱を引き起こす可能性があります.
ほぼ
使用例を次に示します.
日付タイプ(
使用する属性は
値はTemporalTypeを示します.DATE日付、DB
使用例を次に示します.
DB
マッピングField Typeは、
残りの形態は
次に、 CLOB : BLOB : 次に、JavaでフィールドタイプでDBMSにマッピングされたColumnタイプの例を示します.
データベースに保存したり、クエリーしたりしません.
Javaオブジェクトに値を保持する場合にのみ使用します.
方法は AccessType.FIELD:Fieldがprivateに設定されていても、Fieldに直接アクセスします. AccessType.PROPERTY:訪問者(Getter)でアクセスします.
@Id位置=Field
@Transientの使用
Java ORM標準JPAプログラミング
JPA
から@Entity
は、Table
のクラスのField
値をマッピングする.Table
のColumn
マッピングのためのAnnotation.@Column
、@Enumerated
、@Temporal
、@Lob
、@Transient
があります.以下、これらのAnnotationの説明です.
@Column
@Access
は、オブジェクトフィールドをTable Columnにマッピングする.@Columnの説明はこの記事で確認できます。
@Enumerated
Javaをマッピングするための
@Column
タイプ.使用する属性は以下の
enum
のみであり、value
として指定された値は以下のように説明される.値の説明EnumType.ORDINALは、列挙された順序値の数値をDB EnumTypeに保存します.STRINGはそのenumの名前をDBに保存します
デフォルト値は
value
です.EnumType.ORDINAL
の利点は、記憶容量が小さいことである.ストレージのenum順序が変更されると、大きな混乱を引き起こす可能性があります.
ほぼ
EnumType.ORDINAL
に指定する必要があります.使用例を次に示します.
@Table(name = "TB_LICENSE")
@Entity
public class License {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "L_ID")
private long id;
@Enumerated(value = EnumType.STRING)
@Column(name = "type")
private LicenseType type;
}
@Temporal日付タイプ(
EnumType.STRING
、java.util.Date
)マッピングに使用します.使用する属性は
java.util.Calendar
であり、指定値については以下のように説明する.値はTemporalTypeを示します.DATE日付、DB
value
タイプおよびマッピング(2021-07-18)TemporalType.TIME時間、DB date
型およびマッピング(19:23:15)複合型.TIMESTAMP日時、DB time
型マッピング(2021-07-18 19:23:15)使用例を次に示します.
@Getter
@MappedSuperclass
public class CommonEntity {
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATED_DATE")
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MODIFIED_DATE")
private Date modifiedDate;
}
@LobDB
timestamp
、CLOB
タイプのマッピングに使用します.BLOB
Annotationには指定できる属性はありません.マッピングField Typeは、
@Lob
に文字でマッピングされる.残りの形態は
CLOB
にマッピングされた.次に、
BLOB
、CLOB
、マッピングされたJava Field Typeを示します.BLOB
, String
, char[]
java.sql.CLOB
, byte[]
@Lob
private String clobField;
@Lob
private byte[] blobField;
// DB Type
// MySQL
clobField longtext
, blobField longblob
// Oracle
clobField clob
, blobField blob
// PostgreSQL
clobField text
, blobField old
@Transientjava.sql.BLOB
として指定されたシーンはマッピングできません.データベースに保存したり、クエリーしたりしません.
Javaオブジェクトに値を保持する場合にのみ使用します.
@Transient
private List<T> tempList;
@Access@Transient
Annotationは、@Access
において、Entity Class
がこのJPA
データにアクセスする方法を指定する.方法は
Entity
とAccessType.FIELD
の2種類がある.@Access(AccessType.FIELD)
@Entity
public class User {
@Id
private long id;
private String name;
public long getId() {
return id;
}
public String getName() {
return name;
}
}
AccessType.PROPERTY
が設定されていない場合、@Access
の位置設定方法に基づいている.@Id位置=Field
@Id
設置のように直接現場を訪問します.@Entity
public class User {
@Id
private long id;
private String name;
public long getId() {
return id;
}
public String getName() {
return name;
}
}
@Id位置=プロパティ@Acess(AccessType.FIELD)
の設定のように、訪問者Getterでアクセスします.@Entity
public class User {
private long id;
private String name;
@Id
public long getId() {
return id;
}
public String getName() {
return name;
}
}
Field、Propertyメソッドの混在@Acess(AccessType.PROPERTY)
をフィールドに配置し、基本データメソッドを@Id
に設定します.Field
で特定のレルムにアクセスすることで、特定のレルムのみがアクセス者Getterでアクセスできます.@Entity
public class User {
@Id
private long id;
@Transient
private String name;
private String loginId;
public long getId() {
return id;
}
@Access(AccessType.PROPERTY)
public String getLoginId() {
return name + "gillog";
}
}
上記の使用例は、他の領域のAccessTypeが@Access(AccessType.PROPERTY)
にあることを示している.FIELDアクセスで、@Id
にはgetter
の@Access(AccessType.PROPERTY)
万AccessTypeが設けられている.PROPERTYでアクセスします.loginId
name
には、データベースおよびストレージおよびクエリーはありません.@Transientの使用
Field
Columnは、loginId
フィールド値にname
を加えた値を格納する.Reference
この問題について([JPA] DB Column, Class Field Mapping(@Column, @Enumerated, @Temporal, @Lob, @Transient, @Access)), 我々は、より多くの情報をここで見つけました https://velog.io/@gillog/JPA-DB-Column-Class-Field-MappingColumn-Enumerated-Temporal-Lob-Transient-Accessテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol