Module jp.ecuacion.util.jpa
Package jp.ecuacion.util.jpa.dao
Class AbstractDao<T extends jp.ecuacion.lib.jpa.entity.EclibEntity>
java.lang.Object
jp.ecuacion.util.jpa.dao.AbstractSystematicDao<T>
jp.ecuacion.util.jpa.dao.AbstractDao<T>
public abstract class AbstractDao<T extends jp.ecuacion.lib.jpa.entity.EclibEntity>
extends AbstractSystematicDao<T>
本クラスでは、JPAの技術的な処理はAbstractSystematicDaoAtFwCmnに譲り、業務システムとして使用する、 業務を考慮した処理を定義する。
とはいえ、実質的に業務が考慮できているのは下記4つの方式のうち1.のみのため、それ以外は業務の考慮のないAPIであり、 業務の考慮のない親クラスのメソッドにてprotectedとして公開されている。
(詳細は親クラスを参照)
とはいえ、実質的に業務が考慮できているのは下記4つの方式のうち1.のみのため、それ以外は業務の考慮のないAPIであり、 業務の考慮のない親クラスのメソッドにてprotectedとして公開されている。
(詳細は親クラスを参照)
以下が本frameworkでサポートするDBアクセス方式。
- selectEntityByPk等の組み込み済みpublicメソッドと、...ByConditionsメソッドの使用(Criteria APIを内部的に使用)
- 自分でカスタマイズするcriteria query(本FWとしては、loggingとクエリ実行機能のみ提供)
- jpql.propertiesを読み込むjpql(prepared statement前提)
- nativesql.propertiesを読み込むnative sql(prepared statement前提)
下記のうち、1.の方式を使用するのが推奨。ただし、joinが絡むなど複雑な場合は2-4の使用も可。 2と3, 4では、criteria APIが独特で理解しにくいことから、3, 4を推奨とする。 3と4では、JPAの可搬性と、sqlが読めればjpqlもほぼ読めることから3を推奨とする。
以下、注意すべき事項。 ・1.については何も気にすることなく使用が可能。一番安全なため使用を推奨(記述が煩雑なので必ずしも使用しきれないのは理解するが) ・2、3、4については、グループ指定、論理削除の考慮をJPQLの中で行う必要がある
- See Also:
-
Field Summary
Fields inherited from class jp.ecuacion.util.jpa.dao.AbstractSystematicDao
daoUtil, slg, type -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract booleanvoiddeleteByPk(jakarta.persistence.EntityManager em, T e) 業務面が考慮された安全なdelete。protected intdeleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) protected intdeleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) protected intdeleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) protected intdeleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) protected intdeleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) protected intdeleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) protected intdeleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) protected intdeleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) protected abstract Stringprotected abstract Objectprotected abstract StringgetParamMapFromPk(String pkFieldName, Object pkValue) protected OrderItem[]pkのorderByのリスト:orderItem[]を生成。protected abstract booleanprotected abstract booleanprotected booleanincludesColumn(String field) SystemCommonBaseDaoで使用するメソッド。insertだが、既にremoveされたレコードが存在する場合はエラーとはせず、削除してからinsertする。voidinsertOrUpdateByPk(jakarta.persistence.EntityManager em, T e) insertかupdateかを意識せずに使用でき、かつ業務面も考慮されたメソッド。protected abstract booleanprotected abstract booleanprotected voidlogicalDeleteByPk(jakarta.persistence.EntityManager em, T e) 業務面が考慮された安全な論理削除。protected LongselectCountByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) protected LongselectCountByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) protected LongselectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) protected LongselectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) protected LongselectCountForBaseDao(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理;selectCount。protected TselectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) protected TselectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) protected TselectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) protected TselectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) protected TselectEntityByPkForBaseDao(jakarta.persistence.EntityManager em, String queryName, String pkFieldName, Object pkValue, boolean selectsForUpdate) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理:selectEntity。selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, OrderItem[] orderByList) selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, OrderItem[] orderByList, QueryOptionEnum[] queryOptions) selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList) selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList, QueryOptionEnum[] queryOptions) selectEntityListForBaseDao(jakarta.persistence.EntityManager em, String queryName, boolean selectsForUpdate) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理;selectEntityList。protected ObjectselectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) protected ObjectselectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) protected ObjectselectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) protected ObjectselectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) voidupdateByPk(jakarta.persistence.EntityManager em, T e) 業務面が考慮された安全なupdate。Methods inherited from class jp.ecuacion.util.jpa.dao.AbstractSystematicDao
getFieldPath, insertAll, isSpringJpa, selectContainerListWithJpqlFromProperties, selectContainerListWithSqlFromProperties, selectCountWithJpqlFromProperties, selectCountWithSqlFromProperties, selectEntityListWithJpqlFromProperties, selectEntityListWithSqlFromProperties, selectEntityWithJpqlFromProperties, selectEntityWithSqlFromProperties, selectEntityWithSqlFromProperties, selectListOfObjectsWithJpqlFromProperties, selectListOfObjectsWithSqlFromProperties, selectObjectListWithJpqlFromProperties, selectObjectListWithSqlFromProperties, selectObjectWithJpqlFromProperties, selectObjectWithSqlFromProperties, updateWithJpqlFromProperties, updateWithSqlFromProperties, validate
-
Constructor Details
-
AbstractDao
-
-
Method Details
-
isGroupDefined
protected abstract boolean isGroupDefined() -
confinesQueryToGroup
protected abstract boolean confinesQueryToGroup() -
getGroupFieldName
-
hasGroupFieldInTable
protected abstract boolean hasGroupFieldInTable() -
getGroupFieldValue
-
isLogicalDeleteFlagDefined
protected abstract boolean isLogicalDeleteFlagDefined() -
getLogicalDeleteFlagFieldInfo
-
hasLogicalDeleteFlagFieldInTable
protected abstract boolean hasLogicalDeleteFlagFieldInTable() -
insert
insertだが、既にremoveされたレコードが存在する場合はエラーとはせず、削除してからinsertする。 insertだとチェックができないので他のグループへの書き込みも許している。可能なら要改善。 -
logicalDeleteByPk
業務面が考慮された安全な論理削除。 本メソッドはdao内からの呼び出し用(=protected)とし、外部から呼ぶ際のメソッドはDB項目定義に沿って各システム毎に実装 -
updateByPk
業務面が考慮された安全なupdate。 PKを明示的に指定してupdateをかけるので、当然存在することを前提にupdateしていることからデータがない場合は例外を挙げる -
deleteByPk
業務面が考慮された安全なdelete。 PKを明示的に指定してdeleteをかけるので、当然存在することを前提にdeleteしていることから データがない場合は例外を挙げる -
deleteEntityByConditions
-
deleteEntityByConditions
protected int deleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) -
deleteEntityByConditions
protected int deleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) -
deleteEntityByConditions
protected int deleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) -
deleteEntityListByConditions
-
deleteEntityListByConditions
protected int deleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) -
deleteEntityListByConditions
protected int deleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap, QueryOptionEnum[] queryOptions) -
deleteEntityListByConditions
protected int deleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) -
insertOrUpdateByPk
insertかupdateかを意識せずに使用でき、かつ業務面も考慮されたメソッド。 処理効率がよくないので、明らかにどちらかがわかる場面では使用すべきではないが、 insertかupdateかを判別するためだけに新しい処理が増えるような場合は、便利さを優先し本処理を使用する。 -
getPkOrderByList
pkのorderByのリスト:orderItem[]を生成。 -
includesColumn
SystemCommonBaseDaoで使用するメソッド。共通処理のためここに定義しておく。 引数のfieldがentityに含まれているかを返す(entityのpkの中に含まれる場合もtrueを返すので注意) -
selectEntityByPkForBaseDao
protected T selectEntityByPkForBaseDao(jakarta.persistence.EntityManager em, String queryName, String pkFieldName, Object pkValue, boolean selectsForUpdate) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理:selectEntity。 -
selectEntityListForBaseDao
protected List<T> selectEntityListForBaseDao(jakarta.persistence.EntityManager em, String queryName, boolean selectsForUpdate) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理;selectEntityList。 -
selectCountForBaseDao
protected Long selectCountForBaseDao(jakarta.persistence.EntityManager em, String queryName, Map<String, Object> paramMap) BaseDaoにあらかじめ定義されたDBアクセス用メソッドたちの共通処理;selectCount。 -
getParamMapFromPk
-
selectEntityByConditions
-
selectEntityByConditions
protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) -
selectEntityByConditions
-
selectEntityByConditions
protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) -
selectEntityListByConditions
-
selectEntityListByConditions
protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList) -
selectEntityListByConditions
-
selectEntityListByConditions
protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList, QueryOptionEnum[] queryOptions) -
selectCountByConditions
-
selectCountByConditions
protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) -
selectCountByConditions
-
selectCountByConditions
protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions) -
selectObjectByConditions
-
selectObjectByConditions
protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions) -
selectObjectByConditions
-
selectObjectByConditions
protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions)
-