Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Persistence.xml where to put in eclipse project

Simple question...
I have a few projects in Eclipse enviroment
MainApp(Enterprise Application Project) which "includes"

  1. WebController (EJB Project)
  2. WebModel (JPA Project)
  3. WebView(Dynamic Web Project)


Problem is where to put persistance.xml file?

Getting exception: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName DataModel

like image 744
Marcin Petrów Avatar asked Jun 06 '11 17:06

Marcin Petrów


People also ask

Where should I put persistence xml?

If you package the persistent unit as a set of classes in an EJB JAR file, persistence. xml should be put in the EJB JAR's META-INF directory. If you package the persistence unit as a set of classes in a WAR file, persistence. xml should be located in the WAR file's WEB-INF/classes/META-INF directory.

Do you need persistence xml?

The Java Persistence XML configuration file allows you to define a Persistence Unit configuration that you can later bootstrap using Java EE or Spring. Knowing all the persistence. xml file configuration options is very important as it allows you to address a great variety of mapping requirements.

How do I edit persistence xml?

Procedure. In the Package Explorer view, right-click the persistence. xml file of the JPA project that you want to edit and select Open with > Persistence XML Editor. In the Design tab of the Persistence XML Editor, make any of the following changes to the persistence.


2 Answers

The persistence.xml file is typically present in the src/META-INF directory of the persistence (JPA) project. If the project was created with Eclipse, it is typically created and placed there by default.

like image 142
Vineet Reynolds Avatar answered Oct 05 '22 09:10

Vineet Reynolds


The JPA 2.0 specification in section 8.2 states the requirements for packaging. It says

A persistence unit is defined by a persistence.xml file. The jar file or directory whose META-INF directory contains the persistence.xml file is termed the root of the persistence unit.

In Java EE environments, the root of a persistence unit must be one of the following:

  • an EJB-JAR file
  • the WEB-INF/classes directory of a WAR file[80]
  • a jar file in the WEB-INF/lib directory of a WAR file
  • a jar file in the EAR library directory
  • an application client jar file

It is not required that an EJB-JAR or WAR file containing a persistence unit be packaged in an EAR unless the persistence unit contains persistence classes in addition to those contained within the EJB-JAR or WAR. See Section 8.2.1.6.

You can read the rest of the chapter if you deem it necessary. In Eclipse that means that you need to configure the dependencies between your projects to ensure the deployment files are packaged appropriately. You typically configure that in Project->Properties->Build Path in the Projects tab.

However, I am not sure if Eclipse packages it up as required for Web server deployment. I know it does in a EAR project.

like image 39
Edwin Dalorzo Avatar answered Oct 05 '22 09:10

Edwin Dalorzo