Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Examples/JPA/OutsideContainer"
< EclipseLink | Examples | JPA
Line 5: | Line 5: | ||
EntityManager em = emf.createEntityManager(); | EntityManager em = emf.createEntityManager(); | ||
</pre></code> | </pre></code> | ||
+ | |||
+ | == Customizing Persistence Unit using Java == | ||
+ | |||
+ | When a simple persistence unit configuration is defined which relies on container deployment: | ||
+ | |||
+ | <pre> | ||
+ | <persistence-unit name="employee" transaction-type="RESOURCE_LOCAL"> | ||
+ | <non-jta-data-source>jdbc/MyDS</non-jta-data-source> | ||
+ | </persistence-unit> | ||
+ | </pre> | ||
+ | |||
+ | In order to test this persistence unit outside of the container the JavaSE bootstrapping API must be used. the following code can be used to customize the configuration: | ||
+ | |||
+ | <pre> | ||
+ | import static org.eclipse.persistence.jpa.config.PersistenceUnitProperties.*; | ||
+ | |||
+ | ... | ||
+ | |||
+ | Map properties = new HashMap(); | ||
+ | |||
+ | // Ensure RESOURCE_LOCAL transactions is used. | ||
+ | properties.put(TRANSACTION_TYPE, | ||
+ | PersistenceUnitTransactionType.RESOURCE_LOCAL.name()); | ||
+ | |||
+ | // Configure the internal EclipseLink connection pool | ||
+ | properties.put(JDBC_DRIVER, "oracle.jdbc.OracleDriver"); | ||
+ | properties.put(JDBC_URL, "jdbc:oracle:thin:@localhost:1521:ORCL"); | ||
+ | properties.put(JDBC_USER, "scott"); | ||
+ | properties.put(JDBC_PASSWORD, "tiger"); | ||
+ | properties.put(JDBC_READ_CONNECTIONS_MIN, "1"); | ||
+ | properties.put(JDBC_WRITE_CONNECTIONS_MIN, "1"); | ||
+ | |||
+ | // Configure logging. FINE ensures all SQL is shown | ||
+ | properties.put(LOGGING_LEVEL, "FINE"); | ||
+ | properties.put(LOGGING_TIMESTAMP, "false"); | ||
+ | properties.put(LOGGING_THREAD, "false"); | ||
+ | properties.put(LOGGING_SESSION, "false"); | ||
+ | |||
+ | // Ensure that no server-platform is configured | ||
+ | properties.put(TARGET_SERVER, TargetServer.None); | ||
+ | </pre> | ||
+ | |||
+ | Now the PU can be instantiated for testing using: | ||
+ | |||
+ | <pre> | ||
+ | Persistence.createEntityManagerFactory(unitName, properties); | ||
+ | </pre> |
Revision as of 22:21, 28 March 2008
Users may also use the EntityManager API outside the container by creating a EntityManagerFactory for a given persistence unit name and properties map (includes database information etc.)
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName, propertiesMap);
EntityManager em = emf.createEntityManager();
Customizing Persistence Unit using Java
When a simple persistence unit configuration is defined which relies on container deployment:
<persistence-unit name="employee" transaction-type="RESOURCE_LOCAL"> <non-jta-data-source>jdbc/MyDS</non-jta-data-source> </persistence-unit>
In order to test this persistence unit outside of the container the JavaSE bootstrapping API must be used. the following code can be used to customize the configuration:
import static org.eclipse.persistence.jpa.config.PersistenceUnitProperties.*; ... Map properties = new HashMap(); // Ensure RESOURCE_LOCAL transactions is used. properties.put(TRANSACTION_TYPE, PersistenceUnitTransactionType.RESOURCE_LOCAL.name()); // Configure the internal EclipseLink connection pool properties.put(JDBC_DRIVER, "oracle.jdbc.OracleDriver"); properties.put(JDBC_URL, "jdbc:oracle:thin:@localhost:1521:ORCL"); properties.put(JDBC_USER, "scott"); properties.put(JDBC_PASSWORD, "tiger"); properties.put(JDBC_READ_CONNECTIONS_MIN, "1"); properties.put(JDBC_WRITE_CONNECTIONS_MIN, "1"); // Configure logging. FINE ensures all SQL is shown properties.put(LOGGING_LEVEL, "FINE"); properties.put(LOGGING_TIMESTAMP, "false"); properties.put(LOGGING_THREAD, "false"); properties.put(LOGGING_SESSION, "false"); // Ensure that no server-platform is configured properties.put(TARGET_SERVER, TargetServer.None);
Now the PU can be instantiated for testing using:
Persistence.createEntityManagerFactory(unitName, properties);