このエントリでは、S2JDBC-Genを使って手軽にデータベースリファクタリングをする方法を紹介します。S2JDBC-Genは、Javaコード(S2JDBCのエンティティ)の修正をデータベーススキーマに反映させるツールです。 S2JDBC-Genの実行に必要な動作環境は、EclipseプラグインのDoltengを使うと簡単に用意できます。Eclipseはバージョン3.4、Doltengは昨日リリースされたばかりの0.33.0を使います。 長くなりすぎたので見出しを。。。 Doltengのインストール Doltengプロジェクトの作成 Antのコンソールエンコーディングの設定 (Windows上でEclipse3.4を動かす場合にだけ必要) H2の起動とデータの確認 データベースからエンティティの生成 エンティティからDDLとダンプデータの生成 DBリファクタリング(新たなカラムの導入) D
S2JDBCを使っていて、シーケンスを普通に1づつのインクリメントで作成していてはまりました。 CREATE SEQUENCE PROJECT_ID; 上記定義だと、実際にシステムが発行するシーケンス番号と、 DB上のシーケンスの現在値が不一致になって、再起動したりしたタイミングで重複エラーになります。 実際は以下のように定義する必要があります。S2JDBCのドキュメントにはしっかり書いてありますが、なんで50なのか?っていうところが気になります。 http://s2container.seasar.org/2.4/ja/s2jdbc_entity.html CREATE SEQUENCE PROJECT_ID INCREMENT BY 50; これはシーケンスを毎回DBにとりにいくのではなくて、デフォルトで50回に1回だけDBに問い合わせて、その後は50のサイズを使い切るまではJPA側で
AbstractAutoBatchUpdate#executeInternal()のなかで実行結果の件数を元にvalidateRows()で更新件数が0の時は楽観的排他ロックのエラーとしてるんだけど、OracleのjdbcではどうもexecuteBatchの戻り値としてSUCCESS_NO_INFO(-2)が返ってきてて、件数が正しく取得できてないのでこんな事に。 取りあえず明日もう一度検証 jdbcのドライバをデータベースのバージョンと併せてみる。(jdbc=ojdbc6、db=OracleXE) jdbcをOracleXEにバンドルされている物を使ってもNG OracleXEじゃなくてまじめな方でも試してみる 11gでもNG OracleでないDBMS(PostgreSQL辺り?)で試してみる 2008/07/25 11:59 追記 executeBatch()では更新件数が正しく取得
S2JDBCを単体で使用すると、トランザクション制御は自分で設定しないと駄目そうなのでメモ 補足:SAStrutsと組み合わせれば、デフォルトでAction単位でトランザクションを制御してくれます。 今回はserviceに対して、トランザクションをかけます。 とういのも、Batch処理でS2JDBCを使用し、logicで実際のDB更新処理をし、その上で、serviceが複数のlogicを制御し、logicが全て成功なら、commit、失敗ならrollbackとしています。 creator.diconにserviceパッケージをS2で管理するように以下を追加 <component class="org.seasar.framework.container.creator.ServiceCreator"/> customer.diconにトランザクション制御を追加 <component nam
このエントリーではSeasar 2.4.26 から 導入された S2AbstractService について書かせて頂きます。S2AbstractService を活用することで、タイプセーフを保ちつつも、データアクセスロジック関連のソースコードを大幅に減らす効果が期待できます。 S2JDBC の弱点 S2JDBCを使えば、お手軽かつパワフルにデータアクセス処理が実現できます。しかし、生のS2JDBCを野放し状態に使った場合、プロジェクトの規模が少し大きくなると、ソースコードの重複を生みやすくなる問題に直面します。具体的に、次の1件分のデータ取得処理ですら、コピー&ペーストされて複数箇所で使用されてしまいます。 Emp emp = jdbcManager.from(Emp.class).id(empId).getSingleResult(); 対処方法は、共通処理を抽出してメソッド化するこ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く