Мои классы доступа к данным часто имеют метод loadDataToEntity или что-то подобное. Этот метод принимает, например, набор результатов и заполняет класс сущности, который передается клиенту.Извлечение данных базы данных - общий метод извлечения?
Это хорошо, потому что все методы, использующие хранимую процедуру для извлечения данных, могут просто передать набор результатов методу loadDataToEntity и вернуть объект.
Так что это хороший способ уменьшить код, но я часто слышу, что вы должны получить как можно меньше столбцов. Чтобы использовать мой общий метод, все хранимые процедуры должны извлекать все столбцы, необходимые для loadDataToEntity(). Кроме того, когда столбец добавляется в таблицу и извлекается хранимой процедурой, все остальные хранимые процедуры должны быть изменены, а также извлекать этот столбец.
Мне интересно, есть ли лучший способ как для общего метода, так и для получения различного количества столбцов, иногда в зависимости от хранимой процедуры?
public Entity getById(int id)
{
ResultSet rs;
//call stored procedure A and stuff
return loadDataToEntity(rs);
}
public Entity getByName(String name)
{
ResultSet rs;
//call stored procedure B and stuff
return loadDataToEntity(rs);
}
public Entity loadDataToEntity(ResultSet rs)
{
// fill and return entity here
}
Да, второй подход, вероятно, подойдет мне лучше, так как я почти всегда работаю с нормализованной базой данных. Пример: Пользователь таблицы queryA: получает информацию о пользователе, необходимую для проверки правильности входа в систему. Требуется столбец a, b и c. queryB: получает информацию о пользователе, необходимую для размещения заказа. Требуются столбцы a, c и d. В этом случае, если в таблице всего 4 столбца, лучше всего иметь общий метод, который загружает эти 4 столбца в объект сущности и имеет оба запроса A и B, чтобы получить все 4 столбца. – KTrum
@ Karl - Трудно вам посоветовать, не зная точную информацию о вашем приложении, но я бы всегда советовал запрашивать явно только нужные вам столбцы, а не запускать «select *». Это сделает вас более устойчивыми к изменениям схемы, так как вы «быстро сработаете». Это также позволяет вам более легко справляться с тем, что происходит с использованием инструмента профилирования SQL, поскольку вы можете легче создать шаблон поведения. – Adamski