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

¿Una sola Base de Datos y varios session-factory con Hibernet?

Estas en el tema de ¿Una sola Base de Datos y varios session-factory con Hibernet? en el foro de Java en Foros del Web. Hola a todos bueno vereis, tengo una base de datos en la que algunas tablas están usando el engine InnoDB y otras tablas están usando ...
  #1 (permalink)  
Antiguo 17/12/2010, 06:40
 
Fecha de Ingreso: diciembre-2010
Ubicación: Madrid
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 1
¿Una sola Base de Datos y varios session-factory con Hibernet?

Hola a todos bueno vereis, tengo una base de datos en la que algunas tablas están usando el engine InnoDB y otras tablas están usando el engine MyISAM.

Me gustaría saber como puedo configurar el archivo hibernate.cfg.xml para tener dos session-factory distintos en el que uno de los session sea con un dialecto y el otro session use el otro.

Estoy utilizando Spring también, por lo que necesitaria modificar también el archivo ApplicationContext.xml

La verdad es que no se como hacerlo, ¿alguien me puede echar una mano? Todas las tablas (tanto las que usan MyISAM y las que usan InnoDB estan en la misma base de datos)

Aquí os pongo mis hibernate.cfg.xml y applicationContext.xml

Hibernate.cfg.xml

Código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <mapping class="materiales.model.Anuncio" />
    <mapping class="materiales.model.Transportista" />
    <mapping class="materiales.model.Gestor" />    
    <mapping class="materiales.model.Categoria" />
    <mapping class="materiales.model.Locacion" />
  </session-factory>


</hibernate-configuration>
ApplicationContext.xml

Código:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/habitec?createDatabaseIfNotExist=true" />
        <property name="username" value="root" />
        <property name="password" value="samu@31" />
    </bean>

    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="file:C:/Users/Samuel/Documents/NetBeansProjects/HabitecSpringHibernate/src/java/hibernate.cfg.xml"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="dataSource" ref="dataSource"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven />

    <context:component-scan base-package="materiales" />

</beans>
Un saludo y mil gracias!
  #2 (permalink)  
Antiguo 20/12/2010, 06:19
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: ¿Una sola Base de Datos y varios session-factory con Hibernet?

En TopLink existen la Peristence Unit a la cual le das un nombre y de ahí partís con las Factory y EntityManager..

Estoy casi seguro que Hibernate también lo soporta..
Siendo así lo único que tendrías que hacer es duplicar el contenido del persistence.xml y crear las
Código Java:
Ver original
  1. EntityManagerFactory emf = Persistence.createEntityManagerFactory("db_myISAM");
  2. EntityManagerFactory emf2 = Persistence.createEntityManagerFactory("db_InnoDB");

Código XML:
Ver original
  1. <persistence-unit name="db_myISAM" transaction-type="RESOURCE_LOCAL">
  2.       <provider>oracle.toplink.essentials.PersistenceProvider</provider>
  3.    <!-- el resto.................
Código XML:
Ver original
  1. <persistence-unit name="db_InnoDB" transaction-type="RESOURCE_LOCAL">
  2.       <provider>oracle.toplink.essentials.PersistenceProvider</provider>

Espero te sirva de algo..
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 22/12/2010, 03:51
 
Fecha de Ingreso: diciembre-2010
Ubicación: Madrid
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: ¿Una sola Base de Datos y varios session-factory con Hibernet?

Hola compañero!

Perdona no haberte respondido antes pero no he tenido tiempo para mirarlo. Muchas gracias por la información y espero ponerme manos a la obra cuanto antes!! Ahora mismo estoy teniendo un pequeño problema de configuración con hibernate así que lo de crear otro sessionFactory me parece que lo voy a dejar para otro día cuando este todo bien configurado... jejeje

Un saludo y muchas gracias!

Etiquetas: Ninguno
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 11:57.