- 浏览: 2261818 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
为了操作方便,我们经常在spring整合hibernate的WEB项目中省去了用hibernate.cfg.xml的麻烦,将hibernate的信息直接配置在
Spring配置文件中
下面的都是针对Spring整合Hibernate(注解方式的hibernate)来说的
hibernate.cfg.xml和applicationContext.xml原始配置组合方式:
hibernate.cfg.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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>
<!--
这个只在DBScriptExport.java的new AnnotationConfiguration().configure()或者
new Configuration().configure();这里面由于生成数据库表,或者通过
config.buildSessionFactory都需要用到下面这四行关于数据库的配置.实际项目中,
如果不适用到硬编码做这两件事,而是通过和Spring配合,那么这四行可以不写
-->
<!--
<property name="hibernate.current_session_context_class">thread</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- mapping类声明-->
<mapping class="com.javacrazyer.domain.User" />
</session-factory>
</hibernate-configuration></SPAN>
<?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>
<!--
这个只在DBScriptExport.java的new AnnotationConfiguration().configure()或者
new Configuration().configure();这里面由于生成数据库表,或者通过
config.buildSessionFactory都需要用到下面这四行关于数据库的配置.实际项目中,
如果不适用到硬编码做这两件事,而是通过和Spring配合,那么这四行可以不写
-->
<!--
<property name="hibernate.current_session_context_class">thread</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- mapping类声明-->
<mapping class="com.javacrazyer.domain.User" />
</session-factory>
</hibernate-configuration>
上面注释其实也没讲清楚,其实就是如果单独的hibernate项目来说,如果涉及到数据库操的任何操作代码,那么你必须配那段被注
释掉的数据库连接信息,如果是整合Spring的话,那么就不用配置了,Spring提供了对hibernate支持的SessionFactory可以再注入
后获取SESSION,然后你就可以任意去实现数据库操作了
applicationContext.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-
2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!--指定hibernate配置文件的位置-->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<!--
那么这里给sessionFactory注入dataSource的解释:其实就是相当于单独的hibernate项目中使用
config.buildSessionFactory()这样手动构建SessionFactory一样,必须提供有关数据库的参数配
置信息也就是在hibernate.cfg.xm中 配置的数据库信息,这样使用session才能关联上数据库
-->
<property name="dataSource" ref="dataSource" />
</bean>
<!--如果不配置SessionFactory,配置Spring自带的JdbcTemplate也挺好,然后注入到需要用到的类中去-->
<!--
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<description>Config jdbcTemplate</description> <property
name="dataSource" ref="dataSource" /> </bean>
-->
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans></SPAN>
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring
-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-
tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!--指定hibernate配置文件的位置-->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<!--
那么这里给sessionFactory注入dataSource的解释:其实就是相当于单独的hibernate项目中使用
config.buildSessionFactory()这样手动构建SessionFactory一样,必须提供有关数据库的参数配
置信息也就是在hibernate.cfg.xm中 配置的数据库信息,这样使用session才能关联上数据库
-->
<property name="dataSource" ref="dataSource" />
</bean>
<!--如果不配置SessionFactory,配置Spring自带的JdbcTemplate也挺好,然后注入到需要用到的类中去-->
<!--
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<description>Config jdbcTemplate</description> <property
name="dataSource" ref="dataSource" /> </bean>
-->
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans>
上面关于SessionFactory注释说过了,如果不需要hibernate有关数据库的操作的话,那么就不要结合hibernate框架而是通过
Spring自带的JdbcTemplate来进行数据库操作
不要hibernate.cfg.xml,将hibernate基本信息配置在applicatonContext.xm中
applicationContext.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="format_sql">true</prop>
<prop key="show_sql">true</prop>
<prop key="cache.use_query_cache">true</prop>
<prop key="cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</prop>
<prop key="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>
</property>
<!-- 针对xml而非注解方式的资源配置方式一 -->
<!-- <property name="mappingResources"> <list>
<value>com/javacrazyer/domain/user.hbm.xml</value> </list>
</property> -->
<!-- 针对xml而非注解方式的资源配置方式二 -->
<!--<property name="mappingLocations"> <list> <value>
classpath:com/javacrazyer/domain/user.hbm.xml </value> </list>
</property>-->
<property name="annotatedClasses">
<list>
<value>com.javacrazyer.domain.User</value>
</list>
</property>
</bean>
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans></SPAN>
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="format_sql">true</prop>
<prop key="show_sql">true</prop>
<prop key="cache.use_query_cache">true</prop>
<prop key="cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</prop>
<prop key="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>
</property>
<!-- 针对xml而非注解方式的资源配置方式一 -->
<!-- <property name="mappingResources"> <list>
<value>com/javacrazyer/domain/user.hbm.xml</value> </list>
</property> -->
<!-- 针对xml而非注解方式的资源配置方式二 -->
<!--<property name="mappingLocations"> <list> <value>
classpath:com/javacrazyer/domain/user.hbm.xml </value> </list>
</property>-->
<property name="annotatedClasses">
<list>
<value>com.javacrazyer.domain.User</value>
</list>
</property>
</bean>
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans> 注意与第一种方式不同的是applicatonContext.xml中只有sessionFactory发生了变化,数据源依旧注入到里面去,原来
该配置hibernate.cfg.xml文件位置的配置现在换成了,众多行与第一种方式中hibernate.cfg.xml中类似的信息配置。
这样来说呢,更加省事些,当然我指的是SH结合的情况下,如果是hibernate单独的项目,必然用到new
AnnotationConfiguration.config()就必然需要默认查找src下的hibernate.cfg.xml
我自己比较 喜欢用第二种。
Spring配置文件中
下面的都是针对Spring整合Hibernate(注解方式的hibernate)来说的
hibernate.cfg.xml和applicationContext.xml原始配置组合方式:
hibernate.cfg.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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>
<!--
这个只在DBScriptExport.java的new AnnotationConfiguration().configure()或者
new Configuration().configure();这里面由于生成数据库表,或者通过
config.buildSessionFactory都需要用到下面这四行关于数据库的配置.实际项目中,
如果不适用到硬编码做这两件事,而是通过和Spring配合,那么这四行可以不写
-->
<!--
<property name="hibernate.current_session_context_class">thread</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- mapping类声明-->
<mapping class="com.javacrazyer.domain.User" />
</session-factory>
</hibernate-configuration></SPAN>
<?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>
<!--
这个只在DBScriptExport.java的new AnnotationConfiguration().configure()或者
new Configuration().configure();这里面由于生成数据库表,或者通过
config.buildSessionFactory都需要用到下面这四行关于数据库的配置.实际项目中,
如果不适用到硬编码做这两件事,而是通过和Spring配合,那么这四行可以不写
-->
<!--
<property name="hibernate.current_session_context_class">thread</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- mapping类声明-->
<mapping class="com.javacrazyer.domain.User" />
</session-factory>
</hibernate-configuration>
上面注释其实也没讲清楚,其实就是如果单独的hibernate项目来说,如果涉及到数据库操的任何操作代码,那么你必须配那段被注
释掉的数据库连接信息,如果是整合Spring的话,那么就不用配置了,Spring提供了对hibernate支持的SessionFactory可以再注入
后获取SESSION,然后你就可以任意去实现数据库操作了
applicationContext.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-
2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!--指定hibernate配置文件的位置-->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<!--
那么这里给sessionFactory注入dataSource的解释:其实就是相当于单独的hibernate项目中使用
config.buildSessionFactory()这样手动构建SessionFactory一样,必须提供有关数据库的参数配
置信息也就是在hibernate.cfg.xm中 配置的数据库信息,这样使用session才能关联上数据库
-->
<property name="dataSource" ref="dataSource" />
</bean>
<!--如果不配置SessionFactory,配置Spring自带的JdbcTemplate也挺好,然后注入到需要用到的类中去-->
<!--
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<description>Config jdbcTemplate</description> <property
name="dataSource" ref="dataSource" /> </bean>
-->
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans></SPAN>
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring
-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-
tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!--指定hibernate配置文件的位置-->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<!--
那么这里给sessionFactory注入dataSource的解释:其实就是相当于单独的hibernate项目中使用
config.buildSessionFactory()这样手动构建SessionFactory一样,必须提供有关数据库的参数配
置信息也就是在hibernate.cfg.xm中 配置的数据库信息,这样使用session才能关联上数据库
-->
<property name="dataSource" ref="dataSource" />
</bean>
<!--如果不配置SessionFactory,配置Spring自带的JdbcTemplate也挺好,然后注入到需要用到的类中去-->
<!--
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<description>Config jdbcTemplate</description> <property
name="dataSource" ref="dataSource" /> </bean>
-->
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans>
上面关于SessionFactory注释说过了,如果不需要hibernate有关数据库的操作的话,那么就不要结合hibernate框架而是通过
Spring自带的JdbcTemplate来进行数据库操作
不要hibernate.cfg.xml,将hibernate基本信息配置在applicatonContext.xm中
applicationContext.xml
Xml代码
<SPAN style="FONT-SIZE: large"><?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="format_sql">true</prop>
<prop key="show_sql">true</prop>
<prop key="cache.use_query_cache">true</prop>
<prop key="cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</prop>
<prop key="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>
</property>
<!-- 针对xml而非注解方式的资源配置方式一 -->
<!-- <property name="mappingResources"> <list>
<value>com/javacrazyer/domain/user.hbm.xml</value> </list>
</property> -->
<!-- 针对xml而非注解方式的资源配置方式二 -->
<!--<property name="mappingLocations"> <list> <value>
classpath:com/javacrazyer/domain/user.hbm.xml </value> </list>
</property>-->
<property name="annotatedClasses">
<list>
<value>com.javacrazyer.domain.User</value>
</list>
</property>
</bean>
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans></SPAN>
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 使用C3P0的连接池技术 -->
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="20" />
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1" />
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="format_sql">true</prop>
<prop key="show_sql">true</prop>
<prop key="cache.use_query_cache">true</prop>
<prop key="cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</prop>
<prop key="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>
</property>
<!-- 针对xml而非注解方式的资源配置方式一 -->
<!-- <property name="mappingResources"> <list>
<value>com/javacrazyer/domain/user.hbm.xml</value> </list>
</property> -->
<!-- 针对xml而非注解方式的资源配置方式二 -->
<!--<property name="mappingLocations"> <list> <value>
classpath:com/javacrazyer/domain/user.hbm.xml </value> </list>
</property>-->
<property name="annotatedClasses">
<list>
<value>com.javacrazyer.domain.User</value>
</list>
</property>
</bean>
<!--
下面是Hibernate的事务管理器 ,如果是单独spring框架的项目中配置spring事务,那么就没有上边
的sessionFactory而只会有dataSource,那么下面属性就不是sesionFactory而是DataSource了
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 启用注解方式的声明式事务支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- =============================================== -->
<bean id="userDao" class="com.javacrazyer.dao.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sf" class="com.javacrazyer.service.ServiceFacade">
<property name="userDao" ref="userDao" />
</bean>
</beans> 注意与第一种方式不同的是applicatonContext.xml中只有sessionFactory发生了变化,数据源依旧注入到里面去,原来
该配置hibernate.cfg.xml文件位置的配置现在换成了,众多行与第一种方式中hibernate.cfg.xml中类似的信息配置。
这样来说呢,更加省事些,当然我指的是SH结合的情况下,如果是hibernate单独的项目,必然用到new
AnnotationConfiguration.config()就必然需要默认查找src下的hibernate.cfg.xml
我自己比较 喜欢用第二种。
发表评论
-
Dubbo Main启动方式浅析
2015-05-27 13:54 15455关键字:Dubbo Main启动方式浅析 服务容器是一个s ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1076关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
基于Spring可扩展Schema提供自定义配置支持
2014-07-21 18:38 1009关键字:基于Spring可扩展Schema提供自定义配置支持 ... -
spring 自定义注解实现(MVC层)
2014-07-21 17:32 865关键字:spring 自定义注解实现(MVC层) 前言 在 ... -
Spring MVC 单元测试
2013-12-10 17:56 7977关键字:Spring MVC 单元测试 下面一步一步带领大家 ... -
优化程序之前,可用Jamon来监测你的Spring应用
2013-11-28 23:52 2050关键字:优化程序之前,可用Jamon来监测你的Spring应 ... -
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
2013-11-14 14:01 77275关键字:spring容器加载完毕做一件事情(利用Context ... -
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3
2013-10-30 17:41 2285关键字:Java MVC框架性能比较 jsp、struts1 ... -
spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)
2013-03-26 15:07 9199关键字:spring JTA集成JOTM或Atomikos配置 ... -
mongodb spring支持
2012-12-17 10:11 1027关键字:mongodb spring支持 相关链接: ... -
spring aop实现日志功能
2012-11-22 14:48 3360关键字 :sping aop实现日志功能 附件是spin ... -
Spring + CXF + 注解方式(webService)
2012-11-02 11:34 6775关键字:Spring + CXF + 注解方式(webS ... -
Spring + Xfire + 注解方式
2012-11-01 15:08 1253关键字:Spring 与集成 Xfire 注解方式( Spr ... -
spring rest mvc使用RestTemplate调用
2012-11-01 12:25 70411关键字:RestTemplate使用 可参考博客: ... -
java面向切面编程
2011-09-24 15:37 2361关键字:java面向切面编程 原理简述:java面向切面编 ... -
SpringMVC添加支持Http的delete、put请求
2011-06-02 23:28 3410浏览器form表单只支持GET与POST请求,而DEL ... -
springMVC有关RESTfull
2011-06-02 22:58 5330关键字:springMVC有关RESTfull Sp ... -
spring文件上传(3.0)
2011-06-02 22:44 2959关键字:Spring CommonsMultipartReso ... -
spring3.0多文件上传例子
2011-06-02 22:43 6674关键字:spring3.0多文件 ... -
spring3.0 mvc rest 注解之@
2011-05-16 22:17 3549关键字:spring mvc rest 注解之@ 本文转自h ...
相关推荐
通过在 `ApplicationContext.xml` 配置文件中定义一个 bean,我们可以将数据库连接信息(如数据源 `dataSource`)和 Hibernate 相关属性(如方言 `dialect`)注入到 SessionFactory 中。以下是一个示例配置: ```...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...
Spring 和 Hibernate 是两个非常重要的 Java 开发框架,它们在企业级应用开发中有着广泛的应用。...通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发能力。
2. **配置Hibernate**:在Spring中配置Hibernate,需要创建一个Hibernate配置文件(如hibernate.cfg.xml),设置数据源、实体扫描路径、JDBC连接信息、方言等参数。同时,还需要在Spring的配置文件(如...
然后,需要在Spring配置文件中配置HibernateTransactionManager,以便Spring可以管理Hibernate的事务。这一步是实现Spring的事务管理功能,确保数据操作的原子性和一致性。 在业务层,可以使用Spring的@Autowired...
3. 配置简化:Spring可以统一管理Hibernate的SessionFactory和Session,简化配置文件。 4. AOP集成:Spring的AOP可以与Hibernate的事务管理结合,提供更灵活的事务策略。 四、整合步骤 1. 引入依赖:在项目中添加...
在Spring中,你可以通过配置文件或注解来管理对象的生命周期和依赖关系。 **Hibernate ORM** Hibernate作为Java世界中的主流ORM框架,允许开发者用面向对象的方式来处理数据库操作,降低了SQL编程的复杂性。它支持...
Spring配置文件中会定义SessionFactory的bean,而Hibernate配置文件则包含了数据库连接信息。 2. **实体类**:代表数据库中的表,通常会使用Hibernate的注解来描述字段与表列的映射。 3. **DAO(数据访问对象)**...
在配置阶段,选择让Spring管理Hibernate的配置文件,即指定`applicationContext.xml`文件,并为SessionFactory指定一个ID。 6. **创建Hibernate实体类和映射文件** 编写与数据库表对应的Java实体类,并创建对应的...
4. **整合Spring与Hibernate**:在Spring的配置文件中,配置SessionFactory和HibernateTemplate或HibernateDaoSupport,以便Spring能够管理Hibernate的session。 5. **整合Struts2与Spring**:使用Spring-Struts2的...
在本整合中,Spring 2.5.6版本主要作为业务逻辑的管理和协调者,它可以通过配置文件管理Bean的生命周期,同时与Hibernate和Struts进行无缝集成。 Hibernate 3.2是一个流行的ORM(对象关系映射)工具,它消除了...
2. **集成Hibernate**:在Spring配置文件中,我们需配置Hibernate的SessionFactory,并利用Spring的JDBC模板或HibernateTemplate进行数据访问。这一步骤包括创建Hibernate的实体类、映射文件以及数据访问接口。 3. ...
整合SSH涉及到的主要配置文件有`struts2-spring-plugin.xml`、`spring-context.xml`以及Hibernate的相关配置文件(如`hibernate.cfg.xml`)。`struts2-spring-plugin.xml`配置Struts2与Spring的集成,确保Action类由...
1. **配置Hibernate**:在Spring的配置文件中,我们需要配置Hibernate的属性,如数据库连接信息、方言、实体扫描路径等,以及SessionFactory bean。 2. **配置事务管理器**:创建PlatformTransactionManager类型的...
2. `src/main/resources`:存放配置文件,如Spring的`applicationContext.xml`和Hibernate的`hibernate.cfg.xml`。 3. `WEB-INF`:Web应用的特定目录,包含`web.xml`。 **步骤2:配置Spring** 在`...
在`Hibernate`与`Spring`的整合中,通常会有一个`hibernate.cfg.xml`配置文件,用来定义数据库连接信息、实体类的映射等。同时,`Spring`的配置文件(如`applicationContext.xml`)中会包含`Hibernate`的相关bean...
"示例代码"意味着我们将探讨具体的编程实践,包括配置文件(如Spring的beans.xml和Hibernate的hibernate.cfg.xml)、实体类、DAO(Data Access Object)接口和实现、以及Service层的代码。这些代码将展示如何在...
Hibernate配置文件主要包含数据库连接信息、JDBC驱动、实体类映射等。例如: ```xml <hibernate-configuration> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect <property name="...
在整合Spring MVC、Spring和Hibernate时,通常步骤如下: 1. 配置Spring:首先,我们需要配置Spring的ApplicationContext,定义Bean并管理它们的生命周期。这通常通过XML或Java配置完成,包括Spring MVC的...