Spring整合Hibernate的多种数据源配置

来源:互联网 发布:python程序开发指南 编辑:程序博客网 时间:2024/05/14 11:24

1。属性占位符配置器:可以将相关属性抽取出来放入配置文件(比如数据库的连接信息),然后用占位符的方式读取出来,方便文件的分类管理

<?xml version="1.0" encoding="GBK"?>
<!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <!-- PropertyPlaceholderConfigurer是一个Bean后处理器,它会读取
        属性文件信息,并将这些信息设置成Spring配置文件的元数据。 -->
    <bean class=
        "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>dbconn.properties</value>
                <!--如果有多个属性文件,依次在下面列出来-->
                <!--value>wawa.properties</value-->
            </list>
        </property>
    </bean>
    <!-- 定义数据源Bean,使用C3P0数据源实现 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <!-- 指定连接数据库的驱动 -->
        <property name="driverClass" value="${jdbc.driverClassName}"/>
        <!-- 指定连接数据库的URL -->
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <!-- 指定连接数据库的用户名 -->
        <property name="user" value="${jdbc.username}"/>
        <!-- 指定连接数据库的密码 -->
        <property name="password" value="${jdbc.password}"/>
    </bean>
</beans>

2.重写占位符配置器:这种方式可以允许xml文件中有默认配置,相当于使用属性文件+XML文件总和,但是需要注意的是配置文件的key的格式必须为:beanName.property,即,bean的名字.属性的名字

<?xml version="1.0" encoding="GBK"?>
<!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <!-- PropertyOverrideConfigurer是一个Bean后处理器,它会读取
    属性文件信息,并用这些信息设置覆盖Spring配置文件的元数据-->
    <bean class=
    "org.springframework.beans.factory.config.PropertyOverrideConfigurer">
        <property name="locations">
            <list>
                <value>dbconn.properties</value>
                <!--如果有多个属性文件,依次在下面列出来-->
            </list>
        </property>
    </bean>
    <!-- 定义数据源Bean,使用C3P0数据源实现,
        配置该Bean时没有指定任何信息,但Properties文件里的
        信息将会直接覆盖该Bean的属性值-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close"/>
</beans>

以上两种配置如果导入了context的Schema,则可以使用<context:property-override location="属性文件路径(列如:classpath:XXX.properties)"/>或则<context:property-placeholder location="属性文件路径(列如:classpath:XXX.properties)"/>代替这两个容器后处理器Bean的配置。


3.如果习惯了使用hibernate的配置风格,可以使用<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:configLocation="classpath:hibernate.cfg.xml"/>,配置多个文件则使用configLocations属性即可。

4.使用Spring的配置风格,<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="数据源的Bean名"/>,

<!-- 依赖注入数据源,注入正是上面定义的dataSource -->
        <property name="dataSource" ref="dataSource"/>
        <!-- mappingResouces属性用来列出全部映射文件 -->
        <property name="mappingResources">
            <list>
                <!-- 以下用来列出Hibernate映射文件 -->
                <value>映射文件全路径名</value>
            </list>
        </property>
        <!-- 定义Hibernate的SessionFactory的属性 -->
        <property name="hibernateProperties">
            <!-- 配置Hibernate属性 -->
            <value>
            hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
            hibernate.hbm2ddl.auto=update
            hibernate.show_sql=true
            hibernate.format_sql=true;
            </value>
        </property>

0 0
原创粉丝点击