Springで Javax.persistence はどのように定義するのか
Springでjavax.persistenceを使ってエンティティクラスを定義する際は、次のようなアノテーションを使用して、エンティティクラスとテーブルのマッピング関係を定義する必要があります。
- @Entity: JavaクラスをJPAエンティティクラスとしてマークします。
- テーブル:指定されたエンティティクラスとデータベーステーブルのマッピングの関係は、テーブル名、スキーマなどの属性を指定できます。
- @Id:主キーフィールドをマークするエンティティクラス
- GeneratedValue: 主キーフィールドの値をデータベースに自動生成させ、生成方式を指定することができます。
- @Column属性で、エンティティクラスのプロパティとデータベーステーブルのカラムのマッピング関係を指定できます。カラム名、長さ、NULL可否などのプロパティを指定できます。
- エンティティクラス同士の関係を定義するアノテーション。1対1、1対多、多対1、多対多といった関係を表すことができる。
次に、javax.persistenceを利用してエンティティクラスを定義する例を示します。
import javax.persistence.*;
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", length = 50, nullable = false)
private String username;
@Column(name = "password", length = 50, nullable = false)
private String password;
// Getter和Setter方法省略
}
上記の例では、@EntityアノテーションによってUserクラスはJPAエンティティクラスとして識別され、@Tableアノテーションによってデータベースのテーブル”user”とのマッピングが指定されています。@IdアノテーションはIDフィールドをプライマリキーとして識別し、@GeneratedValueアノテーションでプライマリキーの生成戦略を指定しています。@Columnアノテーションはusernameとpasswordフィールドのデータベースのテーブルとのマッピングを指定しています。