2010-01-01から1ヶ月間の記事一覧
Java6対応のO/Rマッパー Doma 1.0.0-RC3をリリースしました。 http://doma.sandbox.seasar.org/downloads.html今回がRCとしては最後のリリースになる予定です。つまり、次は正式な1.0.0をリリースするつもりです。時期は2月中旬を考えています。1.0.0-RC2か…
@AnnotateWithというアノテーションを使うと、aptで生成される実装クラスの特定の箇所に任意のアノテーションをつけられます。これは設定クラスをDaoにDIするために使用します。Guiceのアノテーションをつける場合の例はこんなです。 @Dao @AnnotateWith(ann…
動的なSQLをJavaで組み立てる方法を実験的に考えています。いまのところ導入するかどうかはわからないですが、導入するとしてもextensionとして別jarにするつもりです。SQLを組み立てる場所は、Daoから委譲される先がいいかなと思っています。Domaでは@Deleg…
今日は、Domaがコンパイル時におこなっているSQLの検証処理について紹介したいと思います。 Daoには次のメソッドを用意します。 @Select Emp selectById(Integer id); このメソッドには、次のようなSQLが対応しテキストファイルとして適切な場所に配置されな…
これまでjava.util.Listでしか渡せなかった複数パラメータですが、[DOMA-125]の修正でjava.lang.Iterableのサブタイプで渡せるようにしています。 @Select List<Employee> selectByIds(Set<Integer> ids); @BatchUpdate int[] update(Collection<Employee> e); http://d.hatena.ne.jp/taed</employee></integer></employee>…
Java6対応のO/Rマッパー Doma 1.0.0-RC2をリリースしました。 http://doma.sandbox.seasar.org/downloads.html1.0.0-RCからの変更点は以下のとおりです。 Bug [DOMA-121] - [Core] SQLのFROM句に条件コメントを書くとエラーになる問題に対応しました。 [DOMA…
前回のSNAPSHOTからの変更点は次のものです。 [DOMA-125] - [Core] SQLファイルを使用したクエリでDaoのパラメータにDTOを渡せるようにしました。 よかったら使ってください(特にid:duranさん)。 https://www.seasar.org/maven/maven2-snapshot/org/seasar…
Domaの条件コメント(繰り返しコメント)は、S2DaoやS2JDBCとちがって節をまたぐことはできません。 たとえば、次のSQLは条件コメントの始まりがFROM節にあって終わりがWHERE節にあるので不正です。 select * from aaa /*%if bbb != null */ where bbb = /* …
EclipseプラグインのDoma Toolsでは、plugin.xmlでactiveEditorIdという変数を使ってポップアップメニューの表示/非表示の切り替えているんですが、普通のJavaプロジェクトとGWTのプロジェクトでJavaのエディタのIDが異なっていてはまりました。 通常は org.…
SNAPSHOTをリリースしました。よければつかってください。 Doma http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/1.0.0-RC2-SNAPSHOT/doma-1.0.0-RC2-20100118.140942-1.jar Doma-Gen http://maven.seasar.org/maven2-snapshot/org/seasar/do…
Domaでは、ファイルに記述されたオリジナルのSQLを悲観的排他制御用やページング用のSQLに書き換えて実行しています。 RDBMSごとに制約が若干異なります。 検索オプションを利用した検索で違いをまとめておきました。 SQL Serverの悲観的排他制御の制限がち…
Doma 1.0.0-RC1にて、\から$に変更しました。どのRDBMSであっても、次のように$を指定するescape句と合わせて@prefix、@contain、@suffix等を使ってください。 select * from employee where name like /* @prefix(prefix) */'X%' escape '$' これまでだと、…
Java6対応のO/RマッパーDoma 1.0.0-RC1をリリースしました。 http://doma.sandbox.seasar.org/downloads.html今回から、DB2とSQL Server 2008に対応しています。 0.9.12からの変更点は以下のとおりです。 Bug [DOMA-108] - [Core] aptによるエンティティリス…
@OriginalStatesというアノテーションを使用すると変更があったプロパティだけを更新できます。こういう風に使います。エンティティにエンティティと同じ型のフィールドを定義して、そこに@OriginalStatesをつけます。 @Entity public class Employee { @Id …
汎用的なエンティティクラスとリスナークラスをコーディングします。たとえばこう。 abstractなエンティティクラス @Entity public abstract class Common { ... } Commonのサブタイプを型パラメータとするエンティティリスナークラス public class CommonLi…
ビルドファイルで指定できるようにしました。 <gen dialectName="${dialectName}" driverClassName="${driverClassName}" url="${url}" user="${user}" password="${password}" tableTypes="TABLE, VIEW"> ... </gen> tableTypes属性にカンマ区切りで指定します。 この値は、java.sql.DatabaseMetaDataクラスのgetTablesメソッドの最後のパラメータになります。
もしよかったらつかってください。 http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/0.9.13-SNAPSHOT/doma-0.9.13-20100112.163137-1.jar http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma-gen/0.9.13-SNAPSHOT/doma-gen-0.9.1…
上と似た感じで、2つクラスを作る必要があります。いずれもdoma-gen-x.x.x.jarに依存。 プロパティクラス名のリゾルバクラスを拡張 public class MyEntityPropertyClassNameResolver extends EntityPropertyClassNameResolver { public MyEntityPropertyClas…
いまだと設定だけでは無理で、2つクラスを作る必要があります。いずれもdoma-gen-x.x.x.jarに依存。設定でViewを含めるかどうか指定できるようにしてもいいですね。 テーブルのメタデータを読み取るクラスを拡張 public class MyTableMetaReader extends Tab…
実装したいと思っていた機能はすべて実装できましたし、ドキュメントも整ってきました。0.9.12に大きな問題なければ今度こそRCをリリースしたいと思います(来週くらい)。そして、2月にはFinalリリースを考えています。sandbox卒業は、RCの段階でしようかな…
0.9.12から次の繰り返しの要素があるかどうかをitem_has_nextというbooleanの変数で表せるようにしました。(itemは繰り返えされる要素の識別子) select * from employee where /*%for age : ages */ age = /* age */30 /*%if age_has_next */ or /*%end */…
Java6対応のO/RマッパーDoma 0.9.12をリリースしました。 http://doma.sandbox.seasar.org/downloads.html前バージョンから提供しているコード生成ツールのDoma-Genですが、機能を強化しています。 http://doma.sandbox.seasar.org/extension/doma_gen.html …
これまでこんな構文でした。 select * from employee where /*%if ages.size() > 0 */ /*%for age : ages */ age = /* age */30 /*%hasNext " or"*/ /*%end */ /*%end */ 次のバージョン(0.9.12)では、FreeMarkerっぽくxxx_has_nextという変数にbooleanの…
S2JDBCがパフォーマンスチューニングをしたということなので、もう一度パフォーマンス比較をしてみました。測定方法は前回と同様、1プロセス内で同じ処理を3回実行して最後の値を取る(最適化された状態で計測するために)、ということをそれぞれのテストケ…
0.9.11から新しく提供するようになったDoma-Genですが、いまだとこんなコードを出力できます。 @Dao(config = AppConfig.class) public interface AddressDao { @Insert int insert(Address entity); @Update int update(Address entity); @Delete int delet…
前回につづいてパフォーマンス比較をしてみました。ただし、前回と測定方法変えてます。最適化された状態で計測するため1プロセス内で同じ処理を3回実行して最後の値を取る、ということをそれぞれのテストケースで3回実行して真ん中の値を使っています。 コ…
あけましておめでとうございます。Java6対応のO/RマッパーDoma 0.9.11をリリースしました。 http://doma.sandbox.seasar.org/downloads.html今回の目玉はコード生成機能です。 http://doma.sandbox.seasar.org/extension/doma_gen.htmlぜひお試しください。 …