とりあえず動かすだけなら簡単。
なお、本に書いてあったs2jdbc-gen-build.xmlでサンプル動かすやつはやってないです。
以下やってみた内容。
まずは以下のようなPersonというEntityを作る(getter,setterは略)。@Entityアノテーションは必須。
あとは実際にPersonというテーブルに実際に下のクラスの変数と同名のカラムを持ったテーブルも作っておいてください。
import javax.persistence.Entity;
@Entity
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/** 名前 */
public String name;
/** 所属*/
public String belonging;
/** 特徴*/
public String feature;
}
呼ぶ側。実行するとテーブルにはいっている情報が全部取れる。
あとjdbcManager.insert(p).execute();みたいに(pはPersonクラスのオブジェクト)やるとinsertも出来る。今回の投稿では省いてますが。
package org.seasar2.s2jdbc.example.service;
import java.util.Iterator;
import java.util.List;
import org.seasar.extension.jdbc.JdbcManager;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import org.seasar2.s2jdbc.example.entity.Person;
public class HelloS2jdbc {
/**
* @param args
*/
public static void main(String[] args) {
SingletonS2ContainerFactory.init();
JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);
List<Person> results = jdbcManager.from(Person.class).getResultList();
for (Iterator<Person> iterator = results.iterator(); iterator.hasNext();) {
Person person = (Person) iterator.next();
System.out.print(person.getName());
System.out.print(person.getBelonging());
System.out.println(person.getFeature());
}
SingletonS2ContainerFactory.destroy();
}
}
あと私は今回postgresqlを使っているので
s2jdbc.diconのdialectはpostgreDialectに切り替えるのと
jdbc.diconのxaDataSourceもPostgreSQLのものに切り替えました。どちらもDoltengでデフォルトで作るとH2側が有効化されていて他のDBリソースのものはコメントアウトされています。
まあ軽く動かす分には簡単だけどDB周りはSQL書きたいのであんまりこのHibernateみたいな書き方は個人的に好きじゃないです。
ということで本では9章のSQL定義ファイルにSQL書くやり方だと
results = jdbcManager.selectBySqlFile
(Person.class, "org/seasar2/s2jdbc/example/service/Person_Search.sql", sCon).getResultList();
for (Iterator<Person> iterator = results.iterator(); iterator.hasNext();) {
Person person = (Person) iterator.next();
System.out.print(person.getName());
System.out.print(person.getBelonging());
System.out.println(person.getFeature());
}
で、resoucesフォルダの下にorg/seasar2/s2jdbc/example/service/Person_Search.sqlってのを作って
SELECT name, belonging, feature FROM person WHERE feature = /*feature*/
と書いておけばいける。埋め込み文字も行けるしこれならmyBatisみたいに使えて満足。