Java (Web) アプリケーションでのデータベースの DAO 実装に取り組んでいます。ちょっとした問題に遭遇したのは私だけです。
私の現在のコード:
Account.java:
package beans;
public class Account {
private int accountId;
private String name;
private String password;
private String email;
public Account() {
}
public Account(final String name, final String password, final String email) {
this.name = name;
this.password = password;
this.email = email;
}
public int getAccountId() {
return accountId;
}
public void setAccountId(int accountId) {
this.accountId = accountId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
DAO.java:
package dao;
import java.util.Collection;
public interface DAO<T> {
public int insert(T t);
public boolean update(T t);
public T get();
public Collection<T> search();
public boolean delete(T t);
}
AccountDAO.java:
package dao;
import beans.Account;
import java.util.Collection;
public class AccountDAO implements DAO<Account> {
@Override
public int insert(Account t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean update(Account t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Account get() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Collection<Account> search() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean delete(Account t) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
DAO
問題は、既にインターフェイスでSQL 文字列を使用したくないと確信しているということですが、どのようget()
にsearch()
適切に実装するかという問題があります。
get()
これは一般的なインターフェイスであるため、まだ列名を操作することはできません。インターフェイスからメソッドを削除する必要がない限り、それらが実装されるように、search()
メソッドをインターフェイス内に保持したいと思います。
私の提案する提案は、クラス T の範囲または完全に入力されていないオブジェクトで検索することです。したがって、name=x のアカウントを取得する場合は、次のようなコードになります。
AccountDAO accountDAO = DAOFactory.getAccountDAO();
Account result = accountDAO.get(new Account(x, null, null));
しかし、これが最善の解決策であるかどうかはわかりません。助けてください。
よろしく。