javaのormのebeanをただのjavaプロジェクトで使う時についてのメモ書き。
環境。osはwindows7。dbはmysql

ebeanのページ からsourceforgeページへとんで、ebean-2.7.7.zipをダウンロード。とりあえず、その中のebean-2.7.7.jar、javax.persistence.jar、jta.jarを使う。

パスが通っている場所に下のebean,propertiesを配置。javaプロジェクトならプロジェクトの直下でおっけ。

ebean.ddl.generate=true
ebean.ddl.run=false

ebean.datasource.factory=default
#datasource.default=ordh2
datasource.default=mysql

#datasource.ordh2.username=sa
#datasource.ordh2.password=
#datasource.ordh2.databaseUrl=jdbc:h2:tcp://localhost:9092/test
#datasource.ordh2.databaseDriver=org.h2.Driver

datasource.mysql.username=hogeuser
datasource.mysql.password=hogepass
datasource.mysql.databaseUrl=jdbc:mysql://localhost:3306/hogedb
datasource.mysql.databaseDriver=com.mysql.jdbc.Driver
#datasource.mysql.minConnections=1
#datasource.mysql.maxConnections=25
#datasource.mysql.heartbeatsql=select 1
#datasource.mysql.isolationlevel=read_committed

ちなみに、ebean.ddl.runをtrueにしておくと、いきなりmodelsクラスを読み込んで対応しているテーブルをdropしてcreateしようとする。けど、createするところでava.lang.ExceptionInInitializerErrorが発生してテーブルが作れない。下はほかの例外ログも・・・鬱陶しい。とりあえずDDLでテーブル用意しといてこの機能は切っておく。
Caused by: javax.persistence.PersistenceException: Error・・・
error[Incorrect table definition; there can be only one auto column and it must be defined as a key]

これで準備完了。うまく動いているかどうかは下のソース。
String sql = "select count(*) as count from hoge_table";
SqlRow row = Ebean.createSqlQuery(sql).findUnique();

Integer i = row.getInteger("count");

System.out.println("count : " + i);

あと、update系のクエリについて。frameworkのplayの場合「EbeanServer server = Ebean.getServer("default");」でEbeanServerを取得してうんちゃらかんちゃらなんだけど、普通のjavaプロジェクトの場合、「java.lang.RuntimeException: DataSource user is null?」が発生してできなかった。たぶんできるとは思うんだけど、とりあえず下の方法で回避。

SqlUpdate create = Ebean.createSqlUpdate("update *** set hoge = :hoge where …")
.setParameter("hoge","hogeee")
.setParameter("hoge2","hogeee2");
Ebean.execute(create);


つかこっちが正攻法?ormはコネクションの管理の部分とかを自動でやってくれるんだけど、そのあたりが任せきりで隠蔽されていて不安になる。