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

Daoメソッド呼び出し終了のログ

Daoメソッドの呼び出し開始と終了のログを出力可能にしていますが、実は、楽観的排他制御等の例外がスローされたときは終了のログが出ないですね。 例外で終了したことがわかるようなログを出力可能にしようと思います。JdbcLoggerインタフェースに次のよう…

Doma 1.5.0 をリリースしてから一週間

ここのところ毎週のようにリリースしていましたが、今週はリリースしなくて大丈夫そうです。特にバグ報告ないので。 まるまる一週間たって、約30ダウンロード。意外と多いか、それとも少ないかなんともわかりません。少なくともS2Daoに比べると人気はないで…

Criteria APIは実装しないことにします

Domaで、SQLをJavaのAPIで組み立てるCriteria APIを提供しようと一時考えていたのですが、やめます。 途中まで実装したのですが、JavaでごにょごにょするよりSQLを直接記述したほうが楽(記述するのも、テストするのも)だとかんじてしまったので。 もし期待…

プログラムからクラスファイルの作成

Visual Studioのアドインに挑戦中。ドキュメント探すのだけでも一苦労です。 http://msdn.microsoft.com/ja-jp/library/ms228774%28VS.90%29.aspx イベントが2回呼ばれたりよくわからないところがあるけど、次のコードをOnConnectionメソッドの後ろの方に追…

Domaを作ろうと思った1つのきっかけ

DomaはDomain Oriented MApping frameworkのアクロニムで、ここでのDomainが意味するのは値の定義域のことです。Domainという同じ言葉を使っていても、DDD(Domain Driven Design)のDomainとはなんら関係ないわけですが、Domaを作ろうと思った1つのきっかけは…

Domaの裏コンセプト

Domaの表のコンセプト(利用者にとって重要なもの)は、Domaのトップページに載せていますが、裏コンセプト(利用者には重要でない設計上の指針)というのもありました。それは、次の3つをうまく使うということです。 Visitorパターン Interpreterパターン …

Doma 1.5.0 リリース

Java6対応の Daoフレームワーク Doma 1.5.0 をリリースしました。ダウンロードはこちらからどうぞ。 http://doma.seasar.org/downloads.html Maven2 からのご利用はこちらを参照ください。 http://www.seasar.org/wiki/index.php?Maven2RepoRemote 1.4.0から…

Javadocコメントについて

Javadocコメントですが、結構しっかり書いたのでアピールしておきます。 たとえば、アノテーションのJavadocコメント。使用例を示したり、注釈されるメソッドがスローするかもしれない例外を説明したりしています。 http://doma.seasar.org/apidocs/org/seas…

Eclipseでzipを解凍せずにインポート

プロジェクトがzipなどの形式になっている場合、解凍せずにインポートできるって知ってます?昔のEclipseにはなかったような気がするのですが、3.4くらいからできるようになっていてとても便利です。Eclipse 3.5以上、JDK 6以上の環境の場合は、ぜひDomaのチ…

Daoのメソッドから1カラムだけを取得しようとしていることがわかる場合のチェックを強化

どういうことかというと、たとえば次のDaoメソッドがあるとします。 @Select int count(); このような場合、対応するSQLのSELECT節には、次のように2つ以上のカラムがあってはいけないということです。 select count(*), max(salary) from hoge 実行すると、…

Domaをベースにした.NET版のDaoフレームワーク

O/RマッパーとしてEntity FrameworkやNHibernateがフィットするアプリは確かにあると思うのですが、そうは言っても多くのアプリやプロジェクトではSQLを中心としたDaoフレームワークのほうが適していると思っています。 そういうわけで、Domaをベースにして.…

Doma 1.4.0 リリース

O/Rマッパー Doma 1.4.0 をリリースしました。ダウンロードはこちらからどうぞ。 http://doma.seasar.org/downloads.html Maven2 からのご利用はこちらを参照ください。 http://www.seasar.org/wiki/index.php?Maven2RepoRemote 1.3.1 からの変更点は以下の…

括弧の中のANDとORの自動除去機能はDoma 1.4.1 で対応予定

Doma 1.4.0だと、SQLの中の式コメントの評価の結果、WHERE句とHAVING句のうしろにANDやORが続く場合は自動で除いているのですが、開き括弧のうしろにANDやORが続く場合は対象外でした(考慮し忘れていました)。1.4.1 で対応します。すぐに試してみたい方はS…

DomaのSQLファイルでelseifやelseのブロックコメントをサポート

これまで elseif や else をラインコメントでサポートしていました。 select * from table1 where /*%if column1 != null */ column1 = /* foo */'aaa' --elseif column2 != null-- column2 = /* hoge */'aaa' --else column2 is null /*%end */ この書き方…

Doma-Genの「エンティティクラスに共通のスーパークラスを指定する」機能をSNAPHSOTで修正

Doma-Genのエンティティクラスに共通のスーパークラスを指定するの機能がバグっていました。親クラスに定義したプロパティが考慮されず、コード生成した子クラスにもプロパティが重複してしまうというものです。直してSNAPHSOT作成しました。 http://maven.s…

DomaでSerializableなオブジェクトを永続化したり取得したりするには その2

DomaでSerializableなオブジェクトを永続化したり取得したりするにはで、Personオブジェクトをシリアライズする方法を説明しました。前回はPersonHolderというクラスでシリアライズ/デシリアライズしたのですが、Personクラス自体でシリアライズ/デシリアラ…

Doma 1.3.1 リリース

O/Rマッパー Doma 1.3.1 をリリースしました。 1.3.0をリリースしたばかりですが、大きな問題が見つかったので1.3.1としてリリースします。ダウンロードはこちらからどうぞ。 http://doma.seasar.org/downloads.html Maven2 からのご利用はこちらを参照くだ…

Domaで論理削除をするには

デリゲートを使うと簡単に実現できます。Daoの定義はこんな感じにします。deleteメソッドに@Delegateをつけるのがポイントです。 @Dao(config = AppConfig.class) public interface EmployeeDao { @Delegate(to = EmployeeDaoDelegate.class) int delete(Emp…

DomaでSerializableなオブジェクトを永続化したり取得したりするには

たとえば、次のクラスのオブジェクトをテーブルにシリアライズしたいとします。 public class Person implements Serializable { private static final long serialVersionUID = 1L; public String name; public Person(String name) { this.name = name; } …

Doma 1.3.0 リリース

O/Rマッパー Doma 1.3.0 をリリースしました。ダウンロードはこちらからどうぞ。 http://doma.seasar.org/downloads.html Maven2 からのご利用はこちらを参照ください。 http://www.seasar.org/wiki/index.php?Maven2RepoRemote 前バージョン1.2.1からの変更…

Doma 1.3.0 のドキュメントの主な変更点

ドキュメントもがんばったのでアピールしておきます。 チュートリアル 文字シーケンスを組み込み関数で判定する検索を追加しました。 結合した結果を取得する検索を追加しました。 Doma-Gen Windows版のEclipseではAntが動かないことを明記しました。それと…

Domaを使ったアプリのビルドにおいてMavenとaptの相性の悪さを解決する3つの方法

http://d.hatena.ne.jp/ktfs/20100331/1270061475 わかります。確かに「SUN、どうなってんの??!!Mavenどうなってんの??????!!!!!!」といいたくなりますね。 Mavenというかjavacには、ドキュメントに書いたようにaptに関する不具合があって工…