一、今天要进行解答的是对上次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. Python 类的命名空间

    Python中类的定义其实就是执行代码块: class cc: a=0 print '+++++', print a 会直接执行print语句而不是在实例化cc时执行.执行后会生成对应的类的命名空间. ...

  2. FMDB浅析

    一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQLite的API进行了封装,加上了面向对象的思想,让我们不必使用繁琐的C语言API函数,比起直接操作SQLite更加方便. FMDB优 ...

  3. windows 7下qtcreator里QWT文件的pro配置

    http://blog.chinaunix.net/uid-20717410-id-272331.html 把编译好的qwt的include文件夹下面 所有的.h文件 复制到qt目录下 然后在pro里 ...

  4. EJB概念理解

    转自http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是"企 ...

  5. Await, and UI, and deadlocks! Oh my!

    It’s been awesome seeing the level of interest developers have had for the Async CTP and how much us ...

  6. 逐帧动画(Frame-by-frame Animations)

    1.这一类动画可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示. xml定义方法 <animation-list xmlns:android=" ...

  7. JavaWeb开发学习(一)-JavaWeb开发概述

    1.Web相关概念 Web程序也就是一般所说的网站,由服务器.客户端浏览器以及网络组成.Web程序的好处是使用简单,不需要安装.学习,有一台电脑.一根网线就可以使用.Web程序不是一般意义上的网站.网 ...

  8. 使用Inno Setup函数修改文件内容

    0.inno打开文件操作&字符串操作所需函数原型及解释 function LoadStringsFromFile(const FileName: String; var S: TArrayOf ...

  9. [转]Git - 重写历史

    转自http://git-scm.com/book/zh/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2    重写历史 很多时 ...

  10. java 并发性和多线程 -- 读感 (一 线程的基本概念部分)

    1.目录略览      线程的基本概念:介绍线程的优点,代价,并发编程的模型.如何创建运行java 线程.      线程间通讯的机制:竞态条件与临界区,线程安全和共享资源与不可变性.java内存模型 ...