Существует много способов реализации уровня доступа к базе данных в Java, и такие же шаблоны применимы и к другим языкам.Простейшей формой будет шлюз табличных данных .В этом шаблоне есть экземпляр шлюза для каждой таблицы базы данных.Другими шаблонами для DAL являются Шлюз таблицы строк , в котором имеется экземпляр шлюза для каждой строки базы данных в таблице. Active Record , где объект домена знает, как общаться с самой базой данных. Data Mapper , где данные перемещаются между объектами домена и базой данных, сохраняя их независимыми друг от друга и самого преобразователя.У каждого из этих подходов есть свои плюсы и минусы.Попробуйте найти шаблоны, которые я упомянул, и посмотреть, что лучше всего подойдет для вашего приложения.
Основная причина, по которой люди делят подклассы на свои базовые DAO (TDG, TRG, что у вас), заключается в предоставлении явного, четкого типабезопасный интерфейс для каждого типа объекта домена + это облегчает клиентам поиск нужной функции доступа к данным, необходимой им для реализации варианта использования.Аналогичный код абстрагируется в базовом классе ...
Если вы находитесь на начальной стадии приложения, я бы порекомендовал вам использовать инструмент для работы с доступом к данным (например, Hibernate).Эти инструменты очень универсальны, и с ними миллионы проблем, но, по крайней мере, вы можете сначала сосредоточиться на правильном подходе к бизнес-логике, а затем беспокоиться об этих проблемах, которые находятся за пределами вашей области приложений.Если выясняется, что проблема, в конце концов, существует, и кажется, что ваше программное обеспечение успешно работает, вы можете продолжить работу над доступом к данным, чтобы повысить производительность или другую головную боль, которую дает вам выбранный вами инструмент.Я говорю это только потому, что сделать хорошее домашнее решение для доступа к данным довольно сложно, и это займет много времени.Подумайте о проблемах параллелизма, сопоставлении идентификатора базы данных с экземпляром (ями) памяти и т. Д. И т. Д.
Что касается вашего вопроса о ResultSet.Нет, getObject получит значение указанного столбца в текущей строке этого объекта ResultSet в виде объекта.Поэтому вы должны выполнить приведение самостоятельно, и поэтому также неплохо иметь Factory из ResultSet для объектов вашего домена, если вы идете по этому пути.
Это огромная тема, и я извиняюсьесли я не могу вдаваться во все шаблоны более подробно.У меня также есть работа над собой :-) Если вы решите сделать свой собственный, вместо того, чтобы использовать «стандартный» инструмент, я был бы рад ответить на больше ваших вопросов после того, как вы выяснили, какой из шаблонов, которые я здесь упомянул, будетлучший набор ваших потребностей.
С уважением.