User: Password:
   Keep me logged in.
Register  |  I forgot my password

Login  |  Register

Efficient Java tools  - Article Details

FireStorm/DAO: What is DAO Design Pattern?

Date Added: May 02, 2010 07:26:59 PM
Author:
Category: Code Generation

Business Applications and the DAO Design Pattern

Business applications almost always need access to data from relational or object databases and the Java platform offers many techniques for accessing this data. The oldest and most mature technique is to use the Java Database Connectivity (JDBC) API, which provides the capability to execute SQL queries against a database and then fetch the results, one column at a time. Although this API provides everything a developer needs to access data and to persist application state, it is a cumbersome API to develop against - which makes a code generator particularly useful.

Java 2 Enterprise Edition (J2EE) offers a newer persistence framework in the form of Entity Beans, a subset of the Enterprise JavaBean (EJB) framework. Although there have been many improvements in the more recent EJB specification, many developers are now looking to alternative persistence frameworks, such as Java Persistence API (JPA), Spring DAO, and Hibernate DAO. All of the Java persistence technologies are ideally combined with the DAO design pattern.

The Benefits of the DAO Design Pattern

The DAO design pattern approach provides flexibility to change an application's persistence mechanism over time without the need to re-engineer application logic that interacts with the DAO tier. For example, there may be performance benefits in changing an application's performance mechanism from using Entity Beans to using direct JDBC calls from a session bean, or even a move to an alternative persistence framework, such as Spring DAO. Without a DAO design pattern tier in place, this sort of transition would require extensive re-engineering of existing code.

The DAO design pattern also provides a simple, consistent API for data access that does not require knowledge of JDBC, EJB, or Spring, or Hibernate interfaces. A typical DAO design pattern interface is shown below.

public interface CustomerDAO
{
  public void insert(Customer customer)
   throws CustomerDAOException;

  public void update(CustomerPK pk, Customer customer)
   throws CustomerDAOException;

  public void delete(CustomerPK pk)
   throws CustomerDAOException;

  public Customer[] findAll()
   throws CustomerDAOException;

  public Customer findByPrimaryKey(String email)
   throws CustomerDAOException;

  public Customer[] findByCompany(int companyId)
   throws CustomerDAOException;
}

It is important to note that DAO does not just apply to simple mappings of one object to one relational table, but also allows complex queries to be performed and allows for stored procedures and database views to be mapped into Java data structures.

Minimizing the Impact of Moving to the DAO Design Pattern

CodeFutures' objective is to minimize the importance of the main argument against using DAO: the fact that it requires a significant amount of repetitive source code to be produced for no immediate advantage over using JDBC or EJB directly. For many developers, this disadvantage is good enough reason to ignore the long-term benefits of using a framework-neutral API, especially where there are strict project deadlines. Without the code generation advantages of FireStorm/DAO, it is not easy to justify to a project manager or project sponsor the time and cost of manually writing DAO design pattern code, regardless of any future benefits they may see.

DAO Design Pattern Code Generation

CodeFutures' solution to the manual coding problem is to automate the production of a DAO design pattern tier, as well as automating the actual implementation logic for whichever persistence framework is deemed appropriate for an application. This approach is easy to adopt because almost all databases use a standard language for defining their structure (SQL).

 

 

Ratings
You must be logged in to leave a rating.
Average rating: (0 votes)
Comments

No Comments Yet.


You must be logged in to leave a Comment.