org.unitedfront2.dao.jdbc
クラス SimpleDaoSupport<D extends Domain>

java.lang.Object
  上位を拡張 org.unitedfront2.dao.jdbc.DaoSupport
      上位を拡張 org.unitedfront2.dao.jdbc.SimpleDaoSupport<D>
型パラメータ:
D - ドメインクラス
すべての実装されたインタフェース:
InitializingBean, Dao, DateDao, RowMapperFactory<D>, Registerable<D>, SimpleDeletable, SimpleFindable<D>, Updatable<D>
直系の既知のサブクラス:
AccessControlDaoImpl, AccountDaoImpl, BlogDaoImpl, CommentDaoImpl, CommunityDaoImpl, MailDaoImpl, MessageDaoImpl, ProfileDaoImpl, SimpleUserDaoImpl, ThreadDaoImpl

abstract class SimpleDaoSupport<D extends Domain>
extends DaoSupport
implements Registerable<D>, SimpleFindable<D>, Updatable<D>, SimpleDeletable, RowMapperFactory<D>

JDBC 用の抽象的な DAO です。ただひとつの主キーを持つテーブルに対するデータアクセス実装においては、 この抽象クラスを継承することで、基本的なメソッドを再利用できます。特に、テーブルのカラム名とドメインオブジェ クトのプロパティが一致する場合にはほとんどカスタマイズする必要がありません。一致しない場合であっても、 protected メソッドをオーバーライドすることでカスタマイズできます。

主キーを自動生成しない場合、サブクラスでは createRowMapper() をオーバーライドし、 Registerable.register(Object) の代わりに registerNoReturnKey(Domain) を利用します。

登録および更新の対象となる列名をカスタマイズする場合は、toColumnValueMap(Domain) をオーバーライドします。

作成者:
kurokkie

フィールドの概要
static String DEFAULT_PRIMARY_KEY_COLUMN_NAME
          プライマリーキー名のデフォルト値 (Id)
 
クラス org.unitedfront2.dao.jdbc.DaoSupport から継承されたフィールド
logger
 
コンストラクタの概要
SimpleDaoSupport()
           
 
メソッドの概要
 void afterPropertiesSet()
           
 ParameterizedRowMapper<D> createRowMapper()
          マッパーオブジェクトを生成します。
protected  SimpleJdbcInsert createSimpleJdbcInsert(DataSource dataSource)
          getTableName() を使ってテーブル名を、 getPrimaryKeyColumnName() を使って自動生成される主キーを設定します。
 void delete(int id)
          指定した主キーを持つデータを削除します。
 D find(int id)
          テーブル名は getTableName() から、主キー名は getPrimaryKeyColumnName() から取得しています。
protected abstract  Class<D> getDomainClass()
           
protected  DomainFactory getDomainFactory()
           
protected  String getPrimaryKeyColumnName()
          主キーとなるカラム名を取得します。
protected  String getTableName()
          RDBMS のテーブル名を返します。
 void register(D domain)
          このメソッドは、主キーが自動生成されることを前提としています。
protected  void registerNoReturnKey(D domain)
          完全なドメインオブジェクトを引数として渡し、新規のデータとして登録します。
protected  Map<String,Object> toColumnValueMap(D domain)
          ドメインオブジェクトを列名と値のマップに変換します。
 void update(D domain)
          この実装は、ドメインオブジェクトの主キーを持つ行が、ドメインオブジェクトが保持するプロパティの値で更新 されます。
 
クラス org.unitedfront2.dao.jdbc.DaoSupport から継承されたメソッド
getCurrentDate, getJdbcTemplate, getNamedParameterJdbcTemplate, getSimpleJdbcInsert, getSimpleJdbcTemplate, setDataSource
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

DEFAULT_PRIMARY_KEY_COLUMN_NAME

public static final String DEFAULT_PRIMARY_KEY_COLUMN_NAME
プライマリーキー名のデフォルト値 (Id)

関連項目:
定数フィールド値
コンストラクタの詳細

SimpleDaoSupport

SimpleDaoSupport()
メソッドの詳細

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
定義:
インタフェース InitializingBean 内の afterPropertiesSet
オーバーライド:
クラス DaoSupport 内の afterPropertiesSet
例外:
Exception

find

public D find(int id)
テーブル名は getTableName() から、主キー名は getPrimaryKeyColumnName() から取得しています。

定義:
インタフェース SimpleFindable<D extends Domain> 内の find
パラメータ:
id - 主キー
戻り値:
ドメインオブジェクト、見つからなければ null
関連項目:
getTableName(), createRowMapper(), getPrimaryKeyColumnName()

register

