public class BatchUpdateSupportImpl extends Object implements BatchUpdateSupport
本クラスを利用すことでUpdateDAOのバッチ更新処理の実行をSqlID毎に整列された状態で行うことができる。
SqlIDでソートすることでJDBCのPreparedStatement#executeBatchの実行回数を減らせる事により性能に寄与する。
sortメソッドを実行せずにSQLを実行した場合は、初回に追加したSQL-IDの順が維持される。
※マルチスレッドセーフではないため複数スレッドで利用する場合は、各スレッドごとに別インスタンスを生成すること。
UpdateDAO
修飾子とタイプ | フィールドと説明 |
---|---|
protected Map<String,Queue<SqlHolder>> |
batchSqlsMap
バッチ実行SQLを保持する.
|
protected Comparator<String> |
comparator
SqlIDをソートする時に使用するComparator
|
protected AtomicLong |
count
バッチ実行SQL登録件数
|
protected boolean |
sortMode
ソートフラグ
|
protected UpdateDAO |
updateDAO
UpdateDAO
|
ERROR_UNKNOWN_SQL_ID, ERROR_UPDATE_DAO_IS_NULL
コンストラクタと説明 |
---|
BatchUpdateSupportImpl()
バッチ更新サポートクラスコンストラクタ.
|
BatchUpdateSupportImpl(UpdateDAO updateDAO)
バッチ更新サポートクラスコンストラクタ.
|
BatchUpdateSupportImpl(UpdateDAO updateDAO,
Comparator<String> comparator)
バッチ更新サポートクラスコンストラクタ.
|
BatchUpdateSupportImpl(UpdateDAO updateDAO,
String... sqlIdOrder)
バッチ更新サポートクラスコンストラクタ.
|
修飾子とタイプ | メソッドと説明 |
---|---|
void |
addBatch(String sqlID,
Object bindParams)
バッチ実行用SQLを追加する。
|
void |
clear()
バッチ実行SQLリストの内容を削除する。
|
int |
executeBatch()
バッチ実行を行う。
|
int |
executeBatch(UpdateDAO updateDAO)
バッチ実行を行う。
|
int |
executeBatch(UpdateDAO updateDAO,
Comparator<String> comparator)
バッチ実行を行う。
|
protected int |
executeBatch(UpdateDAO updateDAO,
Comparator<String> comparator,
String[] sqlIdOrder)
バッチ実行を行う。
|
int |
executeBatch(UpdateDAO updateDAO,
String... sqlIdOrder)
バッチ実行を行う。
|
List<SqlHolder> |
getSqlHolderList()
SQL-IDで整列されたSqlHolderリストを取得する。
|
List<SqlHolder> |
getSqlHolderList(Comparator<String> comparator)
SQL-IDで整列されたSqlHolderリストを取得する。
|
protected List<SqlHolder> |
getSqlHolderList(Comparator<String> comparator,
String[] sqlIdOrder)
SQL-IDで整列されたSqlHolderリストを取得する。
|
List<SqlHolder> |
getSqlHolderList(String... sqlIdOrder)
SQL-IDで整列されたSqlHolderリストを取得する。
|
long |
size()
バッチ実行SQLリストの登録件数を取得する。
|
void |
sort()
バッチ実行SQLリストのソートを行う。
|
void |
sort(Comparator<String> comparator)
バッチ実行SQLリストのソートを行う。
|
protected UpdateDAO updateDAO
protected volatile Comparator<String> comparator
protected volatile boolean sortMode
protected volatile AtomicLong count
public BatchUpdateSupportImpl()
public BatchUpdateSupportImpl(UpdateDAO updateDAO)
updateDAO
- UpdateDAOpublic BatchUpdateSupportImpl(UpdateDAO updateDAO, Comparator<String> comparator)
updateDAO
- UpdateDAOcomparator
- Comparator<String>public void addBatch(String sqlID, Object bindParams)
BatchUpdateSupport
addBatch
インタフェース内 BatchUpdateSupport
sqlID
- StringbindParams
- Objectpublic int executeBatch()
BatchUpdateSupport
バッチ実行が成功した場合は、保持しているバッチ実行SQLリストの削除を行う。
本メソッドで実行する場合は、コンストラクタ引数でUpdateDAOを渡しておくこと。
UpdateDAOがコンストラクタ引数で渡されていない場合は、-100が返却される。
executeBatch
インタフェース内 BatchUpdateSupport
UpdateDAO
public int executeBatch(UpdateDAO updateDAO)
BatchUpdateSupport
バッチ実行が成功した場合は、保持しているバッチ実行SQLリストの削除を行う。
本メソッドで実行する場合は、コンストラクタ引数で渡されたUpdateDAOは使用されない。
UpdateDAOがnullの場合は、-100が返却される。
executeBatch
インタフェース内 BatchUpdateSupport
updateDAO
- UpdateDAOUpdateDAO
public int executeBatch(UpdateDAO updateDAO, Comparator<String> comparator)
BatchUpdateSupport
バッチ実行が成功した場合は、保持しているバッチ実行SQLリストの削除を行う。
本メソッドで実行する場合は、コンストラクタ引数で渡されたUpdateDAOは使用されない。
UpdateDAOがnullの場合は、-100が返却される。
Comparatorを渡すことによりSQL実行順序順序を制御できる。
※Comparatorを渡した場合は必ずソートが行われる。Comparatorの大小判断に基づき、昇順でソートが行われる。
executeBatch
インタフェース内 BatchUpdateSupport
updateDAO
- UpdateDAOcomparator
- Comparator<String>UpdateDAO
public int executeBatch(UpdateDAO updateDAO, String... sqlIdOrder)
BatchUpdateSupport
バッチ実行が成功した場合は、保持しているバッチ実行SQLリストの削除を行う。
本メソッドで実行する場合は、コンストラクタ引数で渡されたUpdateDAOは使用されない。
UpdateDAOがnullの場合は、-100が返却される。
第二引数以降に実行するSQL-IDを順番に設定することによりSQL実行順序を制御できる。
sqlIdOrderにSQL-IDを指定した場合は、必ずその順番でSQLが実行される。
また、その際はsqlIdOrderに指定されていないSQL-IDが存在した場合は実行されずに-200が返却される。
executeBatch
インタフェース内 BatchUpdateSupport
updateDAO
- UpdateDAOsqlIdOrder
- SQL-IDの実行順序を指定するUpdateDAO
protected int executeBatch(UpdateDAO updateDAO, Comparator<String> comparator, String[] sqlIdOrder)
updateDAO
- UpdateDAOcomparator
- Comparator<String>sqlIdOrder
- SQL-IDの実行順序を指定するpublic void sort()
BatchUpdateSupport
executeBatchやgetSqlHolderListを実行する前に本メソッドを実行することで、
SQLの実行順序をSQL-IDの昇順に並び替えることができる。
※本メソッド実行タイミングで実際に内部でソートが行われるかどうかは規定しない
sort
インタフェース内 BatchUpdateSupport
public void sort(Comparator<String> comparator)
BatchUpdateSupport
executeBatchやgetSqlHolderListを実行する前に本メソッドを実行することで、
SQLの実行順序をComparatorに従って並び替えることができる。
Comparatorを渡すことによりSQLの並び替え順序を制御できる。
(※Comparatorを渡した場合は必ずソートが行われる。Comparatorの大小判断に基づき、昇順でソートが行われる。)
※本メソッド実行タイミングで実際に内部でソートが行われるかどうかは規定しない
sort
インタフェース内 BatchUpdateSupport
comparator
- Comparator<String>public void clear()
BatchUpdateSupport
保持しているバッチ実行SQLリストの削除を行う。
clear
インタフェース内 BatchUpdateSupport
public long size()
BatchUpdateSupport
size
インタフェース内 BatchUpdateSupport
public List<SqlHolder> getSqlHolderList()
BatchUpdateSupport
保持しているバッチ実行SQLリストをSQL-ID順に整列したリストを返却する。
※本メソッドを実行しても保持しているバッチ実行SQLリストは削除されない。
getSqlHolderList
インタフェース内 BatchUpdateSupport
public List<SqlHolder> getSqlHolderList(Comparator<String> comparator)
BatchUpdateSupport
保持しているバッチ実行SQLリストをSQL-ID順に整列したリストを返却する。
※本メソッドを実行しても保持しているバッチ実行SQLリストは削除されない。
Comparatorを渡すことによりSQLの並び替え順序を制御できる。
※Comparatorを渡した場合は必ずソートが行われる。Comparatorの大小判断に基づき、昇順でソートが行われる。
getSqlHolderList
インタフェース内 BatchUpdateSupport
comparator
- Comparator<String>public List<SqlHolder> getSqlHolderList(String... sqlIdOrder)
BatchUpdateSupport
保持しているバッチ実行SQLリストをSQL-ID順に整列したリストを返却する。
※本メソッドを実行しても保持しているバッチ実行SQLリストは削除されない。
実行するSQL-IDを順番に設定することにより取得すSqlHolderリストの順序を制御できる。
sqlIdOrderにSQL-IDを指定した場合は、必ずその順番でSQLが並び替えられる。
また、その際はsqlIdOrderに指定されていないSQL-IDが存在した場合はnullが返却される。
getSqlHolderList
インタフェース内 BatchUpdateSupport
sqlIdOrder
- SQL-IDの実行順序を指定するprotected List<SqlHolder> getSqlHolderList(Comparator<String> comparator, String[] sqlIdOrder)
comparator
- Comparator<String>sqlIdOrder
- SQL-IDの実行順序を指定するCopyright © 2014 NTT DATA Corporation.