Полезно ли писать весь код доступа к базе данных в одном классе? - PullRequest
0 голосов
/ 24 августа 2011

Я создал для проекта отдельный класс, который содержит весь код доступа к базе данных.Это хорошая практика, при условии, что этот класс не содержит никакой логики, или я должен использовать несколько классов?Если да, то как мне разделить мой код?Я использую C # .Net.

Ответы [ 4 ]

2 голосов
/ 24 августа 2011

На самом деле, согласно концепции инфраструктуры MVC, рекомендуется создать другой класс для доступа к базе данных, отдельный класс для логики и отдельный класс для ваших представлений.

У вас все хорошо, если вы пишете отдельный класс для доступа к базе данных при условии, что он не содержит никакой логики.

В Agile Development есть термин, называемый уровнями инкапсуляции базы данных.

Уровень инкапсуляции базы данных скрывает детали реализации вашей базы данных, включая их физические схемы, от вашего бизнес-кода. По сути, этот уровень предоставляет вашим бизнес-объектам сервисы хранения данных - возможность считывать данные, записывать данные и удалять данные из - источников данных. В идеале ваши бизнес-объекты не должны ничего знать о том, как они сохраняются, это просто происходит. Слои инкапсуляции базы данных не являются волшебством и не являются академическими теориями; Уровни инкапсуляции базы данных широко используются как в больших, так и в небольших приложениях, а также в простых и сложных приложениях. Уровни инкапсуляции базы данных являются важной техникой, о которой должен знать и быть готовым каждый разработчик гибкого программного обеспечения.

Эффективный уровень инкапсуляции базы данных обеспечит несколько преимуществ:

-> Это уменьшает связь между вашей объектной схемой и вашей схемой данных, увеличивая вашу способность развивать любую из них.

-> Он реализует весь код, связанный с базой данных, в одном месте.

-> Упрощает работу программистов приложений.

-> Это позволяет разработчикам приложений сосредоточиться на бизнес-проблемах, а Agile DBA могут сосредоточиться на базе данных.

-> Это дает вам общее место для реализации бизнес-правил и логики, ориентированных на данные.

-> Он использует преимущества определенных функций базы данных, повышая производительность приложений.

Надеюсь, это поможет.

1 голос
/ 24 августа 2011

Если ваш доступ к данным не очень прост, вероятно, нет.

вам, вероятно, не нужно писать этот код самостоятельно.Взгляните на некоторые инструменты реляционного сопоставления объектов.NHibernate является популярным решением .Net.http://en.wikipedia.org/wiki/NHibernate

Если вы действительно хотите написать это самостоятельно, посмотрите шаблоны проектирования в этой области, например шаблон объекта передачи данных.http://martinfowler.com/eaaCatalog/dataTransferObject.html

1 голос
/ 24 августа 2011

Если ваша база данных достаточно мала, скажем, только несколько таблиц, вы можете написать все свои запросы в одном классе. в противном случае я бы предложил, что для каждой организации / таблицы один класс. например, StudentDao.class будет фокусироваться только на запросах к таблице базы данных «STUDENT», а TeacherDao.class будет содержать только запросы к таблице «TEACHER». если вы собираетесь реализовать сложную бизнес-логику, вы можете захотеть создать класс обслуживания, чтобы объединить StudentDao и TeacherDao вместе.

0 голосов
/ 24 августа 2011

Вот некоторые из предложений при доступе к базе данных.

1.) Всегда храните параметры доступа к базе данных в файле свойств. Используйте обработчик для получения этих данных. Потому что, когда вы меняете свою базу данных, вам не нужно менять код, просто внесите изменения в файл свойств, этого достаточно. - Итак, вам нужен класс обработчика.

2.) Никогда не создавайте отдельный класс (класс бога), который выполняет все действия. Распределите свое поведение по разным классам в зависимости от намерения. Например, сохранить все поведение чтения в одном классе, поведение записи в другом классе ... и т. Д.

3.) Вы можете создать класс, который будет заниматься созданием соединений и объединением ресурсов ... Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...