2009-01-01から1年間の記事一覧

T2 + Doma

id:c9katayamaさんとid:yone098さんが、T2+Spring+DomaのサンプルとT2+Guice+Domaのサンプルをつくってくれました。 http://d.hatena.ne.jp/c9katayama/20091011ありがとうございます!コメントに書いたのですが、@Daoのconfig要素に指定するクラスはコンテ…

Daoはinterfaceのみ(実装クラスつくらない)という手法が広まりつつあるのか?

Generic RepositoryがTSSで紹介されていましたが、これもDao(Repository)をinterfaceにして、メソッドにアノテーションつけるタイプですね。 public interface UserRepository extends ReadWriteJpaRepository<User, Long> { @GenericQuery(query = "from User where u</user,>…

WindowsのEclipse3.5のAntの問題

WindowsのEclipse3.5のAntなんですが、実行するAntタスクが日本語をログ出力していると、コンソール出力が行われません。Eclipseのエンコーディングの問題なんですよ。だれか解決して〜。現時点では、Eclipse3.5のAntからS2JDBC-GenのAntタスクをうまく動か…

Namesクラス と SqlFilesクラス

たけぞうさんからリクエストがあったNamesクラスとSqlFilesクラスに対応しました。次のバージョン(2.4.40)に入ります。 Namesクラスは、Gen-Namesタスクを実行すれば自動で作られるようにしました(生成しないことも可)。 SqlFilesクラスは、こんなantタ…

Doma 0.9.6 のクールなところ

ちょっと細かいところをいくつかアピールしてみます。 SQLファイル中のコメント式のaptを使った検証がかしこくなりました。 Daoのメソッドがこんなだとします。 @Select List<Employee> selectByExample(Employee e); 対応するSQLがこんなだとします。 select * from E</employee>…

Doma 0.9.6 をリリース

さきほど、0.9.5をリリースしたばかりではありますが0.9.6をリリースしました。 以前のバージョンからの変更点は次のとおりです。 Bug [DOMA-22] - SQLファイルの検証処理で式のパースに失敗するとエラーが正しく表示されない問題に対応しました。 [DOMA-23]…

Doma 0.9.5 をリリース

DomaはJava6(JDBC4)に対応したDaoフレームワークです。aptでコンパイル時にコード生成やコードの検証を行うのが特徴です。以前のバージョンからの変更点は次のとおりです。 Bug [DOMA-21] - SQLのブロックコメントに改行が含まれていてSQLの解析に失敗した…

エンティティをインタフェースではなくPOJOに

Seasarカンファレンスで発表してから2週間くらいたちますが、そのときもらった質問等を受けて、使い勝手を再考中です。 で、いろいろ考えた結果、エンティティをPOJOにすることにしました。理由はいくつかあるのですが、もっとも大きなものは、エンティティ…

DomaについてSeasarカンファレンスで話してきました

思いのほか多くの方に来ていただきました。どうもありがとうございました。プレゼン資料公開しておきます。Sc2009autumn 次世代Daoフレームワーク DomaView more presentations from taedium.PDF版もあります。SlideShareのほうは若干フォーマットが崩れしま…

Doma 0.9.4 リリース

Daoフレームワークである、Doma 0.9.4 をリリースしました。 Doma 0.9.3からの変更点は以下のとおりです。 Bug [DOMA-7] - ifコメントが連続でネストし、かつ、それらの条件が成立しない場合にwhereが出力されてしまう問題に対応しました。 [DOMA-8] - バイ…

Eclipseの注釈処理の設定画面に関する説明ページ

プロジェクトの右クリックで開くコンテキストメニューから「Properties」 - 「Java Compiler」 - 「Annotation Processing」 と辿ると、注釈処理の設定画面が開くじゃないですか。この画面の説明ページをたまたまみつけたのでリンクしておきます。 http://ma…

Doma 0.9.3でリリースしたデモアプリについて

SAStruts と GWT を使ったものをそれぞれ用意してみました。ブラウザでざっくり見てみようかなという場合はこちらをどうぞ。 https://www.seasar.org/svn/sandbox/doma/tags/0.9.3/doma-sastruts-demo/ https://www.seasar.org/svn/sandbox/doma/tags/0.9.3/…

Doma 0.9.3 リリース

DaoフレームワークであるDoma 0.9.3をリリースしました。Doma 0.9.1からの変更点は以下のとおりです。(わけあってバージョン0.9.2は存在しません) Improvement [DOMA-2] - 組み込みのドメインクラスの名前をそれとわかるものにし、骨格抽象クラスの名前を…

Maven2.2.0は複数の-Aオプションに対応していない

javacでAnnotation Processroにオプションを渡す場合-Aが使えるのですが、Mavenではオプションが複数ある場合に対応できていない、という話。Antではこう書けます。 <javac fork="yes" srcdir="${src}" compiler="javac1.6" classpathref="classpath" destdir="${build}" debug="on" encoding="UTF-8" > <compilerarg line="-Adto.generation=true -Adto.package=hoge.dto"/> </javac> d…

Seasarカンファレンスでしゃべります

最近作ったDaoフレームワークDomaを紹介します。 http://event.seasarfoundation.org/sc2009autumn/Session#S3042 ここ数年、S2Daoをメンテナンスし、S2JDBC-Genを作り、Hibernate(JPA)の本を書いてと、3つのO/Rマッパー(S2Dao、S2JDBC、Hibernate)に深…

DTOの自動生成をサポート

DomaでDTOをaptで自動生成できるようにしました。どういうことかというと、次のようなDomaの@Entityがついたクラスをコンパイルすると、 @Entity public interface Emp { @Id Identity id(); Name name(); Salary salary(); } つぎのようなDTOを即座に自動生…

Doma 0.9.1 リリース

Doma 0.9.1 をリリースしました。DomaはJava6以上の環境で動作するO/Rマッパー(DAOフレームワーク)です。Java6で導入されたPluggable Annotation Processing APIを使ってコード生成やコードの妥当検査を行うという特徴があります。 ダウンロードはこちらか…

JavaEE勉強会で発表してきました

まだリリースできていないのですが、今作っているDaoフレームワークについて発表してきました。せっかくなので資料を置いておきます。次世代DaoフレームワークDomaView more presentations from taedium.モノはだいたいできているのですが、課題はドキュメン…

Java6(JDBC4.0)から追加されたjava.sql.Arrayなどのファクトリメソッドへの対応

Java6(JDBC4.0)からjava.sql.Connectionにjava.sql.ArrayのファクトリメソッドであるcreateArrayOfが追加されました。(同様にBlobを生成するcreateBlobとかClobを生成するcreateClobとかも追加されています。)Domaでは、こんな風に呼び出せるようにして…

Hudoson上でDBを利用する結合テスト環境つくりました

これまで、Google Codeを使っていたんですが、Seasarプロジェクトに移行しました。 https://www.seasar.org/svn/sandbox/doma/ そして、さっそくHudsonを使わせてもらいました。 https://www.seasar.org/hudson/job/doma/ https://www.seasar.org/hudson/job…

SQLなどのログまわり

SQLなどのログをアプリ側で取得したいという話をよく聞くので、必要そうなログは特定のインタフェースを実装したクラスへ全部送るようにしてみました。こんなインタフェースです。 public interface JdbcLogger { void logMethodEntering(String callerClass…

aptでバインド変数コメントをバリデーション

Domaではsql上のバインド変数は、コメントでDaoのメソッドのパラメータ名とマッピングします。 たとえばこんなかんじ。idがマッピングされます。 SQLファイル select * from employee where id = /*:id*/99 Daoのメソッド @Select Employee selectById(Id id…

今後の予定

メインの機能はほぼできたので、7月中に最初のリリースをしようと思います。とりあえず、Oracle、PostgreSQL、MySQL、HSQLDBの4つをサポートします。あとは必要に応じて。もし現時点のDomaに興味があれば、 http://domaframework.googlecode.com/svn/trunk/ …

1つのDaoで複数のエンティティを扱ったりジェネリックなDaoを利用したり

S2DaoはDaoとBean(エンティティ)の関係は基本的に1対1ですが、Domaでは1対nもokにしてます。3つのテーブルしか扱わないとかだと、1つのDaoで十分かも。 @Dao(config = AppConfig.class) public interface AppDao { @insert int insert(Employee employee);…

ファンクションやプロシージャの実行

いま実装中です。Daoの定義はこうなる予定。 @Dao(config = MyConfig.class) public interface EmployeeDao { @Function Salary getTotalSalary(@In Id deptId, @Out Salary average, @ResultSet List<Employee> employees); @Procedure(name = "aaa_proc") void fillT</employee>…

エンティティのイテレーション

エンティティを1件ずつイテレートする機能を実装しました。IterationCallbackはS2JDBCを参考に同じインタフェースにしました。 Daoの定義はこんなん。@Selectのiteration要素をtrueにします。 @Dao(config = MyConfig.class) public interface EmployeeDao e…

検索系メソッドのページングとか悲観的ロックの指定はパラメータで

select時のページングとか悲観的ロックはsqlファイルで用意された元のsqlを書き換えて実行します。呼び出し時に動的に変更したいだろうからこの情報はSelectOptionsというパラメータで渡します。Daoはこんなん。 @Dao(config = MyConfig.class) public inter…

更新系メソッドのオプション指定はアノテーションで

前回のエントリでパラメータで渡す例を載せましたが、アノテーションで指定しまったほうがわかりやすいと思い直してこうしました。 @Dao(config = MyConfig.class) public interface EmployeeDao { @Delete(queryTimeout = 10, ignoresVersion = true) int d…

オプションの指定

S2Daoだとタイムアウトなどのオプションをクエリごとに指定したりできない(diconで一律設定はできます)んですが、DomaではDaoのメソッドでオプションを渡せるようにしてみました。 @Dao(config = MyConfig.class) public interface EmployeeDao { @Delete …

IDの自動採番

S2JDBCを参考にIDの自動採番機能もつけました。DBのauto incrementを使う場合はこんなん。 @Entity public interface Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) IntegerDomain employee_id(); ... } シーケンスを使う場合はこ…