これまで、ユーザー登録、つまりデータベースにユーザーを追加するという本質的な問題には触れていませんでした。では、この要件に対処しましょう。
まず、データベースアクセスに使用されるテクノロジーを決定する必要があります。ここでは、Hibernate、JPA、または JDBC を選択できます。ほとんどのアプリケーションはデータベース アクセス テクノロジとして Hibernate を使用していると思いますが、他のアプリケーションでは JPA を選択することもありますが、ここでは JDBC を選択します。理由は比較的単純で、根底にあるものはより複雑に見えますが、一度マスターすれば、内容が少ないため、比較的簡単にマスターできます。この O-R マッピング モデルには、多くの抽象的な概念と詳細が追加されています。通常、これらのアーキテクチャの氷山の一角しか見ていませんが、氷山の下にあるものをマスターしたい場合、その難易度は JDBC を直接マスターするよりも数段難しくなります。
さらに、テスト駆動開発アーキテクチャにより、他のアーキテクチャに変換したい場合は、テストケースの保証の下で、既存のコードをリファクタリングすることができます。
まず、DAO モードを使用してデータベース アクセス インターフェイス クラス UserDao を定義します。コードは次のとおりです。
public interface UserDao { public long registerUser(Map<String, Object> userInfo); }
一般的に言えば、Mysql データベースを使用するため、Dao 実装クラス UserMysqlDao を定義します。コードは次のとおりです。 :
public class UserMysqlDao implements UserDao { @Override public long registerUser(Map<String, Object> userInfo) { // TODO Auto-generated method stub return 0; }
もちろん、ユーザーが使用するデータベースを決定して、対応する実装クラスをインスタンス化することは望ましくありません。これを行うには、ファクトリ パターンを採用し、DaoFactory クラスを導入する必要があります。コードは次のとおりです。
上記のコードからわかるように、呼び出し元のみ DaoFactory.getUserDao() を呼び出して実装クラスを取得する必要があります。
以下はデータベース接続の問題です。Jboss などのアプリケーションサーバーで実行する場合はデータベース接続プールを使用し、単体テストでは DriverManager を使用する必要があるため、上記の状況を処理するために DataSource カプセル化クラス JdbcDs を定義する必要があります。コードは次のとおりです:
public class DaoFactory { public static UserDao getUserDao() { UserDao dao = null; switch (dbms) { case "mysql": dao = new UserMysqlDao(); break; } return dao; } public static String getDbms() { return dbms; } public static void setDbms(String dbms) { DaoFactory.dbms = dbms; } private static String dbms = "mysql"; }単体テストを行うときは、iDebug を 1 に設定するだけです。それ以外の場合は、データベース接続プールが使用されます。
すべての準備作業が完了したら、データベース機能の開発を正式に実行できます。