Entity Manager in JPA

Lets start with Entity Manager. What does entity manager means???
If i am a naive programmer i could simply interpret something which manages entity & Indeed it means the same.
An Entity Manager is been instantiated with the help of an Entity Manager Factory. A connection to a database is managed by the entity manager i.e. it provides functionality for performing operations on a database. Therefore we could say if an application needs multiple database connections, anEntityManagerFactory will be constructed for a specific database which  provides an efficient way to construct multiple EntityManagerinstances(if required, even single instance of entity manager can the job depending upon the requirement you may opt for multiple instances) for that database required for every HTTP request. We shall understand this with the help of an example. Suppose we have a
Database : A , having a relational tables B and C.
So for A, an instance of entity manager factory will be instantiated. Now we if ever want to perform any update to table B & lets say delete operation for table C, either two different entity manager could be instantiated or same the entity manager instance can be utilized for both.
The instantiation of Entity Manager Factory itself is considered to be less efficient but since it’s a one time activity therefore it’s manageable task because Entity Manager Factory once instantiated, it will serve the entire application
The entity manager instantiated is associated with a persistence context.
@PersistenceUnit(unitName = "MyDatabase")
EntityManagerFactory emf;
EntityManager entityManager = emf.createEntityManager();
or
  1. @PersistenceContext(unitName = “MyDatabase”)
  2. private EntityManager entityManager;
PersistenceUnit

injects an

EntityManagerFactory

, and

PersistenceContext

injects an

EntityManager

. It’s generally better to use

PersistenceContext

unless you really need to manage the

EntityManager

lifecycle manually.

EntityManagerFactory defines another method for instantiation of EntityManager that, like the factory, takes a map of properties as an argument. This form is useful when a user name and a password other than the EntityManagerFactory’s default user name and password have to specified:
  1. Map properties = new HashMap();
  2. properties.put(“javax.persistence.jdbc.user”, “kashyap”);
  3. properties.put(“javax.persistence.jdbc.password”,“kashyap”);
  4. EntityManager em = emf.createEntityManager(properties);
Within the persistence context, the entity instances and their lifecycle are managed. By Entity instance, we mean instance of an entity & each entity designates relational table in the database. Entity Manager is actually an interface which provides methods to create and remove persistent entity instances, to find entities by their primary key, and to query over entities so together these functionalities are grouped under operations we perform. Operations that modify the content of a database require active transactions. Transactions are managed by an Entity Transaction instance obtained from the EntityManager.
Precise Definition :-
An Entity Manager is defined by a persistence unit. A persistence unit defines the set of all classes that are related or grouped by the application, and which must be colocated in their mapping to a single database.
Below i’m writing a code snippet for better understanding :-
try {
		em.getTransaction().begin();
		// Operations that modify the database should come here.
		em.getTransaction
		/**
		*getTransaction() EntityManager's method Return the resource-level EntityTransaction object. See JavaDoc Reference Page
		*/
		em.getTransaction().commit();
  }
  finally {
		if (em.getTransaction().isActive())
			em.getTransaction().rollback();
  }
Hope it gives a brief idea about the context. Stay tuned for Entity Transaction & Feel free to post queries.
Advertisements

Currently Working as Game Developer at Gaussian Networks Private Limited , ( www.adda52.com ). Did B.Tech in computer science Engineering from G.G.S.I.P University , new delhi. Using Java , ActionScript 3.0 and PHP for development. I am a programmer who loves to adapt new platforms for coding. Reading techs & specs of gadgets is my hobby as i am a 24x7 active web crawler. I consider learning as a best helping aid to yourself as well as for others because it's the best means for diversifying your knowledge.

Posted in hibernate, JPA

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: