Запрос к базе данных через модель - PullRequest
0 голосов
/ 05 мая 2011

При работе с инфраструктурой MVC и запросе базы данных из контроллера с использованием модели, что является лучшим методом?

Должна ли модель обеспечивать очень гибкую функцию, позволяющую контроллеру запрашивать базу данных?Например, вызов от контроллера:

User->find ([
    { 
        or => [ 
            {field => 'name', value => 'john', op => '~' },
            { 
                and => [
                    { field => 'organization', value => 'acme', op => '~' },
                    { field => 'city', value => 'tokyo', op => '=' }
                ]
             }
        ],
     });

    } 

Или модель должна иметь строгий API, который приводит к таким вызовам:

User->find_john_or_people_from_acme_in_tokyo();

Как лучше всего это сделать??Должен ли SQL быть по всей модели?Или содержится в одной функции queryFactory?Можете ли вы указать мне в правильном направлении?Некоторый код ОС был бы потрясающим.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Рекомендуется всегда разделять Model и DataAccess на два разных уровня.Здесь описываются лучшие практики для логического разделения на уровне модели.Это помогает, когда необходимо изменить базовые объекты доступа к данным без изменения слоя ViewModel.

Рекомендации по разделению кода модели на логические части в MVC?Какой лучше?

0 голосов
/ 05 мая 2011

Хорошей практикой является разделение всего кода, связанного с базой данных, на отдельный уровень DAO. Таким образом, ваш код бизнес-логики не зависит от конкретной технологии базы данных, которую вы используете (JDBC против Hibernate против JPA и т. Д.) Или даже от того, хранятся ли данные в базе данных или в каком-либо другом хранилище.

...