Foros del Web » Programación para mayores de 30 ;) » Java »

Cambiar base de datos definida en hibernate.cfg.xml

Estas en el tema de Cambiar base de datos definida en hibernate.cfg.xml en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/12/2009, 12:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 09/12/2009, 17:57
 
Fecha de Ingreso: diciembre-2009
Mensajes: 46
Antigüedad: 14 años, 5 meses
Puntos: 0
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
  #3 (permalink)  
Antiguo 10/12/2009, 07:18
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
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!
  #4 (permalink)  
Antiguo 14/12/2009, 13:20
 
Fecha de Ingreso: diciembre-2009
Mensajes: 46
Antigüedad: 14 años, 5 meses
Puntos: 0
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.
  #5 (permalink)  
Antiguo 29/12/2009, 06:50
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Cambiar base de datos definida en hibernate.cfg.xml

Muchas gracias Mario, lo haré y después te comento los resultados. Dios te bendiga a ti también.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:33.