The Java Persistence API allows you to define multiple persistence units, each of which can map to a separate database.
In order to use multiple Database, simply define a persistent-unit for each one in the persistence.xml file :
<persistence> <persistence-unit name="sample-db1"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/SamplesDB</jta-data-source> </persistence-unit> <persistence-unit name="sample-db2"> <provider> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider </provider> <jta-data-source>jdbc/SamplesDB2</jta-data-source> </persistence-unit> </persistence>
In te above example, the sample-db1 and sample-db2 persistence units have been configured in the persistence.xml file.
You can use @PersistenceContext attribute unitName to specify which persistent unit to use in your code:
@Stateless public class EmployeeDemoSessionEJB implements EmployeeDemoSession { @PersistenceContext(unitName="sample-db1") protected EntityManager em1; @PersistenceContext(unitName="sample-db2") protected EntityManager em2; public void createEmployee(String fName, String lName) { Employee employee = new Employee(); employee.setFirstName(fName); employee.setLastName(lName); em1.persist(employee); } ... }