У меня есть ситуация, когда я думаю, я должен создать DAO для каждого объекта или для использования.DAO на сущность или в случае использования
У меня есть таблица «пользователь», которая хранит регистрационную информацию пользователей.
create table user (user_id varchar(50) not null primary key, password varchar(50))
У меня есть таблица «user_login_history», который хранит историю, сколько раз логин пользователя в системе.
create table user_login_history (user_login_history_id int not null identity(1,1) primary key, user_id varchar(50) not null foreign key references user(user_id), login_date datetime not null)
Это случай использования: Для пользователя для входа в систему, он/она должна пройти эти 2 проверки:
- пользователя Id и пароль должны совпадать в таблице пользователя
- 30 дней не прошло после последнего входа пользователя в систему.
Так что я Субъект Пользователь
public class User {
private String userId;
private String password;
public String getUserId() { return this.userId; }
public void setUserId(String userId) { this.userId = userId; }
public String getPassword() { return this.password; }
public void setPassword(String password) { this.password = password; }
}
И я Субъект UserLoginHistory
public class UserLoginHistory {
private int userLoginHistoryId;
private User user;
private java.util.Date loginDate;
public int getUserLoginHistoryId() { return this.userLoginHistoryId; }
public void setUserLoginHistoryId(int userLoginHistoryId) { this.userLoginHistoryId = userLoginHistoryId; }
public User getUser() { return this.user; }
public void setUser(User user) { this.user = user; }
public java.util.Date getLoginDate() { return this.loginDate; }
public void setLoginDate(java.util.Date loginDate) { this.loginDate = loginDate; }
}
Так что я думаю, что у меня есть 2 варианта:
1) Создать DAO с помощью лица, которое означает 2 объектов DAO:
UserDAO для пользователя лица, которое будет основываться на «пользователя» таблицы и
UserLoginHistoryDAO для UserLoginHistory лица, которое будет основываться на «user_login_history» таблица
public interface UserDAO {
public User getUser(String userId, String password);
}
public interface UserLoginHistoryDAO {
public UserLoginHistory getLastUserLoginHistory(String userId);
}
2) создание DAO путем использования случае это означает, 1 DAO:
LoginDAO, у которого будет весь sql, необходимый для этого варианта использования.
public interface LoginDAO {
public User getUser(String userId, String password);
public UserLoginHistory getLastUserLoginHistory(String userId);
}
какой выбор предпочтительнее и почему?
Если у меня есть выбор 1, что делать, если мне нужен запрос, который использует таблицы «user» и «user_login_history» и возвращает столбцы из обеих таблиц; в том случае, когда DAO будут проходить эти типы запросов? UserDAO или UserLoginHistoryDAO или новый DAO для композитных?
Благодаря
будет экран обслуживания пользователей, где пользователь может быть добавлен, удален или изменен. Мне понадобится UserDAO. также будет экран для отображения истории входа пользователя. Мне понадобится UserLoginHistoryDAO. – srh