たなかのJava日記

どんなことをやったか(学んだか)、どこで詰まったか(わからなかったか)、どこで工夫したかの記録です。Dayで始まる記事は1日遅れで更新されることが多いです。

Day46

■時間

0.5時間

 

■行ったこと

1.データベース周りの実装

2.DIコンテナについて

 

■出来たこと

これまで作成してきたメソッドをデータベースを使用するように修正するなど行いました。

 

■出来なかったこと

機能追加はできていますが、何となくわかる6割ほどの理解です。

明日、もう一度時間を使って復習します。

Day43

■時間

2.0時間

 

■行ったこと

1.DBの簡単な概要の理解

2.SQLでH2データベースの操作

3.Spring BootでH2データベースを導入するための設定

4.基本的なSQL文でテーブルを操作

 

■出来たこと

基本的に行ったことと同じです。SQL文はSELECT、INSERT、UPDATE、DELEATのみです。

JDBCがimportできなった件についても、別途まとめることを行いました。

 

■出来なかったこと

DB接続が加わりプログラムのやり取りが複雑で理解できていません。

何となくではなくSpring Bootのアノテーションのようにじっくり時間をかけていきます。

【Spring Boot】Spring JDBCなどがimportできない件

【困りごと】

データベース操作用のクラスを作成する際に、下記クラス(JDBC関連)がインポートできない。

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

【仮説①】
タイピングミス

【仮説①結果】
タイピングをミスしている部分もありましたが、修正してもインポートできませんでした。
そもそも、IDEで補完できなかった時点でおかしいことに気付くべきでした。


【仮説②】
IDEの補完で候補が表示されていないとなると、Mavenのpom.xmlへの依存関係だと予想。
これは、Spring Boot アプリケーションでSpring JDBCを使うにはpom.xmlに依存関係を設定する必要があるためです。

【仮説②結果】
予想通りでした。原因はscopeの指定が間違っていたためです。

//間違いの箇所
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
	<scope>runtime</scope>  
</dependency>
//正しい
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>


scopeには、「そのライブラリがどのようなタイミングでクラスパスに追加されるか」を指定します。


ここでruntimeを指定していたため、上手くいかなかったようです。
runtimeはコンパイル時にはクラスパスに入らず、実行時、テスト実行時にライブラリが追加されます。
そのため、コードを書いているときに追加できずにIDEに怒られていたという訳です。

ちなみに、無指定(省略時)だとcompileになります。
compileはmainやtestのソースコードコンパイル時や実行時、テスト実行時に追加されます。

参考サイト:
Mavenのscopeに何を書いたら良いのかわからなかったので調べてみた - Qiita

Day42

■時間

0.5時間

 

■行ったこと

1.これまで行った範囲(Spring Boot)の復習

 

■出来たこと

これまで学習してきたSpring Bootの復習に努めました。

 

■出来なかったこと

DBの学習をスタートする予定でしたが体調が優れず予定を変更しました。

 

Day41

■時間

1.0時間

 

■行ったこと

1Spring BootでのCSSについて

 

■出来たこと

Spring BootでのCSSの適用方法などの仕組みを理解しました。

 

■出来なかったこと

DBの学習をスタートする予定でしたができませんでした。

明日から取り組みます。