Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2010, 06:40
CaSTy
 
Fecha de Ingreso: diciembre-2010
Ubicación: Madrid
Mensajes: 42
Antigüedad: 14 años, 1 mes
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!