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として公開されている。
(詳細は親クラスを参照)

以下が本frameworkでサポートするDBアクセス方式。

  1. selectEntityByPk等の組み込み済みpublicメソッドと、...ByConditionsメソッドの使用(Criteria APIを内部的に使用)
  2. 自分でカスタマイズするcriteria query(本FWとしては、loggingとクエリ実行機能のみ提供)
  3. jpql.propertiesを読み込むjpql(prepared statement前提)
  4. 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:
  • Constructor Details

  • Method Details

    • isGroupDefined

      protected abstract boolean isGroupDefined()
    • confinesQueryToGroup

      protected abstract boolean confinesQueryToGroup()
    • getGroupFieldName

      protected abstract String getGroupFieldName()
    • hasGroupFieldInTable

      protected abstract boolean hasGroupFieldInTable()
    • getGroupFieldValue

      protected abstract Object getGroupFieldValue()
    • isLogicalDeleteFlagDefined

      protected abstract boolean isLogicalDeleteFlagDefined()
    • getLogicalDeleteFlagFieldInfo

      @Nonnull protected abstract String getLogicalDeleteFlagFieldInfo()
    • hasLogicalDeleteFlagFieldInTable

      protected abstract boolean hasLogicalDeleteFlagFieldInTable()
    • insert

      public Object insert(jakarta.persistence.EntityManager em, T e)
      insertだが、既にremoveされたレコードが存在する場合はエラーとはせず、削除してからinsertする。 insertだとチェックができないので他のグループへの書き込みも許している。可能なら要改善。
    • logicalDeleteByPk

      protected void logicalDeleteByPk(jakarta.persistence.EntityManager em, T e)
      業務面が考慮された安全な論理削除。 本メソッドはdao内からの呼び出し用(=protected)とし、外部から呼ぶ際のメソッドはDB項目定義に沿って各システム毎に実装
    • updateByPk

      public void updateByPk(jakarta.persistence.EntityManager em, T e)
      業務面が考慮された安全なupdate。 PKを明示的に指定してupdateをかけるので、当然存在することを前提にupdateしていることからデータがない場合は例外を挙げる
    • deleteByPk

      public void deleteByPk(jakarta.persistence.EntityManager em, T e)
      業務面が考慮された安全なdelete。 PKを明示的に指定してdeleteをかけるので、当然存在することを前提にdeleteしていることから データがない場合は例外を挙げる
    • deleteEntityByConditions

      protected int deleteEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap)
    • 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

      protected int deleteEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap)
    • 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

      public void insertOrUpdateByPk(jakarta.persistence.EntityManager em, T e)
      insertかupdateかを意識せずに使用でき、かつ業務面も考慮されたメソッド。 処理効率がよくないので、明らかにどちらかがわかる場面では使用すべきではないが、 insertかupdateかを判別するためだけに新しい処理が増えるような場合は、便利さを優先し本処理を使用する。
    • getPkOrderByList

      protected OrderItem[] getPkOrderByList()
      pkのorderByのリスト:orderItem[]を生成。
    • includesColumn

      protected boolean includesColumn(String field)
      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

      protected Map<String,Object> getParamMapFromPk(String pkFieldName, Object pkValue)
    • selectEntityByConditions

      protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap)
    • selectEntityByConditions

      protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions)
    • selectEntityByConditions

      protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap, QueryOptionEnum[] queryOptions)
    • selectEntityByConditions

      protected T selectEntityByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions)
    • selectEntityListByConditions

      protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap, OrderItem[] orderByList)
    • selectEntityListByConditions

      protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList)
    • selectEntityListByConditions

      protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap, OrderItem[] orderByList, QueryOptionEnum[] queryOptions)
    • selectEntityListByConditions

      protected List<T> selectEntityListByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, OrderItem[] orderByList, QueryOptionEnum[] queryOptions)
    • selectCountByConditions

      protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap)
    • selectCountByConditions

      protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions)
    • selectCountByConditions

      protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap, QueryOptionEnum[] queryOptions)
    • selectCountByConditions

      protected Long selectCountByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions)
    • selectObjectByConditions

      protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap)
    • selectObjectByConditions

      protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions)
    • selectObjectByConditions

      protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, Map<String,Object> paramMap, QueryOptionEnum[] queryOptions)
    • selectObjectByConditions

      protected Object selectObjectByConditions(jakarta.persistence.EntityManager em, String queryName, QueryCondition[] queryConditions, QueryOptionEnum[] queryOptions)