2009-11-01から1ヶ月間の記事一覧
日付のAPIはJavaの中でもよく文句が言われるところですね。 独自のクラスを作るという解決策はありますが、O/Rマッパーによってはユーザー定義の型をDBにマッピングするのが大変だったりするので(Hibernateとか)それはそれで躊躇してしまうかもしれません…
updateの度にプログラムでわざわざタイムスタンプを更新しなくても自動で設定したいという話です。更新タイムスタンプとかは、複数エンティティで共通でしょうから、共通用のクラスつくります。 @Entity public class Common { Timestamp updateTimestamp; }…
1月に1.0.0 RC、2月に1.0.0 Finalを予定しています。 Doma本体への新機能追加は今のところ考えていなくて(あるとしたらSQL Server対応かな)、考えているのは、 エンティティ生成のツール Eclipseプラグインの機能強化(SQLファイル作成時にSQLの雛形はくと…
いくつかの機能についてはリリース前に紹介してきましたが、まだ紹介しきれていないものをいくつかピックアップ。 aptのエラーをよりわかりやすい場所に これまで、アノテーションの要素部分のエラーであっても、アノテーションが注釈されたクラスやメソッド…
今回作ったJPetStoreですが、S2Containerを使いHOT deployやトランザクション管理の恩恵を受けながらもDI(Dependency Injection)はほとんど使わない方針を採りました。今回使ったDIはActionにActionFormをDIするところだけです。 public class CartAction …
リリースしました。今回、JPetStoreのデモアプリを作りました。ただ、IEだとCSSのレイアウトが崩れるかも。。。 http://doma.sandbox.seasar.org/demoapps/jpetstore.html チュートリアルのドキュメントも作りました。 http://doma.sandbox.seasar.org/tutor…
id:newtaさんからアイデアもらってhasNextコメントはブロックコメントにしました。 JPetStoreのサンプルではこんなSQLファイルが登場します。 SELECT PRODUCTID, NAME, DESCN, CATEGORY FROM PRODUCT WHERE /*%if keywords.size() > 0 */ /*%for keyword : k…
Connectionをコンストラクタで受け取れるようにしました(次のバージョンDoma 0.9.10から)。 Connection con = ... EmployeeDao dao = new EmployeeDaoImpl(con); List<Employee> list = dao.selectAll(); 昔、JDBCベタベタのアプリをS2Daoを使うように変えたことがあ</employee>…
ログにSQLファイルのパスを含めるようにしました(次のバージョンDoma 0.9.10から)。SQLファイルから読まれたSQLの実行ログはこんな感じ。改行されていますが、一度のログ出力です。 INFO 2009-11-17 23:50:44,537 [main] sqlFilePath=[META-INF/org/seasar…
次のバージョンのDoma 0.9.10で入ります。SQLファイルをこんな感じで書けます。 select * from EMPLOYEE where /*%if names.size() > 0*/ /*%for name : names*/ EMPLOYEE_NAME like /*@startWith(name)*/'hoge'--hasNext " or " -- /*%end*/ /*%end*/ /*%fo…
これも次の0.9.10から。たとえば、SQLファイル(selectAll.sql)がこうだとします。 select id, name, salary from EMPLOYEE order by EMPLOYEE_ID マッピングされるエンティティクラスがこうだとします。 @Entity public class Emp { @Id public Integer id; …
次の0.9.10で入れようと思います。たとえば、SQLファイル(selectByDepartmentId.sql)にはこう書いておきます。 select * from EMPLOYEE where DEPARTMENT_ID = /*departmentId*/0 order by EMPLOYEE_ID JavaのコードではSelectOptionsのcount()を呼び出して…
Hibernate 3.5.0-Beta-2 がリリースだそうです。で、メタモデルを出力するaptの実装 Hibernate StaticMetamodel Generator Annotation Processor にも言及しています。さっそく試そうとしたのですが、Hibernate 3.5.0-Beta-2の配布ファイルには含まれていま…
リリースしました。 http://doma.sandbox.seasar.org/downloads.html0.9.8からの変更点は次のとおりです。 Bug [DOMA-42] - [Core] aptによるエンティティクラスのprivateフィールドの検証がエンティティごとに最初の1つしか実行されない問題に対応しました…
上とおんなじ感じで、日付やタイムスタンプの時刻部分をゼロにリセットする組み込み関数 @resetTimePart も作りました。 select * from employee where updateTimestamp < /* @resetTimePart(updateTimestamp) */'2001-01-01 00:00:00' バインドする値が「20…
前方一致検索の場合は@startWithという組み込み関数を使います。SQLファイルにはこう記述しておきます。 select * from employee where name like /* @startWith(name) */'a%' 呼び出し側では、%の連結が不要です。ここでは「S」を渡しています。 EmployeeDa…