public void register(D domain)
このメソッドは、主キーが自動生成されることを前提としています。主キーを自動生成しない場合、このメソッド をオーバーライドし、registerNoReturnKey(Domain) を利用してください。

定義:
インタフェース Registerable<D extends Domain> 内の register
パラメータ:
domain - ドメインオブジェクト
関連項目:
createSimpleJdbcInsert(DataSource), getPrimaryKeyColumnName(), toColumnValueMap(Domain)

registerNoReturnKey

protected void registerNoReturnKey(D domain)
完全なドメインオブジェクトを引数として渡し、新規のデータとして登録します。このメソッドは主キーを自動生 成しません。このメソッドを利用する場合は合わせて createRowMapper() もオーバーライ ドする必要があります。

関連項目:
createSimpleJdbcInsert(DataSource), toColumnValueMap(Domain)

update

public void update(D domain)
この実装は、ドメインオブジェクトの主キーを持つ行が、ドメインオブジェクトが保持するプロパティの値で更新 されます。ドメインオブジェクトのプロパティが SQL 型で表現できない型である場合、この実装は正常に動 作しません。プロパティが Enum 型であった場合、自動的に文字列型として扱います。

定義:
インタフェース Updatable<D extends Domain> 内の update
パラメータ:
domain - ドメインオブジェクト
関連項目:
toColumnValueMap(Domain), getPrimaryKeyColumnName(), getTableName()

delete

public void delete(int id)
インタフェース SimpleDeletable の記述:
指定した主キーを持つデータを削除します。削除対象となるドメインオブジェクトのプロパティとなるドメインオブ ジェクトも 極力 削除されます。プロパティとなるドメインオブジェクトが他のドメイン オブジェクトからも参照されている場合などは削除されない可能性があります。

定義:
インタフェース SimpleDeletable 内の delete
パラメータ:
id - 主キー
関連項目:
getTableName(), getPrimaryKeyColumnName()

toColumnValueMap

protected Map<String,Object> toColumnValueMap(D domain)
ドメインオブジェクトを列名と値のマップに変換します。メソッド Registerable.register(Object), registerNoReturnKey(Domain), Updatable.update(Object) で使われていま す。

この実装では、テーブルとドメインオブジェクトの両方に共通するデータ項目を設定します。ドメインオブジェクト のプロパティが SQL 型で表現できない型である場合、この実装は正常に動作しません。プロパティが Enum 型であった場合、自動的に文字列として扱います。このメソッドは必要に応じてオーバー ライドしてください。

パラメータ:
domain - ドメインオブジェクト
戻り値:
列名と値のマップ

getTableName

protected String getTableName()
RDBMS のテーブル名を返します。この実装では、データアクセス実装が扱うドメインクラスのパッケージ部を 除いたクラス名を返します。必要に応じてサブクラスでオーバーライドしてください。内部ではドメイン生成クラ スを使ってテーブル名を作成しています。ドメイン生成クラスを設定しない場合、このメソッドをオーバーライド することは必須になります。

戻り値:
RDBMS のテーブル名

getPrimaryKeyColumnName

protected String getPrimaryKeyColumnName()
主キーとなるカラム名を取得します。この実装は DEFAULT_PRIMARY_KEY_COLUMN_NAME を返します。必要に応じてオーバーライドしてく ださい。

戻り値:
主キーとなるカラム名

createSimpleJdbcInsert

protected SimpleJdbcInsert createSimpleJdbcInsert(DataSource dataSource)
getTableName() を使ってテーブル名を、 getPrimaryKeyColumnName() を使って自動生成される主キーを設定します。

オーバーライド:
クラス DaoSupport 内の createSimpleJdbcInsert
パラメータ:
dataSource - DataSource
戻り値:
SimpleJdbcInsert
関連項目:
DaoSupport.createSimpleJdbcInsert(DataSource)

createRowMapper

public ParameterizedRowMapper<D> createRowMapper()
マッパーオブジェクトを生成します。

この実装では、カラムの値を、ResultSet.getObject(String) を使ってドメインオブジェ クトの対応するプロパティに設定しています。対応するプロパティがない場合は何もしません。 Enum 型のプロパティに対しては、文字列を Enum 型に変換して設定します。ドメ インオブジェクトの生成にはドメインファクトリを使用しています。このメソッドは必要に応じてサブクラスでオー バーライドしてください。

定義:
インタフェース RowMapperFactory<D extends Domain> 内の createRowMapper
戻り値:
マッパーオブジェクト

getDomainClass

protected abstract Class<D> getDomainClass()

getDomainFactory

protected DomainFactory getDomainFactory()


Copyright © 2007-2008 www.unitedfront2.org. All Rights Reserved.