Проблемы построения ENTITY и DAO

Я делаю первый веб-проект по java, с использованием JSP+JSTL+JDBC + нельзя использовать ORM-фреймворки или Spring

Одно из основных заданий - используя JSTL core, вывести в странице браузера информацию в следующем формате:

Таблица записей на услугу:

Название услуги Стоимость услуги Мастер Статус выполнения Время и дата оказания услуги
1 Стрижка 100 у.е. Иван Иванов Запланирован 20.06.2022 10:30

Основываясь на этом я написал следующую ENTITY и DAO:

public class Reception extends BaseEntity {
private Service service;
private User master;
private User client;
private int cost;
private LocalDateTime receptionDateTime;
private Status status;
// getters setters
}


public class ReceptionDAO implements GenericDAO<Reception> {
public List<Reception> findAll(long userId) throws DaoException {
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    List<Reception> receptions = new ArrayList<>();
    try {
        connection = dbManager.getConnection();
        statement = connection.prepareStatement("SELECT * FROM reception WHERE user_id=?");
        statement.setLong(1, userId);
        resultSet = statement.executeQuery();
        while (resultSet.next()) {
            Reception reception = mapReception(resultSet);
            receptions.add(reception);
        }
    } catch (SQLException e) {

        throw new DaoException("//informative text", e);
    } finally {
        close(resultSet);
        close(statement);
        close(connection);
    }
    return receptions;
}

public Reception mapReception(ResultSet resultSet) throws SQLException, DaoException {
Reception reception = new Reception();

long receptionId = resultSet.getLong("id");
long serviceId = resultSet.getLong("service_id");
long masterId = resultSet.getLong("master_id");
long clientId = resultSet.getLong("client_id");
int cost = resultSet.getInt("cost");
LocalDateTime dateTime =resultSet.getTimestamp("reception_date_time").toLocalDateTime();
int statusId = resultSet.getInt("status_id");

UserDAO userDAO = new UserDAO();
ServiceDAO serviceDAO = new ServiceDAO();

reception.setId(receptionId);
reception.setService(serviceDAO.findById(serviceId));
reception.setMaster(userDAO.findById(masterId));
reception.setClient(userDAO.findById(clientId));
reception.setCost(cost);
reception.setReceptionDateTime(dateTime);
reception.setStatus(Status.getStatus(statusId));

return reception;
}

Меня терзают сомнения о правильности построения ENTITY и DAO в целом, так как для того, чтобы достать сущность из базы данных, я использую UserDAO и ServiceDAO внутри ReceptionDAO. Исходя из этого у меня есть несколько вопросов:

  1. Всё ли так плохо в построении ENTITY и DAO? Имеет ли такая структура право на жизнь?
  2. Хорошая ли это идея использовать DAO внутри другого DAO?
  3. Если такое построение DAO и ENTITY неправильное, тогда что надо добавить в проект, чтобы получить желаемый результат?

Ответы (0 шт):