.... At the other end of a typical web application is the persistence layer. .... There are several open source object-to-relational mapping (ORM) frameworks that solve much of this problem. In particular, the Hibernate framework allows object-to-relational persistence and query service for Java. Hibernate has a medium learning curve for Java developers who are already familiar with SQL and the JDBC API. Hibernate persistent objects are based on plain-old Java objects and Java collections. ..... The following list contains the type of code that you would write inside a persistence framework:
- Querying relational information into objects. Hibernate does this through an OO query language called HQL, or by using an expressive criteria API. HQL is very similar to SQL except you use objects instead of tables and fields instead of columns. There are some new specific HQL language elements to learn; however, they are easy to understand and well documented. HQL is a natural language to use for querying objects that require a small learning curve.
- Saving, updating, and deleting information stored in a database.
- Advanced object-to-relational mapping frameworks like Hibernate have support for most major SQL databases, and they support parent/child relationships, transactions, inheritance, and polymorphism.
Here are some items that should be avoided in the persistence layer:
- Business logic should be in a higher layer of your application. Only data access operations should be permitted.
- You should not have persistence logic coupled with your presentation logic. Avoid logic in presentation components such as JSPs or servlet-based classes that communicate with data access directly.
By isolating persistence logic into its own layer, the application becomes flexible to change without affecting code in other layers. For example, Hibernate could be replaced with another persistence framework or API without modification to the code in any other layer.
Excerpt from "Wiring Your Web Application with Open Source Java" by Mark Eagle
[Note：This blog was migrated from my very old blog which was in the blogspirit.]
Software Programming, Open Source