私は最初のjava/DB/webアプリを書いています。私はjava/javascript / css / htmlを初めて使用するので、このプロジェクトは私にとって学習体験です。このアプリは、DBからの結果をWebページに表示し、ユーザーがWebページからDBに情報を編集/追加できるようにします。
私はSpringを使用しており、プログラムの一般的なフローは次のとおりです。Webページ->いくつかのJavaScript->リファレンスRESTサービス->リファレンスサービス-> DAO-> DTO-> DB
問題は、アプリが現在、クエリごとに異なるDAOとDTOを持っていることです。すべてのクエリを処理できる単一のDAOとDTOが存在するように、プログラムを簡略化したいと思います。
2〜10個の異なるスロットを処理できるDTOを作成しようとしています。各スロットに、関連付けられた番号ではなく名前を付けたいと思います。また、スロットの名前はDBからの返却で設定する必要があると思います。次に、DAOの行にデータをマッピングする信頼できる方法が必要です。私が何を扱っているかを示すために、いくつかの簡単なサンプルコードを投稿します。
@Repository
public class DecisionLevelDaoImpl implements DecisionLevelDao {
private JdbcTemplate jdbcTemplate;
@Autowired
public DecisionLevelDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
private static String FIND_ACTIVE_DECISION_LEVEL = DaoHelper
.loadResourceToString("queries/DecisionLevel_FindActive.sql");
@Override
public List<DecisionLevelDTO> findActiveDecisionLevel() {
return jdbcTemplate.query(FIND_ACTIVE_DECISION_LEVEL, new DecisionLevelDTORowMapper());
}
private class DecisionLevelDTORowMapper implements RowMapper<DecisionLevelDTO> {
@Override
public DecisionLevelDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
String levelCd = rs.getString("LevelCd");
String levelName = rs.getString("LevelName");
String levelInstruct = rs.getString("LevelInstruct");
String active = (rs.getBoolean("active") ? "Y" : "N");
String printOrder = Integer.toString(rs.getInt("PrintOrder"));
String lastUpdUser = rs.getString("LastUpdUser");
return new DecisionLevelDTO (levelCd, levelName,
levelInstruct, active, printOrder,lastUpdUser);
}
}
DTOは次のとおりです。
import org.codehaus.jackson.annotate.JsonProperty;
public class DecisionLevelDTO {
@JsonProperty("levelCd")
private String levelCd;
@JsonProperty("levelName")
private String levelName;
@JsonProperty("levelInstruct")
private String levelInstruct;
@JsonProperty("active")
private String active;
@JsonProperty("printOrder")
private String printOrder;
@JsonProperty("lastUpdUser")
private String lastUpdUser;
public DecisionLevelDTO () { }
public DecisionLevelDTO (String levelCd, String levelName,
String levelInstruct, String active, String printOrder,
String lastUpdUser) {
super();
this.levelCd = levelCd;
this.levelName = levelName;
this.levelInstruct = levelInstruct;
this.active = active;
this.printOrder = printOrder;
this.lastUpdUser = lastUpdUser;
}
現在、約25のDaoと25のDTOがあります。これはひどく繰り返されるように思われるので、より保守しやすい方法を見つけたいと思います。
私は自分のコードを書く人を探していません。私はこれを学んでいるので、無料のコードはまったく役に立ちません。私が見るすべてのチュートリアルには、単一のクエリからの結果を返す単一のDAOと単一のDTOがあります。
これがこの種の質問に対して間違ったフォーラムである場合は申し訳ありません。