В эту пятницу я должен присутствовать на экзамене по «разработке программного обеспечения», но есть небольшая вещь, которую я не могу понять, и мой учитель недоступен для объяснения.BCED pattern - метод загрузчика объекта
Я должен сделать проект на основе шаблона Boundary-Controller-Entity (BCE) с сохранением (база данных или последовательный файл, но я буду использовать SQLite). Я должен реализовать классы сущностей с помощью методов save/load, которые помещают/извлекают данные в/из уровня сохранения. Они используют DAO.
Например:
public class someEntity
{
private int someData;
public void set_someData (int _someData) {this.someData = _someData;}
public int get_someData() {return this.someData;}
public void save()
{
DAO dao = new DAO();
dao.openConnection();
dao.insert (this.someData);
dao.closeConnection();
}
До сих пор, это все понятно.
Когда я реализую метод «load», я хочу «заполнить» экземпляр объекта данными из базы данных, используя параметры поиска (первичный ключ в БД). Но, если, например, я хочу, чтобы все люди родились до 1980 года, что я могу сделать?
Единственное решение, на мой взгляд, реализовать следующее, в контроллер класса
ArrayList <people> pList= new ArrayList();
people p;
for (int i = 1900 ; i < 1980 ; i++)
{
p = new people();
if (p.load (i) == true); //returns true if has found corresponding entry in db
{
pList.add(i);
}
}
Это совершенно безумен, разве не так?
Итак, мне нужен метод «loader», который возвращает коллекцию, поэтому я могу реализовать в DAO метод, который возвращает всех людей, родившихся до 1980 года, с простым SQL-запросом. Это можно сделать только в том случае, если класс управления говорит напрямую с DAO, игнорируя правила шаблона BCE.
Как решить проблему, если это настоящая проблема?
спасибо за ответ :) .........ok, но когда я это сделаю, я получаю resultSet с более чем одной записью, когда мне нужно только одно. если я выбрал первую запись resultSet и загрузил ее в свой экземпляр объекта, тогда мне может понадобиться повторить операцию: я создаю объект, метод загрузки вызова и метод загрузки делает этот запрос. у меня бы был такой же набор результатов, я бы выбрал вторую запись, но я просто не могу это сделать ..... или нет? PS: извините за мой английский, я знаю, иногда я делаю ужасные ошибки: D – sscnapoli1926
Мне очень жаль, но я не могу понять, что именно вы хотите сделать. Да, вы можете получить несколько строк. Вы пытаетесь получить одного человека, который родился до 1980 года и работал в конкретной компании? – dgregory
Да, потому что у меня должен быть один экземпляр объекта для каждой записи таблицы, это не так? Метод «load» относится к классу сущности, а не к коллекции ...... но если я могу использовать код ниже (это поиск в контейнере empolyees, а не сами сотрудники), я думаю, проблема решена. – sscnapoli1926