你的位置:首页 > Java教程

[Java教程]spring mvc+spring + hibernate 整合(一)


一:创建maven工程,引入需要的依赖包,创建项目的工程包


二:整合spring和hibernate
    1.建立sql server数据库访问的jdbc配置文件。
        这个配置文件主要是用来将sql server的连接参数放在外面配置,当参数有变动时只需要修改配置文件,不需要修改web-inf下的spring.
不建立也可以,如果不建立则spring.
  1. jdbcUrl = jdbc:sqlserver://localhost:1433;DatabaseName=dbStudy
  2. driverClass = com.microsoft.sqlserver.jdbc.SQLServerDriver
  3. username = sa
  4. password = sql2008

    2.建立hibernate的配置文件
        因为是由IOC容器来管理Hibernate的SessionFactory并且在Hibernate使用上Spring的声明式事务,所以hibernate的一些配置都可以放在spring的配置文件中。但是为了使配置文件看起啦比较清晰,我还是将hibernate的基本信息单独配置。
  1. <?="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 配置连接数据库的基本信息 -->
  8. <!-- 1.数据源配置到IOC容器中,所以此处不再需要配置数据源 2.关联的.hbm.
  9. 3.配置Hibernate的基本属性:方言、SQL显式及格式化、生成数据表的策略以及二级缓存等 -->
  10. <!-- 配置hibernate基本信息 -->
  11. <!-- hibernate所使用的数据库方言 -->
  12. <!-- mysql的Dialect方言配置 -->
  13. <!-- <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> -->
  14. <!-- SQL Server的Dialect方言配置 -->
  15. <propertyname="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
  16. <!-- Oracle的Dialect方言配置 -->
  17. <!-- <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> -->
  18. <!-- 执行操作时是否在控制台打印sql -->
  19. <propertyname="show_sql">true</property>
  20. <!-- 是否对SQL进行格式化 -->
  21. <propertyname="format_sql">true</property>
  22. <!-- 指定自动生成数据表的策略 -->
  23. <propertyname="hbm2ddl.auto">update</property>
  24. </session-factory>
  25. </hibernate-configuration>

    3.建立spring的配置文件

    1)配置自动检测

  1. <!-- 配置自动检测 -->
  2. <!-- Enable annotation configuration -->
  3. <context:annotation-config/>
  4. <!-- Scan packages for Spring annotations -->
  5. <context:component-scanbase-package="com.ympcSoft"/>

    2)配置数据源,本例使用的是阿里巴巴的durid数据源

    代码1:不使用外部属性来配置数据库连接
  1. <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close">
  2. <!-- mysql 数据库连接配置 -->
  3. <!--
  4. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  5. <property name="url" value="jdbc:mysql://localhost:3306/forestry?useUnicode=true&amp;characterEncoding=utf-8" />
  6. <property name="username" value="root" />
  7. <property name="password" value="123456" />
  8. -->
  9. <!-- oracle 数据库连接配置 -->
  10. <!--
  11. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  12. <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
  13. <property name="username" value="SYSTEM" />
  14. <property name="password" value="SkyNet888999" />
  15. -->
  16. <!-- sql server 数据库连接配置 -->
  17. <propertyname="driverClassName"value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  18. <propertyname="url"value="jdbc:sqlserver://localhost:1433;DatabaseName=dbStudy"/>
  19. <propertyname="username"value="sa"/>
  20. <propertyname="password"value="sql2008"/>
  21. <!-- 配置初始化大小、最小、最大 -->
  22. <propertyname="initialSize"value="1"/>
  23. <propertyname="minIdle"value="1"/>
  24. <propertyname="maxActive"value="20"/>
  25. <!-- 配置获取连接等待超时的时间 -->
  26. <propertyname="maxWait"value="60000"/>
  27. <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  28. <propertyname="timeBetweenEvictionRunsMillis"value="60000"/>
  29. <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  30. <propertyname="minEvictableIdleTimeMillis"value="300000"/>
  31. <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
  32. <propertyname="poolPreparedStatements"value="true"/>
  33. <propertyname="maxPoolPreparedStatementPerConnectionSize"value="20"/>
  34. <!-- 配置监控统计拦截的filters -->
  35. <propertyname="filters"value="stat,log4j"/>
  36. </bean>

    代码2:使用外部属性来配置数据库连接

  1. <!-- 引入 sql server 属性配置文件-->
  2. <context:property-placeholderlocation="classpath:sqlserver.properties"/>
  3. <!-- sql server 数据库连接配置 -->
  4. <propertyname="driverClassName"value="${driverClass}"/>
  5. <propertyname="url"value="${jdbcUrl}"/>
  6. <propertyname="username"value="${username}"/>
  7. <propertyname="password"value="${password}"/>

    注意:引用的变量的名称要和properties文件中定义得一致

    2)配置hibernate的SessionFactory实例,由spring提供LocalSessionFactoryBean
    代码一:是引用外部的hibernate配置文件进行配置
  1. <beanid="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  2. <!-- 配置数据 源 -->
  3. <propertyname="dataSource"ref="dataSource"></property>
  4. <!-- 配置hibernate配置文件所在的位置 -->
  5. <propertyname="configLocation"value="classpath:spring-hibernate.cfg.></property>
  6. <!-- 扫描的数据包 -->
  7. <propertyname="packagesToScan"value="com.ympcsoft.sys.domain"></property>
  8. </bean>

