ゲームばっかりやってないで、たまには学習めいたことも・・・・w
O/Rマッピングに手を出してみようと思い立ったので、Hibernateなんぞ試してみることに。
今日は準備段階ということで、DBまわりを。
IDEは、Eclipse3.2を使っています。
違う環境の人は、自分の環境に合わせて適宜読み替えるなりしてください。
OracleやSQLServer使うのもアレすぎるので、フリーな、MySQL・PostgreSQLあたりを候補にしようかと思っていたんだけど、これらも導入に手間がかかる。SQLiteみたいな組み込みDBで十分。jarファイルをプロジェクトに含めるだけなので。この記事を見て、実際に試してみる人の負担も少ないほうが良いでしょうし。
そんなわけで使用するDBは、
HSQLDB http://hsqldb.org/ に決定。
http://sourceforge.net/project/showfiles.php?group_id=23316
から、『hsqldb_1_8_0_7.zip』を選んでダウンロード。URLはコレ
ダウンロードしたzipファイル内 「hsqldb/lib/hsqldb.jar」のjarファイルが使用するファイル。
取り出したら、新規プロジェクト→Javaプロジェクト(HibernateTestと命名)でプロジェクト作成し、libディレクトリを作成してソコに配置。
プロジェクトのプロパティ→Javaのビルドパス→ライブラリー タブで「JARの追加」を行い、jarへの参照設定をしておく。
設定後、パッケージ・エクスプローラーが↓こんな感じに
サンプルソースは一番最後に。
ポイントだけかいつまんで、
Class.forName("org.hsqldb.jdbcDriver");
conn = DriverManager.getConnection("jdbc:hsqldb:file:db/testdb;shutdown=true", "sa", "");
st = conn.createStatement();
DBURLの部分。
jdbc:hsqldb:file:[DBファイル名]
というのが基本形。
;shutdown=true
を指定しないとデータの永続化がされないらしい。
ちなみに、
jdbc:hsqldb:mem:[DB名]
とすると、インメモリモードで起動します。JVMが終了するとデータは失われます。
参考:http://web.paulownia.jp/java/memo/jdbc.html
他の部分はよくあるJDBCによるDB操作だと思うので説明は特に不要かと。
今回はここまで。
次回は、HSQLDBを相手に、Hibernateの初歩に突っ込んでみます。
package com.uhawwwokkwwwww.sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* HSQLDB 動作サンプル
* @author tak
*
*/
public class HsqldbSample {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
HsqldbSample mainObj = new HsqldbSample();
mainObj.execute();
}
/**
* コンストラクタ
*/
private HsqldbSample() {
}
/**
* SQLをいろいろ実行してみるメソッド
*
*/
public void execute() throws Exception {
Connection conn = null;
Statement st = null;
PreparedStatement prest = null;
ResultSet rs = null;
try {
Class.forName("org.hsqldb.jdbcDriver");
conn = DriverManager.getConnection("jdbc:hsqldb:file:db/testdb;shutdown=true", "sa", "");
st = conn.createStatement();
// とりあえずあるかもしれないテーブルを削除
try {
st.executeUpdate("drop table tbl_okkwwwww");
} catch (SQLException e) {
e.printStackTrace();
}
// CREATE TABLE 実行
final String CREATE_SQL
= "create table tbl_okkwwwww(id varchar(10), name varchar(255))";
st.execute(CREATE_SQL);
st.close();
st = null;
// INSERTを何回か実行してみる
final String INSERT_SQL
= "insert into tbl_okkwwwww(id,name)values(?,?)";
prest = conn.prepareStatement(INSERT_SQL);
for (int i = 0; i < 100; i++) {
prest.clearParameters();
prest.setString(1, String.valueOf(i));
prest.setString(2, "なまえ" + String.valueOf(i));
prest.execute();
}
prest.close();
prest = null;
// SELECTしてみる
final String SELECT_SQL
= "select id, name from tbl_okkwwwww order by id asc";
prest = conn.prepareStatement(SELECT_SQL);
// 実行・表示
rs = prest.executeQuery();
while(rs.next()) {
System.out.print("id=" + rs.getString("id"));
System.out.println("\tname=" + rs.getString("name"));
}
} finally {
if (st != null) st.close();
if (rs != null) rs.close();
if (prest != null) prest.close();
if (conn != null) conn.close();
}
}
}

最近のコメント