package lecture.jdbc;

/**
 * Entityクラス生成・Entityオブジェクト生成の問題点 JDBC Java
 *
 * ・課題:
 *   ・数あるテーブルのEntityクラスを延々とsetter/getterを書いていくなど大変なので自動化したい
 *   ・insertのパラメータを設定する処理やResultSetからEntityを生成する処理を延々と書いていくのは大変なので自動化したい
 *
 * ・これらの課題は、原理的には次のように解決できる
 *   ・DBからメタデータすなわち次のようなデータを取得することができる
 *     ・DBにどのようなテーブルがあるか
 *     ・テーブルにどのようなカラムがあるか
 *       ・名称、タイプ、長さ、コメント..
 *     ・テーブルのキー
 *   ・上記を取得すれば、EntityのJavaソースを生成することができる
 *     ・注、ORACLEでは、テーブルのコメント、カラムのコメントは取得できず、独自SQLを実行する必要がある
 *   ・ResultSetからメタデータすなわち次のようなデータを取得することができる
 *     ・selectされた値のカラム名、別名、そのデータが属するテーブル名
 *       ・注、カラムのコメントは取得できない⇒テーブルのメタデータと燐寸んする必要がある
 *       ・注、ORACLEとPostgreSQLは、別名と元のテーブル名が取得できない ⇒ 非常に困った問題
 *   ・上記を利用すれば、insertのパラメータ設定やResultSet空のEntity生成を自動化することができる
 * ・すると個別のDAOは不要となり汎用DAOだけで用がたりることになる
 *   ・固有の処理を実装したい場合には、汎用DAOをextendsする
 *
 * ・これらは「原理的には可能である」という話である
 * ・実現するにはいくつかの問題があるが、大きなものはカラム名とフィールド名の対応の問題がある
 *
 * ・カラムの名称とフィールド名称の対応
 *   ・カラム名称=フィールド名称ならばよいが多くの場合はそうではない
 *   ・カラム名をあるルールに従いまたは個別に指定してフィールド名にする方法?
 *   ・パラメータ設定やEntityオブジェクト生成時に、どのカラムとフィールドが対応しているのか判定する方法?
 *
 * ・Entityクラス生成プログラムで次のように対応する
 *   ・カラム名⇒フィールド名の変換
 *     ・典型的ないくつかのルールを実装する
 *     ・個別にフィールド名を指定できるようにしておく
 *   ・Entityクラスにカラム名とフィールド名の対応を生成しておく
 *   ・注、実用的には、フィールドにしないカラム、カラムにないフィールド定義、フィールドタイプを指定できるなどの機能が必要
 */
class EntityProblem {

}
//---------------------------------------------------
//・目次 - JDBC
//http://blogs.yahoo.co.jp/artery2020/40575568.html
//・目次 - Java入門
//http://blogs.yahoo.co.jp/artery2020/39975776.html
//・目次 - ビジネスパーソンの常識と非常識
//http://blogs.yahoo.co.jp/artery2020/39728331.html
//・目次 - 論理・発想・思考についての考察と鍛え方
//http://blogs.yahoo.co.jp/artery2020/39657784.html
//・目次 - 単なる雑談
//http://blogs.yahoo.co.jp/artery2020/40599073.html
//---------------------------------------------------