代码二:使用原生的hibernatePeroperties属性来进行配置
  1. <!-- 配置SessionFactory,由spring提供 -->
  2. <beanid="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  3. <!-- 配置数据 源 -->
  4. <propertyname="dataSource"ref="dataSource"></property>
  5. <!-- 配置hibernate配置文件所在的位置 -->
  6. <!--<property name="configLocation" value="classpath:spring-hibernate.
  7. <!-- 使用hibernateProperties属性来配置Hibernate原生的属性 -->
  8. <propertyname="hibernateProperties">
  9. <props>
  10. <propkey="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
  11. <propkey="hibernate.show_sql">true</prop>
  12. <propkey="hibernate.format_sql">true</prop>
  13. <propkey="hibernate.hbm2ddl.auto">update</prop>
  14. </props>
  15. </property>
  16. </bean>

 

    3)配置事务管理(采用注解的方式 ),由spring提供HibernateTransactionManager
  1. <beanid="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  2. <propertyname="sessionFactory"ref="sessionFactory"></property>
  3. </bean>
  4. <tx:annotation-driventransaction-manager="transactionManager"/>

4.完整的spring.
  1. <?="1.0" encoding="UTF-8"?>
  2. <beans="http://www.springframework.org/schema/beans"
  3. ="http://www.w3.org/2001/="http://www.springframework.org/schema/tx"
  4. ="http://www.springframework.org/schema/aop"="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
  8. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
  9. <!-- 配置自动检测 -->
  10. <!-- Enable annotation configuration -->
  11. <context:annotation-config/>
  12. <!-- Scan packages for Spring annotations -->
  13. <context:component-scanbase-package="com.ympcSoft"/>
  14. <!-- 配置数据源,这里采用的是阿里巴巴的 durid -->
  15. <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close">
  16. <!-- mysql 数据库连接配置 -->
  17. <!--
  18. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  19. <property name="url" value="jdbc:mysql://localhost:3306/forestry?useUnicode=true&amp;characterEncoding=utf-8" />
  20. <property name="username" value="root" />
  21. <property name="password" value="123456" />
  22. -->
  23. <!-- oracle 数据库连接配置 -->
  24. <!--
  25. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  26. <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
  27. <property name="username" value="SYSTEM" />
  28. <property name="password" value="SkyNet888999" />
  29. -->
  30. <!-- sql server 数据库连接配置 -->
  31. <propertyname="driverClassName"value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  32. <propertyname="url"value="jdbc:sqlserver://localhost:1433;DatabaseName=dbStudy"/>
  33. <propertyname="username"value="sa"/>
  34. <propertyname="password"value="sql2008"/>
  35. <!-- 配置初始化大小、最小、最大 -->
  36. <propertyname="initialSize"value="1"/>
  37. <propertyname="minIdle"value="1"/>
  38. <propertyname="maxActive"value="20"/>
  39. <!-- 配置获取连接等待超时的时间 -->
  40. <propertyname="maxWait"value="60000"/>
  41. <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  42. <propertyname="timeBetweenEvictionRunsMillis"value="60000"/>
  43. <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  44. <propertyname="minEvictableIdleTimeMillis"value="300000"/>
  45. <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
  46. <propertyname="poolPreparedStatements"value="true"/>
  47. <propertyname="maxPoolPreparedStatementPerConnectionSize"value="20"/>
  48. <!-- 配置监控统计拦截的filters -->
  49. <propertyname="filters"value="stat,log4j"/>
  50. </bean>
  51. <!-- 配置SessionFactory,由spring提供 -->
  52. <beanid="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  53. <!-- 配置数据 源 -->
  54. <propertyname="dataSource"ref="dataSource"></property>
  55. <!-- 配置hibernate配置文件所在的位置 -->
  56. <propertyname="configLocation"value="classpath:spring-hibernate.cfg.></property>
  57. <!-- 扫描的数据包 -->
  58. <propertyname="packagesToScan"value="com.ympcsoft.sys.domain"></property>
  59. </bean>
  60. <!-- 配置声明式事务管理器(采用注解的方式 ),由spring提供HibernateTransactionManager -->
  61. <beanid="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  62. <propertyname="sessionFactory"ref="sessionFactory"></property>
  63. </bean>
  64. <tx:annotation-driventransaction-manager="transactionManager"/>
  65. </beans>

 




来自为知笔记(Wiz)