==== Múltiples Fuentes de Datos ==== Vamos a ver los diferentes pasos para configurar una aplicación con dos fuentes de datos.\\ \\ === persistencexml === Modificaremos el fichero persistence.xml para que contenga ambas fuentes. org.hibernate.ejb.HibernatePersistence META-INF/orm-uno.xml jdbc/Fundeweb DataSource action.session.archivos.entities.FundewebPojo1 action.session.archivos.entities.FundewebPojo2 true ... ... org.hibernate.ejb.HibernatePersistence jdbc/Fundeweb2 DataSource META-INF/orm-dos.xml action.session.archivos.entities.FundewebPojo3 action.session.archivos.entities.FundewebPojo4 true ... ... Cada fuente de datos tendrá acceso a unos determinados beans, los cuales hemos de indicar en el //persistence. xml//. Así mismo también habrá que indicar el fichero **//orm.xml//** que usa (en caso de que sea necesario) cada fuente de datos, renombrando o eliminando el actual //orm.xml//, sino se cargara en las dos fuentes de datos y puede producir errores. \\ === components.xml === En el fichero //components.xml// eliminamos y añadimos Ahora eliminamos jdbc/FundeWeb DataSource javax.sql.DataSource y añadimos jdbc/Fundeweb2 DataSource javax.sql.DataSource jdbc/Fundeweb2 DataSource javax.sql.DataSource \\ === components.properties === En el fichero //components.properties//, buscamos la propiedad //puName// y la borramos añadiendo las siguentes: puUnoName=fuenteUnoPU puDosName=fuenteDosPU \\ === DAS === Para los //DAS//, es necesario realizar la siguiente modificación. Para los //DAS// de las entidades de la //fuenteUnoPU// tendrian que heredar de la clase: public abstract class DataAccessService1PUImpl extends DataAccessServiceImpl { @In("entityManagerUnoPU") protected EntityManager entityManager; @Override protected EntityManager getEntityManager() { return entityManager; } @Override protected void setEntityManager( EntityManager entityManager ) { this.entityManager = entityManager; } } Para los //DAS// de las entidades de la //fuenteDosPU// tendrian que heredar de la clase: public abstract class DataAccessService2PUImpl extends DataAccessServiceImpl { @In("entityManagerDosPU") protected EntityManager entityManager; @Override protected EntityManager getEntityManager() { return entityManager; } @Override protected void setEntityManager( EntityManager entityManager ) { this.entityManager = entityManager; } } \\ === Entidades === Para aplicaciones FundeWeb 1.5, parece que es necesario añadir la anotación //@PersistenceUnit// a las entidades, indicando el nombre de la unidad de persistencia a la que pertenecen. Ejemplo para las entidades de la unidad de persitencia //fuenteUnoPU//: import javax.persistence.Entity; import javax.persistence.PersistenceUnit; import javax.persistence.Table; @PersistenceUnit("fuenteUnoPU") @Entity @Table(name = "TABLA_TRES", schema = "ESQUEMA_UNO") public class FundewebPojo1 { ... } Ejemplo para las entidades de la unidad de persitencia //fuenteUnoDos//: import javax.persistence.Entity; import javax.persistence.PersistenceUnit; import javax.persistence.Table; @PersistenceUnit("fuenteUnoDos") @Entity @Table(name = "TABLA_TRES", schema = "ESQUEMA_DOS") public class FundewebPojo3 { ... } ---- --- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 11/03/2020 16:07//