In software, a data access object (DAO) is a pattern that provides an abstract interface to some type of database or other persistence mechanism. By mapping application calls to the persistence layer, the DAO provides data operations without exposing database details. This isolation supports the single responsibility principle. It separates the data access the application needs, in terms of domain-specific objects and data types (the DAO's public interface), from how these needs can be satisfied with a specific DBMS (the implementation of the DAO).
Although this design pattern is applicable to most programming languages, most software with persistence needs, and most databases, it is traditionally associated with Java EE applications and with relational databases (accessed via the JDBC API because of its origin in Sun Microsystems' best practice guidelines "Core J2EE Patterns".
The primary advantage of using data access objects is the rigorous separation between two parts of an application that have no need to know anything about each other, and which therefore can evolve frequently and independently. Changing business logic can rely on a constant DAO interface, while changes to persistence logic do not affect DAO clients.
All details of storage are hidden from the rest of the application (see information hiding). Unit testing code is facilitated by substituting a test double for the DAO in the test, thereby making the tests independent of the persistence layer.
In the context of the Java programming language, DAO can be implemented in various ways. This can range from a fairly simple interface that separates data access from the application logic, to frameworks and commercial products.
Technologies like Java Persistence API and Enterprise JavaBeans come built into application servers and can be used in applications that use a Java EE application server. Commercial products such as TopLink are available based on object-relational mapping (ORM). Popular open source ORM software includes Doctrine, Hibernate, iBATIS and JPA implementations such as Apache OpenJPA.
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.
Le cours ME-101 vise à l'acquisition des règles et du langage normalisé de la communication technique, et des bases de la conception mécanique.
Ce cours intègre des travaux pratiques d'initiation à la
Le cours ME-106 vise à l'acquisition des règles et du langage normalisé de la communication technique, et des bases de la conception mécanique.
Ce cours intègre des travaux pratiques d'initiation à la
Le cours de ME-107 vise à l'acquisition d'une solide culture technique de base en vue d'être capable de traiter des cas concrets de construction mécanique, via une revue des concepts, composants, et m