| |||
Cambiar base de datos definida en hibernate.cfg.xml Buenas tardes. Una pregunta, en el archivo de configuración de Hibernate yo defino la base de datos que deseo usar, hasta ahí todo bien. Mi duda es, en algún punto del programa existe una manera de cambiar de base de datos?es decir, cambiar momentáneamente la base de datos definida en Hibernate.cfg.xml por otra?Es que necesito conectarme a una BD ajena a mi portal en un módulo específico y no puedo unir las 2 BD en una. |
| |||
Respuesta: Cambiar base de datos definida en hibernate.cfg.xml Puedes definir dos archivos de Hibernate.cfg.xml independientes, y los trabajas como si se tratasen de archivos paralelos, y vez que necesitas de una clase hibernate util donde obtines la conexion y le especificas el archivos de conexion, ha esta clase le podrias mandar un String indicandole que conexion necesitas, por ejemplo base de datos motos y carros, esta clase puede recibir esos dos valores y obtener la conexion dependiendo del valor del string, el nombre del archivo es puro formato pero le puedes poner HibernateBase1.cfg.xml e HibernateBase2.cfg.xml Espero y esta idea general te sea de ayuda Saludos Dios te bendiga |
| |||
Respuesta: Cambiar base de datos definida en hibernate.cfg.xml Gracias por responder!entiendo la idea y tienes razón pero estoy un poco perdida, Te cuento: Estoy trabajando en Java, con ZK en Eclipse. Tengo mi archivo de configuración de hibernate y mi clase hibernateUtil donde defino el sessionFactory como sigue: public class HibernateUtil { private static final SessionFactory sessionFactory; static { sessionFactory = new Configuration().configure().buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; } en hibernate.cfg.xml como sabes defino: <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.gjt.mm.mysql.Dr iver</property> <property name="connection.url">jdbc:mysql://localhost:3306/PortalWeb</property> . . . Como ves no tengo definida la conexión a la BD en el SessionFactory sino en el archivo de configuración de hibernate. ¿Qué debo hacer? Gracias! |
| |||
Respuesta: Cambiar base de datos definida en hibernate.cfg.xml Hola Vamos a identificar los componentes de Hibernate 1) Archivos de mapping () 2) Archivo de configuración (hibernate.cfg.xml) 3) Hibernate Util () En el primero van tus tablas y le indicas tu Java Bean (el archivo que tiene gettes y setters). En el segundo se escribe la conexion a la base de datos, el usuario, y la contraseña y todos tus parametros relacionados con la base de datos. En el tercero tratandose especificamente lo podemos hacer hací voy a tomar un ejemplo de la pagina http://www.chuidiang.com/chuwiki/index.php?title=Ejemplo_sencillo_con_Hibernate yo con eso aprendí puedes hacer este ejemplo desde cero o el que esta en la pagina web de hibernate es el mismo, hay que darle las gracias y los creditos al autor de ese ejemplo. //codigo original package com.chuidiang.ejemplos.hibernate.ejemplo1; import java.io.File; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from hibernate.cfg.xml sessionFactory = new Configuration().configure(new File("hibernate1.cfg.xml")) .buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } //codigo modificado import java.io.File; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory; private String seleccionarBD; /*creas tus gettes y setter para seleccionarBD*/ static { try { if(getSeleccionarBD.equals("Oracle")){ // Create the SessionFactory from hibernate.cfg.xml sessionFactory = new Configuration().configure(new file("hibernate1.Oracle.xml")) .buildSessionFactory(); }//fin de if else if (getSeleccionarBD.equals("MySql")){ // Create the SessionFactory from hibernate.cfg.xml sessionFactory = new Configuration().configure(new file("hibernate1.Mysql.xml")) .buildSessionFactory(); }//fin del condicional else if //y haci continuas con todos tus archivos hibernate.cfg.xml } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } Vas por buen camino, en el SessionFactory no le indicas los parametros de conexion más bien le dices que archivo de conexión debe tomar. Espero y te ayude. Buen día Dios te bendiga. |