過去の日記

2005-07-30 [長年日記]

やっと [hatena]

実はsave関数はO/Rマッピングフレームワークのheibernateの関数です。内部構造は不明ですがおそらくクラスを解析して対応するクラスにマッピングしていると思いますが、このsave関数は引数にマッピングするクラスのオブジェクトを渡さなければいけなくテーブルが20個あった場合それに対応するクラスを20個作成するのですがデータアクセス用のDAOも20個必要になるため(つまりsave(table1Calss a),...,save(table20Class a)のように)それを一つのDAOで行いたいのです。そのためaオブジェクトをそれぞれのクラスに動的にキャストする方法を模索しています。

はてな Javaで例えばある関数をsave(ClassA o)で呼ばれる時,渡すオブジェクトaがObject型であるとき渡すにはsave((ClassA) a)とするのが普通ですが。明示的に・・

うーん。
テーブルが元々20個あって、それぞれのクラスにしたくなくて、1つのクラスに集約したいと。
table1Class 〜 table20Class のどれを渡してもコンパイルが通ってしまうメソッドを作ってしまうと、正しくないものを渡したりする間違いをコンパイル時点で検出できない、というデメリットを背負うなぁ。
rubyやioみたいな言語と違って、変数が静的に宣言したクラスの束縛を受けるのだからそのメリットは享受しておいた方が、とか思ってしまう。
特に仕事ではね。