一、今天要进行解答的是对上次hibernate1进行进一步的完善,这次第一是进一步使用spring注入一个SessionFactory实例,避免了自己new实例;第二是应用数据库池(c3p0)。

二、环境搭建:

   ⒈在之前的基础(struts2的jar包,spring的jar包,和hibernate的jar包,如果不懂请看:http://www.cnblogs.com/demoMeng/):

    现在需要使用到c3p0的jar,找到下载的hibernate压缩包,解压,解压的根目录--》lib--》optional--》c3p0中的jar复制到你的项目的lib中即可:

      

    ⒉去掉hibernate.cfg.xml配置文件,取而代之的是spring中注入的SessionFactory(在hibernate.cfg.xml中进行配置的也是sessionFactory)

     之前的项目:

     

       之前的hibernate.cfg.xml配置文件: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<!-- 配置相关的数据库基本信息 -->
<!-- 数据库驱动 -->
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<!-- 数据库访问路径 -->
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727</property>
<!-- 登录用户名 -->
<property name="connection.username">sa</property>
<!-- 登录密码 -->
<property name="connection.password">123456</property> <!-- 配置hibernate的基本信息 --> <!-- 配置hibernate使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property> <!-- 设置数据库连接池的大小 -->
<property name="connection.pool_size">5</property> <!-- 执行操作时候是否在控制台打印sql语句 -->
<property name="show_sql">true</property> <!-- 是否进行格式化sql语句,指的是在控制台中输出的sql语句是否换行 -->
<property name="format_sql">true</property> <!--生成数据表的策略-->
<property name="hbm2ddl.auto">update</property> <!-- 设置hibernate的映射文件 -->
<mapping resource="entity/BookCard.hbm.xml"/>
</session-factory>
</hibernate-configuration>

  

      现在的项目:  

       现在的applicationContext.xml配置文件(使用的数据库是SQL-server2008):

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <!-- 导入外部的文件,把数据库的相关信息设置为一个变量,这样有益于技术人员的安装项目以及后期的部署。(对应项目外的 jdbcSql.properties 文件) -->
<context:property-placeholder location="classpath:jdbcSql.properties" ignore-unresolvable="true"/>
            <bean id="myActionService" class="action.ActionService" scope="prototype"></bean>
       <bean id="myActionService" class="action.ActionService" scope="prototype"> <property name="ms" ref="myServiceImp"></property>
</bean> <bean id="myServiceImp" class="services.MyServiceImp" scope="prototype">
<property name="md" ref="myDaoImp"></property>
</bean> <bean id="myDaoImp" class="dao.MyDaoImp" scope="prototype">
<!-- 给daoImp的实现类中设置的sessionFactory成员属性注入一个sessionFactory实例 -->
<property name="sessionFactorySql" ref="mySessionFactorySql"></property>
</bean> <!-- 定义一个sessionFactory的bean,使用spring来给sessionFactory来注入实例 -->
<bean id="mySessionFactorySql" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 数据源包括:数据库用户名,密码,这里引用了下面的bean,为了看起来方便,我用了同一种字体颜色 -->
<property name="dataSource" ref="myDataSourceSql"></property> <!-- 定义hibernate属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.connection.autocommit">false</prop>   <!-- 自动生成表(根据实体类),如果这里设置的是create的话,每次电脑开机后都会删除这个表然后新创建一个表,所以这个时候之前的数据都会清空。-->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
              </props>
            </property>             <!-- 设置映射文件,这个映射问价指的是hbm.xml文件 -->
            <property name="mappingResources">
                 <list>
                   <value>entity/BookCard.hbm.xml</value>
                </list>
            </property>         </bean>
            <!-- 设置数据源(使用c3p0来设置数据库源),需要使用spring来创建实例 -->
<bean id="myDataSourceSql" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <!--这里使用了变量来,目的是用来技术人员用于后面的安装项目,选择不同的数据库需要数据库的基本信息的修改。--> 
<property name="driverClass" value="${jdbc.diver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/> <!--每300秒检查所有连接池中的空闲连接 -->
<property name="idleConnectionTestPeriod" value="300"></property> <!-- 最大空闲时间,900秒内未使用则连接被丢弃。若为0则永不丢弃 -->
<property name="maxIdleTime" value="900"></property> <!--最大连接数 -->
<property name="maxPoolSize" value="2"></property> </bean>
</beans>

        现在的实体类的hbm.xml文件:(本例为:BookCard.hbm.xml),和之前的没有差别:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="entity_name" table="tabel_name"> <id name="entity_prop_name" type="integer" >
<column name="column_name"></column>
<generator class="native" />
</id>
<property name="entity_prop_name" type="string">
        <column name="column_name"></column>
    </property> </class>
</hibernate-mapping>

           

          新添加的一个数据库信息的文件:(jdbcSql.properties),定义了数据库的基本信息,但你的项目需要通过技术人员来部署的,可能因为具体情况不同需要修改数据库信息,就可以直接在这里修改即可。

 


      到这里,ssh基本框架就建立好了,可以把这个框架加入你的项目进行具体的实战,谢谢浏览!

 

  

 

  

    

ssh(sturts2_spring_hibernate) 框架搭建之hibernate2的更多相关文章

  1. ssh(sturts2_spring_hibernate) 框架搭建之hibernate1

    一.hibernate简单了解: ⑴.hibernate一个java领域里面的一个持久化的ORM框架. 持久化:就是对对象的数据修改,hibernate会把修改的数据同步到数据库中. ORM:Obje ...

  2. ssh(sturts2_spring_hibernate) 框架搭建之struts2

    一.struts2完整流程的逻辑(整体的概述) 首先,用户在地址栏中输入你的项目访问路径,然后这个请求会发送到服务器,之后服务器发现在web.xml中配置了一个filter过滤器,并且这个过滤器需要对 ...

  3. ssh(sturts2_spring_hibernate) 框架搭建之spring

    一.spring总结: ⑴.spring是一个轻量级的JAVA开发框架,主要的作用是用来管理实例(可以解决JAVA类中new对象的问题,节省内存资源.)和降低代码之间的耦合性,促进代码模块化. ⑵.促 ...

  4. ssh(sturts2_spring_hibernate) 框架搭建之JPA代替hibernate

    一.JPA用来替代hibernate ⒈JPA的全称是JAVA Persistence API.指的是JPA通过注解或者是XML描述对象—关系表的映射关系,并且将运行的实体对象持久化数据库中. ⒉JP ...

  5. 新手SSH基础框架搭建

    SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...

  6. SSH基本框架搭建后的简化

    对于SSh框架的简化,我们可以从下面几个方面来剖析: 1.实体类entity:在这里我们需要将数据库和实体类进行关联,在简化之前,我们需要在entity包里面加入一份.xml配置文件 例如原码---- ...

  7. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】

    经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...

  8. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  9. eclipse中SSH三大框架环境搭建<三>

    相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...

随机推荐

  1. ios申请真机调试( xcode 5)详细解析

    已经有开发证书的直接跳过第一步 第一步:申请"开发证书" 进入苹果开发者99美元账号: 选择:Certificates, Identifiers & Profiles 关于 ...

  2. 使用getopt()处理命令行参数

    假设有一程序 testopt,其命令行选项参数有: -i            选项 -l            选项 -r           选项 -n <值> 带关联值的选项 则处理 ...

  3. LintCode 366 Fibonacci

    /* 1st method will lead to time limit *//* the time complexity is exponential sicne T(n) = T(n-1) + ...

  4. ajax500错误

    昨天做一个需求,原先使用form提交的东西,领导说要改成使用ajax提交.嗯,听起来好像很简单很简单哦,可惜我已经很少敲代码了.擦,这工作让人槽点无数.果断写代码. var fm=document.g ...

  5. linux延时关机

    04.shutdown +2 "The machine will shutdown" # 2min 后关机,并通知在线者 05.shutdown -h now 立刻关机,其中now ...

  6. MySql与Oracle的区别总结

    在平时工作中使用这两个数据库的时候要多一些,这两数据库的使用方面存在的一些各自不同的地方,许多面试官也会问这两个的区别.所以,凭着自己的一些经验个感触,来说说这二者的区别. 使用的群众:MySql中小 ...

  7. VS2008 Pocket PC 2003 SE仿真程序上网设置

    设置大体分为3个步骤:Microsoft ActiveSync安装配置.Pocket PC 2003 SE仿真程序配置.Pocket PC 2003连接到Microsoft ActiveSync. 1 ...

  8. mono for android学习过程系列教程(6)

    接着上一讲,今天讲的是Button,CheckBox这二个安卓元素, 我们来看第一个Button这个控件,类似winform和webform里面一样,它也是 存在有触发事件的,我们新建初始化项目直接就 ...

  9. [转]phoneGap3.0安装步骤(以windows下的android环境为例):

    phoneGap3.0安装步骤(以windows下的android环境为例): 环境: WIN系统,JDK,Android,Eclipse,Ant,Git,PhoneGap3.x (Cordova) ...

  10. Boyer-Moore 字符串匹配算法

    字符串匹配问题的形式定义: 文本(Text)是一个长度为 n 的数组 T[1..n]: 模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m]: T 和 P 中的元素都属于有限的字 ...