2013-04-07 2 views
0

В слое DAO в настоящее время я создаю методы для каждого типа запросов к базе данных, таких как addDevice, deleteDevice, searchDevice, ifAlreadyRegistered ..... и т. Д. Это делает мой объект слоя DAO очень тяжелым.Я разрабатываю веб-приложение с использованием MVC и трехуровневой архитектуры. У меня проблема с дизайном с трехуровневой архитектурой

Не существует способа иметь общий метод вставки, метод удаления, метод обновления в DAO, чтобы слой DAO не был таким тяжелым?

+1

Если вы сказали, что используете, чтобы реализовать свои DAO, это поможет (JPA, JDBC, что-то еще?) –

+0

Я использую JDBC – Lovin

+0

Затем см. @sigpwned answer. Используйте ORM (JPA - стандартный API ORM в Java, а Hibernate - реализация JPA) –

ответ

2

Вы используете ORM как Hibernate для взаимодействия с базой данных? Если нет, вы можете попробовать попробовать ORM. Это может облегчить работу с базой данных, поскольку вы выражаете свою логику на «родном» языке программирования (например, Java в вашем случае) вместо SQL, а ORM вычисляет SQL для вас. В Hibernate, например, обновление объектов выглядеть следующим образом (от this article):

transaction = session.beginTransaction(); 
Course course = (Course) session.get(Course.class, courseId); 
course.setCourseName(courseName); 
transaction.commit(); 

... вместо сырой SQL. В случаях, когда использование ORM имеет смысл (это не все случаи), он может сделать ваш код намного более чистым и более простым.

В широких штрихах, хороший пример программы, где ORM делает, имеет смысл нечто вроде CRM, где вы просто нажимаете объекты и делаете простые отчеты; хорошим примером программы, где ORM, вероятно, не, имеет смысл как инструмент анализа, в котором вы будете использовать сильно настраиваемые и тщательно оптимизированные SQL-запросы, и в этом случае вы, вероятно, потратили бы больше времени на работу с ORM, чем на самом деле используй это.

+0

Да, но характеристики объектно-реляционных сопоставлений плохи. Выбор базы данных на основе объектов (ODBMS, например [Versant] (http://actian.com/products/versant)) также может быть альтернативой. – Aubin

+0

Я думаю, что это немного широк. Очевидно, что они достаточно хороши, чтобы иметь отличные реализации и широкое внедрение. На ваш взгляд, ORM - это не всегда The Right Thing. Я обновил сообщение, чтобы вызвать несколько примеров, когда ORM может быть или не подходит для справки. В конечном счете, однако, выбор того, следует ли использовать ORM [в основном сводится к тому, что подходит для приложения, над которым вы работаете) (http://sigpwned.com/content/should-i-use-orm-or -не уверен). (Мое сообщение в блоге по этому вопросу.) – sigpwned

+1

Итак, согласно вам, мне нужно использовать спящий режим (что подходит мне в моем случае). Разве нет другого решения с моим подходом? – Lovin

Смежные вопросы