|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.unitedfront2.dao.jdbc.DaoSupport
org.unitedfront2.dao.jdbc.SimpleDaoSupport<D>
D - ドメインクラスabstract class SimpleDaoSupport<D extends Domain>
JDBC 用の抽象的な DAO です。ただひとつの主キーを持つテーブルに対するデータアクセス実装においては、
この抽象クラスを継承することで、基本的なメソッドを再利用できます。特に、テーブルのカラム名とドメインオブジェ
クトのプロパティが一致する場合にはほとんどカスタマイズする必要がありません。一致しない場合であっても、
protected メソッドをオーバーライドすることでカスタマイズできます。
主キーを自動生成しない場合、サブクラスでは createRowMapper() をオーバーライドし、
Registerable.register(Object) の代わりに registerNoReturnKey(Domain)
を利用します。
登録および更新の対象となる列名をカスタマイズする場合は、toColumnValueMap(Domain)
をオーバーライドします。
| フィールドの概要 | |
|---|---|
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 |
| フィールドの詳細 |
|---|
public static final String DEFAULT_PRIMARY_KEY_COLUMN_NAME
| コンストラクタの詳細 |
|---|
SimpleDaoSupport()
| メソッドの詳細 |
|---|
public void afterPropertiesSet()
throws Exception
InitializingBean 内の afterPropertiesSetDaoSupport 内の afterPropertiesSetExceptionpublic D find(int id)
getTableName() から、主キー名は
getPrimaryKeyColumnName() から取得しています。
SimpleFindable<D extends Domain> 内の findid - 主キー
nullgetTableName(),
createRowMapper(),
getPrimaryKeyColumnName()public void register(D domain)
registerNoReturnKey(Domain) を利用してください。
Registerable<D extends Domain> 内の registerdomain - ドメインオブジェクトcreateSimpleJdbcInsert(DataSource),
getPrimaryKeyColumnName(),
toColumnValueMap(Domain)protected void registerNoReturnKey(D domain)
createRowMapper() もオーバーライ
ドする必要があります。
createSimpleJdbcInsert(DataSource),
toColumnValueMap(Domain)public void update(D domain)
Enum 型であった場合、自動的に文字列型として扱います。
Updatable<D extends Domain> 内の updatedomain - ドメインオブジェクトtoColumnValueMap(Domain),
getPrimaryKeyColumnName(),
getTableName()public void delete(int id)
SimpleDeletable の記述:
SimpleDeletable 内の deleteid - 主キーgetTableName(),
getPrimaryKeyColumnName()protected Map<String,Object> toColumnValueMap(D domain)
Registerable.register(Object),
registerNoReturnKey(Domain), Updatable.update(Object) で使われていま
す。
この実装では、テーブルとドメインオブジェクトの両方に共通するデータ項目を設定します。ドメインオブジェクト
のプロパティが SQL 型で表現できない型である場合、この実装は正常に動作しません。プロパティが
Enum 型であった場合、自動的に文字列として扱います。このメソッドは必要に応じてオーバー
ライドしてください。
domain - ドメインオブジェクト
protected String getTableName()
protected String getPrimaryKeyColumnName()
DEFAULT_PRIMARY_KEY_COLUMN_NAME を返します。必要に応じてオーバーライドしてく
ださい。
protected SimpleJdbcInsert createSimpleJdbcInsert(DataSource dataSource)
getTableName() を使ってテーブル名を、
getPrimaryKeyColumnName() を使って自動生成される主キーを設定します。
DaoSupport 内の createSimpleJdbcInsertdataSource - DataSource
SimpleJdbcInsertDaoSupport.createSimpleJdbcInsert(DataSource)public ParameterizedRowMapper<D> createRowMapper()
この実装では、カラムの値を、ResultSet.getObject(String) を使ってドメインオブジェ
クトの対応するプロパティに設定しています。対応するプロパティがない場合は何もしません。
Enum 型のプロパティに対しては、文字列を Enum 型に変換して設定します。ドメ
インオブジェクトの生成にはドメインファクトリを使用しています。このメソッドは必要に応じてサブクラスでオー
バーライドしてください。
RowMapperFactory<D extends Domain> 内の createRowMapperprotected abstract Class<D> getDomainClass()
protected DomainFactory getDomainFactory()
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||