`
陈谏辉
  • 浏览: 49268 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Spring + Hibernate 实现多数据库链接

阅读更多

1、配置数据库文件dbconfig.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/mallDBE?useUnicode=true&characterEncoding=utf-8
jdbc.urlCenter=jdbc:mysql://localhost/mallDB?useUnicode=true&characterEncoding=utf-8
#jdbc.url=jdbc:mysql://220.231.152.176:3418/mallDBE?useUnicode=true&characterEncoding=utf-8
jdbc.username=dingDang
jdbc.password=dingdang
#jdbc.username=mall
#jdbc.password=d4#2dk*sd
jdbc.minConnections=10
jdbc.maxConnections=300
#jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver
#jdbc.url=jdbc:jtds:sqlserver://192.168.16.226:1433/dingDang;tds=8.0;lastupdatecount=true

hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.cache.use_second_level_cache=true
#hibernate.dialect=com.dingDang.mall.dao.dialect.SQLServerDialectInDingDang
#messageSource
messageSource.cacheSeconds=-1

2、依赖注入配置信息spring-resources.xml

<!-- Default DBCP datasource -->
<bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.minConnections}"/>
<property name="maxActive" value="${jdbc.maxConnections}"/>
<property name="maxIdle" value="100"/>
<property name="minIdle" value="${jdbc.minConnections}"/>
<property name="maxWait" value="5000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="300"/>
<property name="logAbandoned" value="false"/>
<property name="poolPreparedStatements" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="validationQuery" value="select count(*) from app_role where 1=0"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy" lazy-init="false">
<property name="targetDataSource" ref="dbcpDataSource" />
</bean>
<!-- the center of user database control -->
<bean id="ct_DbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.urlCenter}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.minConnections}"/>
<property name="maxActive" value="${jdbc.maxConnections}"/>
<property name="maxIdle" value="100"/>
<property name="minIdle" value="${jdbc.minConnections}"/>
<property name="maxWait" value="5000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="300"/>
<property name="logAbandoned" value="false"/>
<property name="poolPreparedStatements" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="validationQuery" value="select count(*) from app_role where 1=0"/>
</bean>
<bean id="ct_DataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy" lazy-init="false">
<property name="targetDataSource" ref="ct_DbcpDataSource" />
</bean>

3、hibernate配置文件spring-hibernate.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="com.dingDang.mall.core.hibernate.LocalSessionFactoryBean" lazy-init="false">
<property name="dataSource" ref="dataSource" />
<property name="lobHandler">
<bean class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
</property>
<!-- I tried cacheableMappingLocations but it turned out to be more slow. -->
<property name="mappingLocations">
<list>
<value>classpath*:com/dingDang/mall/**/*.hbm.xml</value>
<!-- <value>classpath*:org/jbpm/**/*.hbm.xml</value> -->
</list>
</property>
<!-- Create/update the database tables automatically when the JVM starts up -->
<!-- <property name="schemaUpdate" value="true"/> -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.default_batch_fetch_size">10</prop>
<prop key="hibernate.jdbc.batch_versioned_data">true</prop>
<prop key="hibernate.jdbc.fetch_size">10</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.default_entity_mode">pojo</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
<prop key="net.sf.ehcache.configurationResourceName">conf/ehcache.xml</prop>
<!-- Note, you can turn off hibernate caching by setting it to be false -->
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
</props>
</property>
<property name="entityCacheStrategies">
<props>
<prop key="com.dingDang.mall.common.model.system.Membership">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.catalog.Attribute">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.system.MetricType">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.system.MetricUnit">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.catalog.Department">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.catalog.Manufacturer">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.sales.CouponType">nonstrict-read-write</prop>
<prop key="com.dingDang.mall.common.model.sales.RecommendedType">nonstrict-read-write</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="defaultTimeout" value="30" />
</bean>
<!-- Hibernate SessionFactory -->
<bean id="Ct_SessionFactory" class="com.dingDang.mall.core.hibernate.LocalSessionFactoryBean" lazy-init="false">
<property name="dataSource" ref="ct_DataSource" />
<property name="lobHandler">
<bean class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
</property>
<property name="mappingLocations">
<list><value>classpath*:outSystem/mytest/*.hbm.xml</value></list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.default_batch_fetch_size">10</prop>
<prop key="hibernate.jdbc.batch_versioned_data">true</prop>
<prop key="hibernate.jdbc.fetch_size">10</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.default_entity_mode">pojo</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
<prop key="net.sf.ehcache.configurationResourceName">conf/ehcache.xml</prop>
<!-- Note, you can turn off hibernate caching by setting it to be false -->
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
</props>
</property>
</bean>
<bean id="ct_TransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="Ct_SessionFactory" />
<property name="defaultTimeout" value="30" />
</bean>
</beans>

5、配置sprinDAO文件spring-dao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans default-lazy-init="true">
<!-- create two Hibernate based DAOs , that's refer two database -->
<bean id="hibernateGenericDao" class="com.dingDang.mall.core.dao.impl.HibernateGenericDaoImpl" abstract="true">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="ct_HibernateGenericDao" class="com.dingDang.mall.core.dao.impl.HibernateGenericDaoImpl" abstract="true">
<property name="sessionFactory" ref="Ct_SessionFactory" />
</bean>
<!-- Add new DAOs here -->
<!-- ========================= Start of Normal DAO DEFINITIONS ========================= -->
<!-- Note that all must extend the base definition of genericDAO.-->
<bean id="userDAO" class="com.dingDang.mall.system.dao.impl.UserDAOImpl" parent="hibernateGenericDao"/>

<bean id="testDAO" class="com.dingDang.mall.system.dao.impl.TestDAOImpl" parent="ct_hibernateGenericDao"/>

</bean><!-- 注意不同的数据库对应不同的parent DAO -->

6、配置springManager文件spring-manager.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans default-lazy-init="true">
<!-- Transaction template for all Managers -->
<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="set*">PROPAGATION_NOT_SUPPORTED,readOnly</prop>
<prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="is*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="search*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="load*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="update*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="create*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="add*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="delete*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="do*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="*">PROPAGATION_SUPPORTS</prop>
</props>
</property>
</bean>
<bean id="ct_TxProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="ct_TransactionManager" />
<property name="transactionAttributes">
<props>
<prop key="set*">PROPAGATION_NOT_SUPPORTED,readOnly</prop>
<prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="is*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="search*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="load*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="update*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="create*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="add*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="delete*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="do*">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED</prop>
<prop key="*">PROPAGATION_SUPPORTS</prop>
</props>
</property>
</bean>

</bean><!-- 不同数据库的manager对应不同的 managerbase -->

分享到:
评论

相关推荐

    struts+spring+hibernate实现图书修改和删除

    例如,struts.xml中配置Action类及其结果视图,applicationContext.xml中配置Spring Bean,而hibernate.cfg.xml则定义了数据库连接和实体类映射。 在本项目中,"说明.txt"文件可能包含了详细的步骤指导,包括如何...

    struts+spring+hibernate基础整合包+数据库Mysql+C3p0

    现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射...

    SpringMVC+Spring+HIbernate简单数据库实例.zip

    这个压缩包文件"SpringMVC+Spring+HIbernate简单数据库实例.zip"提供了一个基本的示例,展示了如何整合这三个框架来实现与数据库的交互。以下是关于SSH集成的详细知识点: 1. **Spring框架**:Spring是一个全面的...

    strut+spring+hibernate注册登录系统

    这个"Strut+Spring+Hibernate注册登录系统"是一个基础的Web应用程序,旨在帮助初学者理解如何将这三个框架集成并实现用户管理功能。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,负责...

    struts+spring+hibernate

    Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们构成了经典的“SSH”(Struts + Spring + Hibernate)企业级应用开发架构。这个架构为开发者提供了模型-视图-控制器(MVC)设计模式的实现,...

    struts2+spring+hibernate+ajax纳税服务.rar

    在“纳税服务”系统中,Hibernate可能被用来处理用户管理、角色权限等涉及数据库操作的部分,通过定义实体类和映射文件,可以实现数据库表和Java对象之间的自动转换,降低了数据库操作的复杂度。 Ajax在前端发挥了...

    spring+hibernate+webwork相关配置

    标题 "spring+hibernate+webwork相关配置" 指的是一个集成开发环境的配置,其中涵盖了三个关键的技术框架:Spring、Hibernate和WebWork。这些框架在Java Web开发中非常常见,主要用于实现依赖注入、持久化管理和MVC...

    spring+struts2+hibernate整合实现分页

    在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...

    jsp+struts+spring+hibernate新闻系统

    在本新闻系统中,Spring可能用于管理Bean的生命周期,提供事务管理,以及通过Spring的Hibernate支持整合数据库操作。Spring的IoC容器可以轻松地将其他组件(如Struts和Hibernate)集成到一起,减少了耦合度。 **...

    spring+struts+hibernate实现文件的上传和下载

    【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...

    Struts + Spring +Hibernate

    【Struts + Spring +Hibernate】框架组合是Java开发中经典的MVC模式实现,适用于构建大型企业级Web应用程序。这三个框架的结合,通常被称为SSH框架,提供了强大的功能和灵活性。 Struts是MVC框架的一种实现,负责...

    Struts+Spring+Hibernate实现上传下载

    在映射文件中,Blob字段的type设置为`org.springframework.orm.hibernate3.support.BlobByteArrayType`,这是Spring提供的自定义类型,便于处理数据库中的Blob字段。Spring使用`OracleLobHandler`处理Oracle数据库中...

    用maven整合struts+spring+hibernate

    在IT行业中,构建大型企业级应用时,常常需要将多个技术框架进行整合,以实现高效、灵活和可维护的架构。"用maven整合struts+spring+hibernate"这个主题,就是关于如何将这三大核心框架——Struts、Spring和...

    基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现,内含有可直接运行的源代码以及数据库文件。由于项目中jar包过大,所以将源代码放在了百度网盘中,请根据文件中的链接以及提取码,下载源码。

    SFS + spring + hibernate + mysql

    标题 "SFS + spring + hibernate + mysql" 暗示了这个项目是关于使用Spring框架、Hibernate ORM工具以及MySQL数据库来构建一个基于Java的Web应用程序。这些技术都是IT行业中非常重要的组成部分,尤其是在企业级应用...

    struts+spring+hibernate 分页

    总的来说,Struts+Spring+Hibernate 分页涉及到前端交互、后端服务、数据库查询等多个环节,需要综合运用这三个框架的能力。理解并熟练掌握这一过程,对于开发高效、可维护的Web应用具有重要意义。

    webservice提供数据访问spring+hibernate

    4. **定义DAO层**:使用Spring的HibernateTemplate或JdbcTemplate,编写数据访问对象(DAO),实现对数据库的操作。 5. **定义Service层**:创建业务服务接口和实现,使用Spring的@Autowired注解注入DAO,封装业务...

    hibernate连接金仓数据库所需jar包集合lib.7z

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过Java对象来操作数据库,极大地简化了数据库操作。金仓数据库,又称为Kingbase,是一款国产的高性能、高可靠性的关系型数据库管理...

    struts2+spring2+hibernate3注册查询搜索分页实例

    在本实例中,Spring2可以管理Struts2的Action类,实现Action类间的依赖关系,同时也可以配置数据访问层(DAO)以连接数据库。Spring2的AOP(面向切面编程)特性,可以用于事务管理,确保注册等操作的原子性。 再者...

    JSF+Spring+Hibernate实例

    将Hibernate与JSF和Spring结合,可以实现数据持久化的无缝集成。 在本文中,我们将探讨如何将这三个框架整合起来,构建一个名为JCatalog的Web应用程序,这是一个在线产品目录系统。JCatalog展示了如何在实际开发中...

Global site tag (gtag.js) - Google Analytics