こんにちは。コードキャンプ株式会社が運営するプログラミングスクール「CodeCamp(コードキャンプ)」でプログラミングを学習している高橋です。
私が受けているコースは「Javaマスターコース」。Javaは、数あるプログラミング言語の中でも、日本国内において、特に求人案件数が多い言語です。CodeCamp(コードキャンプ)の「Javaマスターコース」では、Javaエンジニアには必須の「オブジェクト指向」から、「JSP/サーブレット」「データベース連携」まで、Javaを用いてWebアプリケーションを開発するために必要な知識を基礎から実践まで学びます。
受講回数は2ヶ月(20回)、4ヶ月(40回)、6ヶ月(60回)の3つから選べます(今回は2ヶ月間受講します)。
それでは、2018年11月17日に受講した、Codecamp(コードキャンプ)「Javaマスターコース」第*回目の学習内容をレビューします。
Javaマスターコース9日目|CodeCamp(コードキャンプ)
本日の講師:勝田郁郎先生
普段はSOHOにてWEB系、ソーシャルゲーム関連の開発を行っております。
実務に基づいた使えるスキルを丁寧に解りやすくお伝えいたします。
現在学んでいる箇所では無い箇所の質問も、是非して下さい。
どんな質問を何度して頂いても構いません。
理解し、使いこなせるようになるまで、お手伝いさせて頂きます。
いっしょに頑張りましょう。
第9回目のレッスンで学んだことは以下の内容です。
CodeCamp(コードキャンプ)Javaマスターコース第9回目のレッスン内容
-
環境の整備
-
SQLの書き方
1.環境の整備
今回は最終課題でも必要になるデータベースについて勉強しようと思うのですが、教科書で使われているh2がうまく導入できませんでした。まず初歩的な質問なのですが、クラスパスを追加するというのはどういうものなんでしょうか。
なので、h2と言えばこれ、と教えるみたいな作業のことをクラスパスを通すと言います。
サイトをみながら見よう見まねでやっていましたが、何の為にやっているのかわからなかったので勉強になりました。
さて、今回教科書のコードを入れてみましたが動作しません。一体何故なのでしょうか。
29行目のコネクターがサンプルになっていますね。
無事にデータベースに接続させることができてよかったです。
データベース、っていうのは言ってみれば一つの言語なんですね。これからは「データベース」と「Java」を組み合わせて使うという感じになります。
ところがそれと比べると、データベースはすごく簡単で、構文が四つしかないんですね。
それ以外の更新系は本当に単純で、例えばINSERTなどは一種類しか書き方がありません。UPDATEやDELETEも「どれを」という指定が入るだけで書き方はそう変わりません。
それでは順番に教科書をみてみましょう。
JDBC(Java Database Connectivity)というものがあります。これがどんなものかっていうと、「Java用の、データベースに接続してくれる便利なやつ」です。
データベースっていうのはJavaからしたら外部のプログラムですね。これを正直に使おうと思うと、すごいめんどくさい手順がいっぱい必要になってくるんですね。それを簡単にしてくれているのがJDBCです。これはh2以外のMySQLやOracleなどに接続する際にも利用することができます。
確かに、環境が変わってもこのドライバを変えるだけでいいのは便利ですね。
18行目の”org.h2.Driver”の部分を変えることで、
他のデータベースを利用することができる
教科書では導入が簡単ということでh2が紹介されていますが、現場で運用しているというのはあまり聞いたことがありません。
それでは将来MySQLを使うことになるかなとも思うので、近々触ってみたいと思います!
2.SQLの書き方
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; /** * * データの作成(INSERT)処理を行う * */ public class Insert { public static void main(String[] args) { // JDBCドライバのロード try { Class.forName("org.h2.Driver"); } catch (ClassNotFoundException e) { e.printStac(勝田先生)race(); } try ( // DBMSとの接続 // JDBC URLは、環境に合わせて変更してください。 // ここでは「c:\Users\CodeCamp\test」にあるデータベースに接続しています。 Connection connection = DriverManager.getConnection("jdbc:h2:c:\\Users\\CodeCamp\\test"); // PreparedStatementを使ってSQLの準備 PreparedStatement pstmt = connection.prepareStatement("INSERT INTO EMP VALUES(?, ?)");) { // 10 件のデータを作成します for (int i = 0; i < 10; i++) { // 準備したSQLにパラメータをセット int id = i + 1; // ID列に1から始まる連番をセット pstmt.setInt(1, id); pstmt.setString(2, "ユーザー" + id); // NAME列にユーザー1, ユーザー2, …をセット // executeUpdate()でSQLを実行 int cnt = pstmt.executeUpdate(); System.out.printf("データを%d件INSERTしました。\n", cnt); } } catch (SQLException e) { e.printStac(勝田先生)race(); } } } |
1 |
”PreparedStatement pstmt =connection.prepareStatement("INSERT INTO EMP VALUES(?, ?)");) ” |
と書いてある部分がありますね。これはこういう書き方なのだということで覚えてしまいましょう。
”?”と書いてある部分がありますね。ここは「あとで埋め込むからよろしく」っていう状態です。
どうしてこういう書き方をするのかというと、最終的にはセキュリティの問題が出てきます。我々エンジニアが気にしなければならないことの一つに「SQLインジェクション」というものがあります。
プログラムの中に不正なデータを入れるということですか?
ユーザーからの受付をする際にユーザーがそもそもSQLを入力してくることで、思わぬSQLが実行されてしまうという悪いことを考えるやつがいます。このPrepared Statementを用いることでサニタイズ(消毒)した上で実行してくれます。これがこういう形で書く一番の理由です。
さて、この”?の中にはどのように値を入れるのでしょうか。
1 2 |
「pstmt.setInt(1, id); pstmt.setString(2, "ユーザー" + id);」 |
という部分がありますね。第一引数でクエスチョンの何個目に入るかを指定します。
このようにしてセットした値を「int cnt = pstmt.executeUpdate();」といった形でデータベースの更新を行います。
その後、データベースが何件更新されたのかを返す、っていうのがデータベースの一般的な流れになります。
ツイッターなんかで例えますと、”?”の部分に「誰が」「いつ」「何を」呟いたのかという情報を入れることで、INSERT文でツイッターのようなデータベースを作ることができますね。
間違ったツイートを削除したいからDELETE、編集したいからUPDATE、を使うことでそれぞれの機能を追加することもできそうですね。検索したい時にはSELECTを利用すればいいでしょう。
データベースの利用のイメージを掴むことができました!
データベースのテーブル名とか、”?”の数が変わるだけなので、エンジニアがオリジナリティを出しにくいところですね(笑)
Javaマスターコース9日目の感想|CodeCamp(コードキャンプ)
今回は新しいプログラムを使うため環境を整えるのに時間がかかってしまいました。独学だとこういった面で挫折しやすいかなと思うので、先生を頼ることができて良かったです(笑)
また、今回のデータベースの話でもあったように、新しい技術を学ぶ度にどういった形で利用するのかを紹介していただけるのでイメージが湧きやすく実際に必要になった時にどの機能が必要なのか、連想しやすいと思いました!今後のプログラミングに活かしていけたらと思っています!
CodeCamp(コードキャンプ)の「Javaマスターコース」とは
CodeCamp(コードキャンプ)の「Javaマスターコース」は、Javaエンジニアになるために必要な知識を基礎から実践まで学べるコースです。
>>無料体験レッスン受講で10,000円OFFクーポンプレゼントキャンペーン実施中
CodeCamp(コードキャンプ)「Javaマスターコース」の料金
2ヶ月 |
|
4ヶ月 |
|
6ヶ月 |
|
現在は全く別の業界で働いていますが、今後はシステムエンジニアとしてのキャリアに進もうと思っています。その準備として、JavaマスターOLコースでJava開発の基礎を学んでいきます!