SpringBoot DBの利用
pom.xmlに以下のコードを追加。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.2</version>
</dependency>
エンティティクラスの作成(City.java)
@がつくのはアノテーションと呼ばれる。
PlanInfo.javaに@Entityを加える。
@EntityはDBのデータをクラスとして扱えるようにする。
@Idは、プライマリキーを意味する。
@GeneratedValueは、値を自動的に生成してくれる。
@Columnは、このメンバ変数はテーブルのこの列に対応していますよ、という意味(name=で実際の列名を指定する)。
nullable=falseをつけると NOT NULLの意味になる。
DBの情報に「Null」がNoになっていたら、false。
Yesだったら、true を指定する。
ex)@Column(name="START_DATE")
implementsされているSerializableとは、保存可能なオブジェクト。
private static final long serialVersionUID = 1L;
は、「シリアルバージョンUID」というもの。
シリアライズ = オブジェクトを保存すること。
デシリアライズ = 再読み込みする機能。
デシリアライズする際に、変更されている可能性がある(保存→再読み込み の間に変更があるかも)。
そこで、保存する際に、UIDを保存→再読み込みされた時のUIDを取得→両者比較→異なった時に例外を投げる
エンティティクラスを作成するには、
@Entity
@Id
public ~() {}
の三つがセットになる。
JpaRepositoryインターフェイスの作成(CityRepository.java)
extends JpaRepository<扱うエンティティクラス, プライマリーキーの型>
このインターフェイスの中には基本的に何も入れない。
JpaRepositoryは、データベースにアクセスするために必要らしい。
Controllerをいじる(SampleController.java)
@Autowired private PlanService planService;
@Autowiredは、自動で初期化されるフィールド。
コンストラクタやフィールドの右辺に、フィールドの初期化処理を書かなくてよくなる?
@ResponseBodyとは、戻り値で直接レスポンスのコンテンツを返すことができる。
つまり、これがついてるメソッドにアクセスしたら、レスポンスが返ってくるということ。
ちなみに、
@RestController = @Controller + @ResponseBody
と、いうことらしい。
@Transactionalは、宣言的にトランザクション制御を記述できる。
(readOnly = true)
とは読み取り専用のトランザクション。
トランザクション処理とは、
複数の処理を意味的に一つの処理として扱うこと。