GenericRepository.java

package io.extact.rms.application.persistence;

import java.util.List;

import jakarta.validation.Valid;

import io.extact.rms.platform.validate.ValidateParam;

/**
 * 永続先に依らないリポジトリの共通操作
 *
 * @param <T> エンティティの型
 */
public interface GenericRepository<T> {

    /**
     * IDのエンティティを取得する。
     *
     * @param id ID
     * @return エンティティ。該当なしはnull
     */
    T get(int id);

    /**
     * 永続化されているエンティティを全件取得する
     *
     * @return エンティティの全件リスト。該当なしは空リスト
     */
    List<T> findAll();

    /**
     * エンティティを追加する。
     * 実装クラスもしくはメソッドに{@link ValidateParam}をアノテートすることでメソッド実行前に
     * {@link Valid}によりオブジェクトのValidationが実行される。
     *
     * @param entity エンティティ
     */
    void add(T entity);

    /**
     * エンティティを更新する。
     *
     * @param entity 更新内容
     * @return 更新後エンティティ。更新対象が存在しない場合はnull
     */
    T update(T entity);

    /**
     * エンティティを削除する。
     *
     * @param entity 削除エンティティ
     */
    void delete(T entity);

    /**
     * コンフィグ定数
     */
    static class ApiType {
        public static final String PROP_NAME ="persistence.apiType";
        public static final String FILE = "file";
        public static final String JPA = "jpa";
    }
}