Archive for September, 2011

Introduction to JPA

Well its that time of my career where you need to sharpen yourself again to find stumble on the right career path for you and for me it means finding the right project. Originally being a Linux, C/C++ guy, I couldn’t simply ignore the Java buzz and the importance different pieces of Java plays in the architecture world.

Talking about architecture, database enabled Java enterprise applications are of prime importance as they form the basic of any application deployed in the enterprise world.Taking it a bit further,knowledge of persistence APIs are a must have skills in your resume if you want to survive the competition. So this multi-part blog is an effort to help programmers like me to deep dive into the basics of persistence with Java.

2006 saw the final release of EJB 3.0 which was based on JSR-220 (Java Specification Request). This release gave the programmers the ability to store and retrieve application data to and from the database respectively.  This set of APIs is known as the Java Persistence API  or JPA. JPA incorporates many of the concepts and standards from leading persistence frameworks like Toplink (from Oracle) and Hibernate (from JBoss). One of the great benefits of JPA is that it is an independent API and can nicely integrate with J2EE as well as J2SE applications.

By plain definition in Java terms, Java Persistence API (JPA) provides POJO (Plain Old Java Object) standard and object relational mapping (OR mapping) for data persistence among applications.

So what is POJO?

Plain Old Java Object is a term used to refer Java objects that do not extend or implement some specialized classes. The following classes are not POJO classes because the first one extends a specialized class and the second one implements a specialized class.

    class MyServlet extends HttpServlet {}
    class MyRemote implements SessionBean {}

What is Object-Relation Mapping?

OR Mapping – Object-Relation mapping is the process of the transformation of the data between the class objects and databases. Applications can depend on an OR-M like tool that greatly simplifies this work instead of manually coding the transformation process.


Persistent Data normally refers to permanent data in an application. The state of these data is made permanent by storing them in a persistent medium like database, files or a disk tape. In JPA terms, these persistent data are referred as entities. An entity refers to a logical collection of data that can be stored or retrieved as a whole. For example, in a banking application, Customer and BankAccount can be treated as entities. Customer name, customer address etc can be logically grouped together for representing a Customer entity. Similarly account number, total balance etc may be logically grouped under BankAccount entity.

Since entities form the heart of the JPA, they have some unique properties like

  1. Persistability:- deals with the storing and retrieving of entity from and to a persistent medium like database.
  2.  Identity:- is usually used to identity one unique entity among multiple entities (or multiple entity instances) in a database.
  3. Transactionability:- CRUD operations (Create, Update and Delete) for entity objects will occur within a transactional context and it is one of the major characteristic for an entity object as the real state of an entity depends whether a transaction completes (commits/fails) or not.

Next article in series:- Creating entity classes.