Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

Butterfly_Persistence/First

最初の例

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", ""
    );
  }
}