S2Dao
次は、insertを試してみましょう。 ArticleDao_insert.sql INSERT INTO ARTICLE (data) VALUES ( XMLPARSE (DOCUMENT CAST (/*dto.data*/'' AS CLOB) PRESERVE WHITESPACE) ) S2Daoから呼び出すと、やはりエラーが発生しますが、よく原因が分かりません。 こ…
Java6についてくるJavaDB(Derby)では、XMLがサポートされてるそうなので、 これをS2Daoから呼び出す事にしました。 この辺りを参考にしながら、DBのセットアップ&テーブル作成。 JDBC SQL/XMLの新機能を使ってXMLデータ処理を効率化する 紅孔雀の日記 - Apa…
ストアドプロシージャの戻り値にDtoを使えるようにするために、 自前でProcedureHandlerImplを作成しているんですが、 既存のソースが、結構、なんていうか、ざっくり作ったというか・・・ S2Daoの、テーブルへの対応は丁寧に作りこんである感じがしますが、…
ストアドプロシージャの戻り値をDtoで返すためには、 戻り値とDTOのマッピング STRUCTとDTOのマッピング の2段階が必要。 似たような処理をしているのが BeanMetaDataとか、AbstractBeanMetaDataResultSetHandlerとなので、 この辺りを参考にして作れそう。 …
ラッパーを作ることで、引数のDTO(STRUCT)、配列(ARRAY)には対応ができた。 次は、戻り値の変換をどうするか。 ストアドプロシージャのreturnやOUTパラメータにSTRUCTやARRAYが入っていると、 Daoの戻り値にも、oracle.sql.STRUCT型や、oracle.sql.ARRAY型の…
S2Daoのストアド呼び出しの引数に、STRUCTやARRAYを使えるようにする改修。 ストアドプロシージャの引数がSTRUCT Dao側のメソッドは、引数をDtoにする ストアドプロシージャの引数がARRAY Dao側のメソッドは、引数をListか配列にする 、、、を実現するための…
引数のSTRUCT ORADataのラッパーを使って、DTOをラッピングして渡す。 StructDescriptorを利用する。 戻り値のSTRUCT StructをDtoに変換して返す。 DTOのクラス名の取り方は? 引数のARRAY ORADataのラッパーを使って、ラッピングして渡す。 ArrayDescriptor…
昨日のエントリーに書いたようなストアドプロシージャを、 S2DaoのPROCEDUREアノテーションを使って呼び出すと、 どういう問題が発生するのか? こんなDaoを書いてアクセスしてみる。 package examples.dao; import java.util.Map; public interface StoredT…
s2dao-oracleを作成するにあたって、まずは目的を明確にしよう。 ストアドプロシージャ(procedure / function)経由で、ユーザ定義型、ユーザ定義配列を扱えるようにする。 DtoとStruct(java.sql.Struct / oracle.sql.STRUCT)のマッピングを自動的に行なう。 …
要はS2Daoのストアド呼び出しって、そんなに叩かれてないんですよね。 実プロジェクトで利用するにあたっては、相当改変しちゃいました (^^;; 話題となっているSCHEMAやOWNERに関する問題とか、 ユーザ定義型に対応したり、DATE型問題に対応したりしているS2…
いま取り組んでいるプロジェクトで、 S2Daoのストアドプロシージャ呼び出し機能を改修し、 Dtoと、Oracleのユーザ定義型を自動でマッピング Dto配列と、Oracleのユーザ定義型の配列もマッピング などを出来るようにしました。 割と良い感じで動いてくれてい…
いまのS2Daoだと、ストアドプロシージャ(ストアドファンクション)の引数や戻り値に ユーザ定義型(STRUCT)や、ユーザ定義配列(ARRAY)が使えないようなので、 そのあたりを使えるようにするために、ソースを独自改修しています。 アノテーションとか使わ…