データベースの利用の例として、掲示板を作成してみましょう。
まずは、EntityとRepositoryを作成します。
Entity(JPA Entity)とは、データベースにおける表の個別の行に対応するオブジェクトです。JPAではPOJO(Plain Old Java Object、ごく普通のJavaオブジェクト)にアノテーションを加えるだけで作成できます。今回は単純に、名前と本文だけを保存するようにしてみます。DatabaseConfig.javaの44行目でEntityを示すパッケージを指定しているので、そこにCommentクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package net.teachingprogramming.myfirstspringapp.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * Comment */ @Entity public class Comment { @Id @GeneratedValue private Long id; private String name; private String text; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getText() { return text; } public void setText(String text) { this.text = text; } } |
- 10行目: @EntityアノテーションでEntityであることを示す。
- 12〜14行目: JPAでは主キーが必要となる。@Idアノテーションで主キーを示す。また@GeneratedValueで値を自動生成することを示す。
- 15行目: 名前を格納するフィールド。
- 16行目: 本文を格納するフィールド。
- 18〜32行目: nameとtextのgetter/setter。getter/setterはメニューから[Code]→[Generate]→[Getter and Setter]で自動生成できる。
このCommentクラスのインスタンスをデータベースに格納するには、Repositoryとよばれる、データベースへの操作を行うためのオブジェクトが必要です。RepositoryはSpring Data JPAに含まれるJpaRepositoryインターフェースを使うと簡単に作成することができます。JpaRepositoryインターフェースを継承することにより、データベースの操作に関するメソッドが自動的に生成されます。
DatabaseConfig.javaの24行目でRepositoryを示すパッケージを指定しているので、そこにCommentRepositoryインターフェースを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
package net.teachingprogramming.myfirstspringapp.repository; import net.teachingprogramming.myfirstspringapp.entity.Comment; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** * CommentRepository */ @Repository public interface CommentRepository extends JpaRepository<Comment, Long> { } |
- 10行目: @RepositoryアノテーションでRepositoryであることを示す。
- 11、12行目: JpaRepositoryを継承する。型変数はEntityの型とそのEntityの主キーの型を指定する。基本的な機能(メソッド)は自動的に生成されるので、いまのところメソッド等の記述は必要ない。