谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

なぜか、ProcedureHandlerImplをリファクタ中。

ストアドプロシージャの戻り値にDtoを使えるようにするために、
自前でProcedureHandlerImplを作成しているんですが、
既存のソースが、結構、なんていうか、ざっくり作ったというか・・・


S2Daoの、テーブルへの対応は丁寧に作りこんである感じがしますが、
ストアド対応は、
ぶっちゃけ、愛が足りないなと思いました。


なので、機能追加をする前に、ちょっとリファクタをしています。

  • DatabaseMetaData#getProcedureColumnsのResultSetから、columnType、columnName、dataType、typeNameを個別の変数にせず、1クラスにまとめる。
  • 戻り値のhandle用に、ProcedureResultHandlerを作成する。(ResultSetHandlerのストアド版です)

と言った感じ。


局所的な切り出しですが、こんな感じ。

while (rs.next()) {
	int columnType = rs.getInt(5);
	int dataType = rs.getInt(6);

	ProcedureColumnDescriptor pcd = new ProcedureColumnDescriptor();
	pcd.setColumnName(rs.getString(4));
	pcd.setColumnType(columnType);
	pcd.setDataType(dataType);
	pcd.setTypeName(rs.getString(7));
	columnDescriptorList.add(pcd);

小さな変更ですが、S2Dao本体にフィードバックしたいところ。


ちなみに、ProcedureResultHandlerは、既存ものを参考に作った

  • MapProcedureResultHandler
  • ObjectProcedureResultHandler

に加えて

  • BeanProcedureResultHandler

を追加する予定です。


そして、これらのHandlerの中で、STRUCTやARRAYに対応します。