2010-01-01から1ヶ月間の記事一覧

Doma 1.0.0-RC3 リリース

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をメタアノテーションとして使用可能に

@AnnotateWithというアノテーションを使うと、aptで生成される実装クラスの特定の箇所に任意のアノテーションをつけられます。これは設定クラスをDaoにDIするために使用します。Guiceのアノテーションをつける場合の例はこんなです。 @Dao @AnnotateWith(ann…

Domaでクライテリアのアイデア

動的なSQLをJavaで組み立てる方法を実験的に考えています。いまのところ導入するかどうかはわからないですが、導入するとしてもextensionとして別jarにするつもりです。SQLを組み立てる場所は、Daoから委譲される先がいいかなと思っています。Domaでは@Deleg…

コンパイル時のSQLチェック

今日は、Domaがコンパイル時におこなっているSQLの検証処理について紹介したいと思います。 Daoには次のメソッドを用意します。 @Select Emp selectById(Integer id); このメソッドには、次のようなSQLが対応しテキストファイルとして適切な場所に配置されな…

Daoメソッドでjava.lang.Iterableに対応

これまで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>…

Doma 1.0.0-RC2 リリース

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…

Doma 1.0.0-RC2-20100120.143619-2をリリース、DTOが使えるようになりました。

前回のSNAPSHOTからの変更点は次のものです。 [DOMA-125] - [Core] SQLファイルを使用したクエリでDaoのパラメータにDTOを渡せるようにしました。 よかったら使ってください(特にid:duranさん)。 https://www.seasar.org/maven/maven2-snapshot/org/seasar…

SQLの条件コメント(繰り返しコメント)の特徴

Domaの条件コメント(繰り返しコメント)は、S2DaoやS2JDBCとちがって節をまたぐことはできません。 たとえば、次のSQLは条件コメントの始まりがFROM節にあって終わりがWHERE節にあるので不正です。 select * from aaa /*%if bbb != null */ where bbb = /* …

GWTのプロジェクトだとactiveEditorIdが通常と異なる

EclipseプラグインのDoma Toolsでは、plugin.xmlでactiveEditorIdという変数を使ってポップアップメニューの表示/非表示の切り替えているんですが、普通のJavaプロジェクトとGWTのプロジェクトでJavaのエディタのIDが異なっていてはまりました。 通常は org.…

Doma 1.0.0-RC2-SNAPSHOTをリリース

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…

RDBMSごとの悲観的排他制御とページングの対応

Domaでは、ファイルに記述されたオリジナルのSQLを悲観的排他制御用やページング用のSQLに書き換えて実行しています。 RDBMSごとに制約が若干異なります。 検索オプションを利用した検索で違いをまとめておきました。 SQL Serverの悲観的排他制御の制限がち…

前方、中間、後方一致検索(LIKE検索)時のデフォルトのエスケープ文字

Doma 1.0.0-RC1にて、\から$に変更しました。どのRDBMSであっても、次のように$を指定するescape句と合わせて@prefix、@contain、@suffix等を使ってください。 select * from employee where name like /* @prefix(prefix) */'X%' escape '$' これまでだと、…

Doma 1.0.0-RC1 リリース

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 …

Doma-GenのGenタスクで汎用的なエンティティリスナーを利用したコードを生成 ( Doma 0.9.13 SNAPSHOT )

汎用的なエンティティクラスとリスナークラスをコーディングします。たとえばこう。 abstractなエンティティクラス @Entity public abstract class Common { ... } Commonのサブタイプを型パラメータとするエンティティリスナークラス public class CommonLi…

Doma-GenのGenタスクでVIEWからエンティティクラスを作るには? ( Doma 0.9.13 SNAPSHOT )

ビルドファイルで指定できるようにしました。 <gen dialectName="${dialectName}" driverClassName="${driverClassName}" url="${url}" user="${user}" password="${password}" tableTypes="TABLE, VIEW"> ... </gen> tableTypes属性にカンマ区切りで指定します。 この値は、java.sql.DatabaseMetaDataクラスのgetTablesメソッドの最後のパラメータになります。

Doma 0.9.13 SNAPSHOT リリース

もしよかったらつかってください。 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…

Doma-Genが生成するエンティティクラスのプロパティの型を固定化するには?

上と似た感じで、2つクラスを作る必要があります。いずれもdoma-gen-x.x.x.jarに依存。 プロパティクラス名のリゾルバクラスを拡張 public class MyEntityPropertyClassNameResolver extends EntityPropertyClassNameResolver { public MyEntityPropertyClas…

Doma-GenのGenタスクでVIEWからエンティティクラスを作るには?

いまだと設定だけでは無理で、2つクラスを作る必要があります。いずれもdoma-gen-x.x.x.jarに依存。設定でViewを含めるかどうか指定できるようにしてもいいですね。 テーブルのメタデータを読み取るクラスを拡張 public class MyTableMetaReader extends Tab…

Domaのロードマップ

実装したいと思っていた機能はすべて実装できましたし、ドキュメントも整ってきました。0.9.12に大きな問題なければ今度こそRCをリリースしたいと思います(来週くらい)。そして、2月にはFinalリリースを考えています。sandbox卒業は、RCの段階でしようかな…

繰り返しコメントのitem_has_next変数

0.9.12から次の繰り返しの要素があるかどうかをitem_has_nextというbooleanの変数で表せるようにしました。(itemは繰り返えされる要素の識別子) select * from employee where /*%for age : ages */ age = /* age */30 /*%if age_has_next */ or /*%end */…

Doma 0.9.12 リリース

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 …

SQLファイルの繰り返しコメントのhasNextの構文を見直し

これまでこんな構文でした。 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の…

JDBC、S2JDBC、S2Dao、JPA(Hibernate)、Domaのパフォーマンス比較 その3

S2JDBCがパフォーマンスチューニングをしたということなので、もう一度パフォーマンス比較をしてみました。測定方法は前回と同様、1プロセス内で同じ処理を3回実行して最後の値を取る(最適化された状態で計測するために)、ということをそれぞれのテストケ…

次のバージョンのDoma-Gen

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…

JDBC、S2JDBC、S2Dao、JPA(Hibernate)、Domaのパフォーマンス比較 その2

前回につづいてパフォーマンス比較をしてみました。ただし、前回と測定方法変えてます。最適化された状態で計測するため1プロセス内で同じ処理を3回実行して最後の値を取る、ということをそれぞれのテストケースで3回実行して真ん中の値を使っています。 コ…

Doma 0.9.11 をリリースしました

あけましておめでとうございます。Java6対応のO/RマッパーDoma 0.9.11をリリースしました。 http://doma.sandbox.seasar.org/downloads.html今回の目玉はコード生成機能です。 http://doma.sandbox.seasar.org/extension/doma_gen.htmlぜひお試しください。 …