About S2Dao.net

ブログ「sanryuブログ」のカテゴリ「S2Dao.net」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはORACLEです。

次のカテゴリはsanryuです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

S2Dao.net

Powered by
Movable Type 3.35

メイン

S2Dao.net アーカイブ

2011年03月10日

S2Dao.net使いました。

開発規模 :100画面、100テーブル、総ステップ数300Kステップぐらいのシステム。
利用ユーザ : 数百人

言   語 : VB.NET(スマートクライアント)
S2Dao.net : S2Container.NET 1.3.18 (Quillではない)
D B : Oracle11g

感   想 : 使ってよかった。
         データベースに対する意味のないプログラムがなくなった。

レスポンス:特に問題ないと思う。

難 易 度: 難しくはないと思う。

自作ジェネレーターで対応。

VB.NET用のEntityとか自動で作ってくれるツールを探したがなかった。
だから自分でツールを作成した。

工数かなり削減したので給料ふやしてください。

機能: DBのテーブル定義からスケルトンを生成。
作るスケルトン:
   (1)Dao(ITableNameDao,vb)の生成
   (2)SQLファイル(ITableNameDao_GetTableName.Sql)の生成
   (3)Entity(TableNameEntity,vb)の生成
   (4)DaoのGet時に使用する、Condition(TableNameSearchCondition.vb)の生成

S2Dao.netのTimestampによる排他制御はやめた

はじめ、S2Dao.netの排他制御機能を使用としました。

次の要件がクリアできないので
S2Dao.netの排他制御機能の使用をやめました。

◆要件
「新規作成日」と「更新日」のカラムあり
INSERT時には同じ日付を設定する。

◆対応
「Update」と「Delete」メソッド実行前に、
クライアントの「更新日」とDBの「更新日」を比較する
自作で楽観排他制御のインターセプタを作成して対応。

開発当初によく遭遇したエラー

Diconの設定が間違っていない状態でよく遭遇したエラー

------------------------------------------------
◆エラーコード : EDAO0007
------------------------------------------------
例外 :EndCommentNotFoundRuntimeException

内容 :
SQLファイルの中で使用しているSQLコメントが間違っている。

例  :
・Ifの最後のEndがない
・Begin に対応する End がない

参考:http://s2dao.net.seasar.org/ja/sqlcomment.html

------------------------------------------------
◆エラーコード : EDAO0025
------------------------------------------------
例外 :SqlFileNotFoundRuntimeException

内容 :
SQLファイルのプロパティの「ビルドアクション」が「埋め込まれたリソース」になっていない。

------------------------------------------------
◆エラー : DataTable をシリアル化できません。
------------------------------------------------
例外 : System.InvalidOperationException

内容 :
DataTableに名前がない。

※ちなみにこれは、Webサービスを使用していたために発生。

DaoでGetしたDataTableが読み取り専用になっていた

【現象】
SQLファイルのSQLにスカラー値を使用した場合,
取得したDataTableのDataColumnにReadOnlyが設定されてしまう。

【原因】
S2Dao.netの仕様だと思う。一応ソース見た。

【対応】
取得後のDataTableのDataColumnのReadOnlyにFalseを設定した。

S2Dao.NetでNULL値の登録

Entityの型にnull許容型(System.Nullable構造体)、
System.Data.SqlTypes名前空間のデータ型を使用する。

マニュアルに記載あり。

http://s2dao.net.seasar.org/ja/entity.html

S2Dao.Netで複数DBを使用する。

S2Dao.netで複数DBの使用できました。
自システムを含め4つのDBを使用しました。

DB毎に「components」の「namespace」や「name」を変えて設定して
Dicon(ado,s2dao,dao)を作成して、App.DiconでInculdeしました。

はしょった説明ですいません。
名前だけきちんと設定すれば
特別なことをせずに動くと思います。

2011年04月04日

S2Dao.Netで明示的にロールバックする

マニュアルに、コンポーネントが例外をスローした場合は
トランザクションをロールバックするとあるので、
明示的に例外をスローすることで対応した。

2011年04月06日

S2Dao.Netで複数のテーブルを結合したレコードを取得

複数のテーブルを結合したレコードを取得する場合、
Daoには、Getのみ記述する。
DaoにBean属性の指定は必須なのでダミーのEntityを指定する。

<Bean(GetType(HogeEntity))> _
Public Interface IHogeDao
    <SqlFile()> _
    Function GetHoge(ByVal dto As hogeSearchCondition) As DataTable
End Interface
ダミーのEntityには、属性を指定しない。
Public Class HogeEntity
  '空でOK
End Class

2011年04月18日

[S2Dao.net]Oracleでヒント句の指定方法

Oracleのヒント句の指定方法は、次のとおりです。
S2Dao.netでは、(1)でヒントを指定した場合、
S2DaoのSQLコメントと同じ為、無視されてしまいす。
(2)で指定すれば、ヒントを指定できます。

(1)複数行コメントでヒント指定

select /*+ ヒント*/
  *
from hoge;

(2)単一行コメントでヒント指定

select --+ ヒント 
 *
from hoge;

2011年09月10日

[S2Dao]ODP.NETの接続PoolingはディフォルトでTRUE

環境:S2Dao.net + ODP.net(ORACLE)

<現象>
DBに接続できないとエラーがでた。

<原因>
(1)ODP.NETのPoolingがディフォルトでTRUEとなっている。
(2)DB接続時にプロファイルでリソース制限(IDLE_TIME)されていた。
上記(1)(2)の為、しばらくDBに接続しないでいると、プーリングされている接続が切断されてしまい
DBに接続できなくなってしまった。

<対応>
(1)ODP.NETのPoolingをFALSEに設定。

※前提でリソース制限の解除はできない。

2011年09月
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30