現時点で最も簡単で比較的後発のO/Rマッピングツール。
https://activeobjects.dev.java.net/
javaの「アノテーション」を理解できれば、XML設定ファイルやGUI開発ツールEclipseにも依存しない。
確かに簡単。getter,setterメソッドを定義したinterfaceを作成してclasspathにactiveobjects-0.8.2.jarをとおすだけ。
主キーがないテーブルのマッピングは厄介?複合キーのテーブルを扱えない。
大きなデータ列を含むテーブルは工夫しないと大量のハッシュマップメモリを消費する(out of memoryで停止)。
動作遅い。
https://activeobjects.dev.java.net/
javaの「アノテーション」を理解できれば、XML設定ファイルやGUI開発ツールEclipseにも依存しない。
確かに簡単。getter,setterメソッドを定義したinterfaceを作成してclasspathにactiveobjects-0.8.2.jarをとおすだけ。
主キーがないテーブルのマッピングは厄介?複合キーのテーブルを扱えない。
大きなデータ列を含むテーブルは工夫しないと大量のハッシュマップメモリを消費する(out of memoryで停止)。
動作遅い。
テーブル名.java
import net.java.ao.Entity; public interface テーブル名 extends Entity{ @PrimaryKey ←アノテーションで主キー指定 public String get列名(); public void set列名(String string); ~ @SQLType(Types.CLOB) ←アノテーションで型指定 ~ }全件検索サンプル.java
import java.util.logging.Level; import java.util.logging.Logger; import net.java.ao.EntityManager; public class 全件検索サンプル{ public static void main( String[] args )throws Exception{ EntityManager entityManager = new EntityManager( "jdbc:mysql://localhost/test", "root", ""); Logger.getLogger("net.java.ao").setLevel(Level.FINE); entityManager.migrate( Person.class ); テーブル名 table = entityManager.create( テーブル名.class ); for( テーブル名 table : entityManager.find(テーブル.class) ) System.out.println(table.get列名()); } }追加サンプル.java
import java.util.logging.Level; import java.util.logging.Logger; import net.java.ao.EntityManager; public class 追加サンプル{ public static void main( String[] args )throws Exception{ EntityManager entityManager = new EntityManager( "jdbc:mysql://localhost/test", "root", ""); Logger.getLogger("net.java.ao").setLevel(Level.FINE); entityManager.migrate( Person.class ); テーブル名 table = entityManager.create( テーブル名.class ); table.set列名("データ"); ~ table.save(); } }削除サンプル.java 未確認
import java.util.logging.Level; import java.util.logging.Logger; import net.java.ao.EntityManager; public class 削除サンプル{ public static void main( String[] args )throws Exception{ EntityManager entityManager = new EntityManager( "jdbc:mysql://localhost/test", "root", ""); Logger.getLogger("net.java.ao").setLevel(Level.FINE); entityManager.migrate( Person.class ); テーブル名 table = entityManager.get( テーブル名.class, 123 ); table.delete( ? ); } }