最初の例
import java.sql.*; import com.jenkov.db.*; import com.jenkov.db.impl.init.*; import com.jenkov.db.itf.*; import com.jenkov.db.itf.mapping.*; /** * 以下はHSQLDBを使った例。データベースを作成し、レコードを挿入し、 * そのレコードを検索する。 * * Connectionの管理はORMに任せるのではなく、こちらで行う。したがって、特に * setAutoCommit、commit、rollbackはこちら側で呼び出さなければならない。 * ORM側は与えられたConnectionを使って、データベースへの操作を行う。 * * Connectionの管理をORM側に任せてしまうと以下のようなデメリットがある。 * 1.コネクションプーリングができない。 * 2.Connection and Transaction Scopingの動作がよくわからない。 */ public class TestZero { /** これはアプリ内にただ一つあればよい */ public static PersistenceManager persistenceManager = new PersistenceManager(); public static void main(String[]args) throws Exception { // DBドライバをロード Class.forName("org.hsqldb.jdbcDriver"); // データベースを作成 { DatabaseInitializer databaseInitializer = persistenceManager.getConfiguration().getDatabaseInitializer(); databaseInitializer.add(1, "create table user(id identity, name char(80), primary key(id))"); Connection conn = getConnection(); // setAutoCommit(true)の状態 persistenceManager.initializeDatabase(conn); conn.close(); } // レコードを挿入 { Connection conn = getConnection(); conn.setAutoCommit(false); IDaos daos = persistenceManager.createDaos(conn); User user = new User(); user.name = "鈴木"; daos.getObjectDao().insert(user); user = new User(); user.name = "佐藤"; daos.getObjectDao().insert(user); conn.commit(); conn.close(); } // レコードを検索 { Connection conn = getConnection(); IDaos daos = persistenceManager.createDaos(conn); User user = (User)daos.getObjectDao().read(User.class, "select * from user where id=0"); conn.close(); System.out.println(user.toString()); } } /** Userの定義 */ @AClassMapping(tableName="user") public static class User { int id; String name; /** idは自動挿入される */ @AGetterMapping(databaseGenerated = true) public int getId() { return id; } public void setId(int value) { id = value; } public String getName() { return name; } public void setName(String value) { name = value; } @Override public String toString() { return "id:" + id + ", name:" + name; } } /** コネクションの取得 */ private static Connection getConnection() throws SQLException { return DriverManager.getConnection( "jdbc:hsqldb:file:testdb", "sa", "" ); } }