→データベース関連
一般 †
- 時代はO-Rマッピングからkey-valueストアへ 2009.5.31
- 昨今のWebアプリの技術を鳥瞰してみると、RailsやSeasarでO-Rマッピングのインピーダンスマッチの問題は事実上解決されたと言える。
- そして、技術革新の場所は、GoogleのMapReduce、Amazonのレコメンドエンジンなどの機能へ移っている。
JPA †
Hibernate †
- Hibernate Reference Documentation
Nhibernate †
S2JDBC †
- エンティティを生成したときにできる xxxxNamesクラスは何に使う?
- jdbcManager#updateBySqlで更新した場合、 @Versionをつけていてもバージョン番号は1UPしない
- スタンドアロンアプリでトランザクションを形成したいとき
- componentタグの中にaspect タグを書きそこにrequiredTxなどを書いておくとトランザクションが有効になる
- 独自ファイル(たとえばbean.diconなど)作ってapp.diconからincludeするのがおすす
め
(例)
<component name="sample" class="jp.co.Sample">
<aspect>j2ee.requiredTx</aspect>
</component>
- 指定したクラスのすべてのメソッドがトランザクション対象になる。
- pointCutタグを使うとメソッドを特定できる
- このとき
[ESSR0046]コンポーネント(j2ee)が見つかりません
と言われるならば
<include path="j2ee.dicon"/>
をapp.diconに追加すべし
- S2JDBCとS2Daoのいけてないところ
- S2DBCP は,ローカルトランザクションの内部では,Connection を要求ごとに新規に取り直すような動きをします。
- つまり,手動での JDBC 操作の部分と,S2JDBC/S2Dao の呼び出し部分では,それぞれ別々の Connection が使用されてしまう訳です。
- 当然,トランザクションもばらばらになってしまうため,事実上一つのトランザクションで処理を行うということができなくなります。
- トランザクション管理はS2Txを使うとのこと
- デフォルトだとコンポーネントが例外をスローした場合はトランザクションをロールバックしますが、発生した例外に応じてトランザクションをコミットするかロールバックするかを指定することもできます。
- addCommitRule(Class)メソッドを使用すると、トランザクションをコミットする例外を指定することができます。
- addRollbackRule(Class)メソッドを使用すると、トランザクションをロールバックする例外を指定することができます。
- MS製のJDBCドライバでSQL Server 2005 Expressにつなぐときのjdbc.diconの記述例
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
</property>
<property name="URL">
"jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=hogeDB"
</property>
<property name="user">"sa"</property>
<property name="password">"hogehoge"</property>
</component>
- 統合認証で接続する場合のjdbc.dicon
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
</property>
<property name="URL">
"jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=hogeDB;integratedSecurity=true"
</property>
</component>
- JDBCドライバのファイルはsqljdbc4.jarだけあれば良い模様。プロジェクトのlibフォルダに置いておくのがいろんな意味で無難と思われる。(外部に置こうとするといろんな局面でJDBCドライバがClassNotFoundをくらう)
- jdbc.diconで統合認証を使う場合はJDBCドライバに同梱されているsqljdbc_auth.dllをpathの切ってあるところに置く必要あり
iBATIS †
- Developer Guid
- Quick Start Guide
- ASP.NETで実践するiBATIS
- 「iBATIS.NET」は「SQL Maps=DataMapper」と「DAO Framework=DataAccess」という2つのフレームワークから構成される
- SQL Maps:XMLに記述したSQLの実行結果をマッピングする
- DAO Framework:DI機能。DBアクセスとビジネスロジックの依存性を下げる。
- ADO.NETのデータプロバイダに依存する
- 2つのフレームワークはそれぞれ単体で使用可能
インストール †
- http://ibatis.apache.org/ から最新版を落としてくる
- インストーラなどは無い。展開したものを適当なフォルダにコピーする
- VS.NETから以下のdllを参照する
- IBatisNet.Common.dll
- IBatisNet.DataMapper.dll (SQL Maps使用時)
- IBatisNet.DataAccess.dll (DAO Framwork使用時)
使い方 †
- マッピング対象のオブジェクトとなるクラスを定義する
- マッピング用XMLを作り、その中の所定のタグにSQLを書く
- 管理ファイルSqlMap.configにマッピング用XMLを登録する
その他 †
|