Объект доступа к данным (DAO) в Java

Я просматривал документ, и я наткнулся на термин под названием DAO . Я узнал, что это объект доступа к данным. Может кто-нибудь, пожалуйста, объясните мне, что это на самом деле?

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

Я действительно хочу знать, что DAO программно с точки зрения того, где он используется. Как он используется? Также приветствуются любые ссылки на страницы, которые объясняют эту концепцию из самых простых вещей.

Объект доступа к данным – это в основном объект или интерфейс, обеспечивающий доступ к базовой базе данных или любому другому хранилищу сохраняемости.

Это определение из: http://en.wikipedia.org/wiki/Data_access_object

Проверьте также схему последовательности: http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

Возможно, простой пример поможет вам понять концепцию:

Допустим, у нас есть компания, которая будет представлять сотрудника:

 public class Employee { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 

Субъекты-сотрудники будут сохраняться в соответствующей таблице Employee в базе данных. Простой интерфейс DAO для обработки операции с базой данных, необходимой для управления объектом сотрудника, будет выглядеть так:

 interface EmployeeDAO { List findAll(); List findById(); List findByName(); boolean insertEmployee(Employee employee); boolean updateEmployee(Employee employee); boolean deleteEmployee(Employee employee); } 

Затем мы должны предоставить конкретную реализацию для этого интерфейса для работы с SQL-сервером, а другой – для работы с плоскими файлами и т. Д.

Что такое DATA ACCESS OBJECT (DAO)

Это объект / интерфейс , который используется для доступа к данным из базы данных хранения данных.

ПОЧЕМУ ИСПОЛЬЗУЕМ DAO:

он абстрагирует извлечение данных из ресурса данных, такого как firebase database. Концепция заключается в том, чтобы «отделить клиентский интерфейс ресурса данных от механизма доступа к данным».

Проблема с непосредственным доступом к данным заключается в том, что источник данных может измениться. Рассмотрим, например, что ваше приложение развернуто в среде, которая обращается к базе данных Oracle. Затем он будет развернут в среде, использующей Microsoft SQL Server. Если ваше приложение использует хранимые процедуры и код базы данных (например, генерирует последовательность номеров), как вы справляетесь с этим в своем приложении? У вас есть два варианта:

  • Перезапустите приложение, чтобы использовать SQL Server вместо Oracle (или добавить условный код для обработки различий) или
  • Создайте слой между логикой приложения и доступом к данным

Его во всем называют DAO Pattern , он состоит из следующего:

  • Интерфейс объектов доступа к данным. Этот интерфейс определяет стандартные операции, которые должны выполняться на объектах модели.
  • Объект данных Access Object – этот class реализует интерфейс выше. Этот class отвечает за получение данных из источника данных, который может быть базой данных / xml или любым другим механизмом хранения.
  • Объект объекта или объекта объекта. Этот объект является простым POJO, содержащим методы get / set для хранения данных, полученных с использованием classа DAO.

Пожалуйста, ознакомьтесь с этим примером. Это позволит более четко прояснить ситуацию.

пример
Я предполагаю, что это должно было четко прояснить ваше понимание DAO.

DAO (объект доступа к данным) является очень используемым шаблоном проектирования в корпоративных приложениях. В основном это модуль, который используется для доступа к данным из каждого источника (СУБД, XML и т. Д.). Я предлагаю вам прочитать несколько примеров, например:

Пример DAO

Обратите внимание, что существуют различные способы реализации оригинального шаблона DAO , и есть много рамок, которые могут упростить вашу работу. Например, структуры ORM (Object Relational Mapping), такие как iBatis или Hibernate, используются для сопоставления результатов SQL-запросов с объектами Java.

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

Не путайте слишком много объяснений. DAO: от самого имени это означает «Доступ к данным с использованием объекта». DAO отделен от других бизнес-логик.

Я думаю, что лучший пример (наряду с объяснениями) можно найти на веб-сайте oracle: здесь . Здесь можно найти еще один хороший тутурий.

Шаблон объекта доступа к данным или шаблон DAO используются для разделения доступа к API с низкими уровнями данных или операций с бизнес-сервисами высокого уровня. Ниже приведены участники шаблона объекта доступа к данным.

Интерфейс объектов доступа к данным. Этот интерфейс определяет стандартные операции, которые должны выполняться на объектах модели.

Объект данных Access Object – этот class реализует интерфейс выше. Этот class отвечает за получение данных из источника данных, который может быть базой данных / xml или любым другим механизмом хранения.

Объект объекта или объекта объекта. Этот объект является простым POJO, содержащим методы get / set для хранения данных, полученных с использованием classа DAO.

Пример кода здесь .

Я собираюсь быть общим и не специфичным для Java, поскольку DAO и ORM используются на всех языках.

Чтобы понять DAO, вам сначала нужно понять ORM (Object Rational Mapping). Это означает, что если у вас есть таблица под названием «пациент» с столбцами «имя» и «возраст», тогда вы создадите шаблон объекта для этой таблицы:

 type Person { name age } 

Теперь с помощью DAO вместо того, чтобы писать некоторые конкретные запросы, чтобы вытащить всех людей, для какого типа db вы используете (который может быть подвержен ошибкам), вместо этого вы делаете:

 list persons = DAO.getPersons(); ... person = DAO.getPersonWithName("John"); age = person.age; 

Вы сами не записываете абстракцию DAO, а обычно это часть какого-либо проекта с открытым исходным кодом, в зависимости от того, какой язык и структура вы используете.

Теперь на главный вопрос. « где он используется .. ». Ну, обычно, если вы пишете сложный бизнес и код домена, ваша жизнь будет очень сложной без DAO. Конечно, вам не нужно использовать ORM и DAO, вместо этого вы можете писать свои собственные абстракции и собственные запросы. Я сделал это в прошлом и почти всегда сожалел об этом позже.

Объект доступа к данным управляет соединением с источником данных для получения и хранения данных. Он абстрагирует реализацию базового доступа к данным для бизнес-объекта, чтобы обеспечить прозрачный доступ к источнику данных. Источником данных может быть любая firebase database, такая как RDBMS, repository XML или плоская файловая система и т. Д.

DAO – это акт, похожий на «Persistence Manager» в архитектуре с тремя уровнями, а также DAO, а также дизайн-шаблон, поскольку вы можете проконсультироваться с книгой «Банда четырех». Уровень вашего прикладного уровня просто нужно вызвать метод classа DAO, не зная скрытых и внутренних деталей метода DAO.

Pojo также рассматривается как class Model в Java, где мы можем создать getter и setter для определенной переменной, определенной в приватном режиме. Помните, что все переменные здесь объявлены с помощью частного модификатора

Классы Dao используются для повторного использования логики jdbc, а Dao (Data Access Object) является шаблоном проектирования. dao – это простой class java, который содержит логику JDBC.

Уровень доступа к данным оказался хорошим в отдельном уровне бизнес-логики и постоянном уровне. Шаблон проектирования DAO полностью скрывает реализацию доступа к данным от своих клиентов

Объект доступа к данным Java (Java DAO) является важным компонентом в бизнес-приложениях. Бизнес-приложениям почти всегда необходим доступ к данным из реляционных или объектных баз данных, а платформа Java предлагает множество методов для доступа к этим данным. Самый старый и самый зрелый метод – использовать API Java Connectivity (JDBC), который предоставляет возможность выполнять SQL-запросы по базе данных и затем извлекать результаты по одному столбцу за раз.

  • Обновление пользовательского интерфейса из разных streamов в JavaFX
  • Как добавить локальные файлы jar в проект Maven?
  • Hibernate openSession () vs getCurrentSession ()
  • Несинхронизированные статические методы streamобезопасны, если они не изменяют переменные статического classа?
  • Идеальный метод усечения строки с многоточием
  • Строка содержит - игнорировать регистр
  • Сделать jackson интерпретировать единственный объект JSON как массив с одним элементом
  • Как работает аннотация «Spring @ResponseBody» в этом примере приложения RESTful?
  • Как развернуть приложение JAX-RS?
  • Почему допустимая статическая конечная переменная не разрешена в статическом блоке инициализации?
  • kill -3, чтобы получить java thread dump
  • Давайте будем гением компьютера.