私は自分のスキルを向上させるためにjavaSEの小さなアプリケーションを開発しています。だから私はいくつかのメソッドregisterUser(ユーザーユーザー)、addAmount(長いaccountId)のようなビジネスサービス(BSさらに)があります。 BSはdaoを使用します。 BSがWSまたは他のインタフェース要素から呼び出されると仮定します。DAOを複数のテーブルに使用できますか?
public interface UserDao {
User getUserByUsername(String username);
void saveUser(User user);
}
public interface AccountDao {
void saveAccount(Account account);
Account getAccountByUserId(Long userId);
}
私のBSが
public class FastAccountServiceImpl implements FastAccountService{
private UserDao userDao;
private AccountDao accountDao;
public void registerUser(User user, Account account) throws Exception {
if (user.getUsername() == null || user.getUsername().isEmpty()) {
throw new Exception("all params are mandatory");
}
if (userDao.getUserByUsername(user.getUsername()) != null) {
throw new Exception("This user exists");
}
userDao.saveUser(user);
accountDao.saveAccount(account);
}
public void withdrawAmount(Double amount, Long userId) throws Exception {
if (amount == null || userId == null) {
throw new Exception("amount and userId are mandatory");
}
Account account = accountDao.getAccountByUserId(userId);
if (account.getAmount() == null || account.getAmount().compareTo(amount) < 1) {
throw new Exception("Insufficient amount in account");
}......
}}
だから私の最初の質問は、私がヌルなどのためのparamsをチェックする必要がありますされ
次のようになります。私は、次のDAOを持っていますか? BS? 2番目の質問は、なぜ私たちはすべてのテーブルのためのDAOを分離する必要がありますか?すべてのテーブルに対して1つのDAOを作成できますか?だからBSにはただ1つのDAOだけがあります。このDAOは以下に示される:public interface MagicDao {
User getUserByUsername(String username);
void saveUser(User user);
void saveAccount(Account account);
Account getAccountByUserId(Long userId);
}
これは、より良い質問かもしれ - あなたは
Exception
を投げている場所でIllegalArgumentException
を使用することができところでStackExchang'es [ソフトウェアエンジニアリング](https://softwareengineering.stackexchange.com)のサイトでは、ガイドラインに従うようにルールとヘルプセンターを必ず確認してください。 –
@DanielBickler他のサイトを参照しているときは、[クロスポストが嫌になっている](https://meta.stackexchange.com/tags/cross-posting/info) – gnat
@ignat that sense ..私はこの質問が、トピックや意見に基づいているので、クロス・ポスティングではないと考えました。それは間違っていた? –