一、hibernate简单了解:

   ⑴、hibernate一个java领域里面的一个持久化的ORM框架。

     持久化:就是对对象的数据修改,hibernate会把修改的数据同步到数据库中。

     ORM:Object Relation Mapping 对象关系映射。把数据库中的表映射成java中的一个个对象(POJO),然后hibernate通过对对象的操作来对表进行操作。 

   ⑵、hibernate是对数据数据库的进一步的封装,hibernate的底层还是JDBC。 

 二、hibernate搭建:

   在之前,我们已经搭建好了struts2和spring的环境,现在在这二者的基础之上对数据库进行进一步的封装,也就是在项目中加入hibernate。

   ⑴、首先,下载hibernate 下载地址:http://hibernate.org/orm/ ,下载完解压后:hibernate-release-5.2.2.Final—>>lib—>>required,找到这个目录中的所有jar包复制到项目中即可。同时在同级目录中有其他的jar可以适当的了解,比如:optional目录中有c3p0的jar,后面数据库连接池需要使用到。

    

   ⑵、编写hibernate.cfg.xml文件:

     ①、在你的项目src目录下添加一个hibernate.cfg.xml文件,文件名可以任意,但需是XXX.cfg.xml类型。

     ②、声明dtd:(根据你下载的版本来确定dtd。)

<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

     ③、具体编写hibernate.configuration

<hibernate-configuration>

  <!--设置sessionFactory-->  
<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">password</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>

      ·这里配置的session-Factory中的数据库信息本来实在util.MyConnectionImp中定义的,如果在util.MyConnectionImp定义好数据的信息,那么用户的数据库一切换就要修改这里的代码,所以需要把这个获取连接的事情交给hibernate去管理,这样就避免了直接修改代码,只要修改配置文件即可。

       ·这里需要设置的属性有:

        数据库驱动、数据库访问路径、用户名、密码、数据库方言、连接池大小、hibernate的映射文件(后面会讲)等。  

        其中  <property name="hbm2ddl.auto">update</property> 这个属性如果设置为create,那么之前的数据库中的数据在电脑开机之后删除。

   ⑶、编写hibernate的映射文件- entityName.hbm.xml :

      ①、声明dtd:根据你下载的版本来确定dtd。)

<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

      ②、编写hibernate-mapping

<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>

          ·其中,class标签中的name属性值对应需要映射的实体类的名字,并且是 "包名.类名" 形式。table属性则是需要通过映射这个实体类到数据库中的表名。

          ·其次,id标签设置的是数据库表中的主键,name属性对应实体类中需要做主键的成员变量名,type属性是这个成员变量的数据类型,而且这个类型是hibernate映射类型,具体参考映射对照表,column标签中的name顾名思义就是表中的名字了。generator标签中的class属性设置为native,则是为根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。 

               

    ⑷、在dao中进行sessionFactory的最后配置:

     ①、获取SessionFactory

       一种是手动new出一个Configuration抽象工厂,然后用这个抽象工工厂创建SessionFactory。这种需要hibernate的XXX.cfg.xml配置,也就是现在我们讲的这种。另外一种是使用spring的bean来new一个SessionFactory,然后注入到dao定义的成员变量SessionFactory中。现在我们先演示第一种:

        Ⅰ、获取SessionFactory:如果下面的configure()方法不传入参数那么就默认是hibernate.cfg.xml文件。

<!--获取SessionFactory-->
SessionFactory sessionFactory = new Configuration().configure("mySQLHibernate.cfg.xml").buildSessionFactory(); <!--获取Session对象-->
Session session = sessionFactory.openSession();

        Ⅱ、下面就可执行curd操作啦,示例一个查询表中所有数据

<!--查询表中所有数据-->
Query query = session.createQuery("from BookCard"); <!--把查询出来的数据放到集合中-->
List<BookCard> list = query.getResultList();

      讲解结束,谢谢浏览!

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

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

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

  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. MySQL的limit查询优化

    MySQL的limit查询优化以下的文章主要是对MySQL limit查询优化的具体内容的介绍,我们大家都知道MySQL数据库的优化是相当重要的.其他最为常用也是最为需要优化的就是limit.MySQ ...

  2. src与 href 的一些区别

    src用于替换当前元素,href用于在当前文档和引用资源之间确立联系. src 是 source 的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置:在请求 src 资源时会将其指 ...

  3. 原生javaScript中使用Ajax实现异步通信

    AJAX本质就是在HTTP协议的基础上以异步的方式与服务器进行通信,所谓异步,就是指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步. 以下开始简单 ...

  4. viojs1908无线网路发射器选址

      描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且 ...

  5. (最小路径覆盖) News 消息传递 (hust OJ 2604)

    http://begin.lydsy.com/JudgeOnline/problem.php?id=2604   Description 总部最近打算向下面的N个工作人员发出了一条秘密消息.因为它是机 ...

  6. coalesce函数用法

    COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL

  7. 声笔码7.00版现已进入Beta测试阶段

    声笔码7.00版现已进入Beta测试阶段,有兴趣的朋友可以试试,欢迎多提宝贵意见. 由于论坛附件限制了1M的大小所以无法上传,需要的朋友可加入声笔系列码群(QQ群号:445906697),到共享文件夹 ...

  8. hdu 5719(Arrange)(冷静分析)

    A数组显示从0到i的最小值B数组显示从0到i的最大值由此可得:A数组是单调不增的(怎么也会不使得最小值变大)B数组是单调不减的.设premin和premax为i位以前的最小值和最大值.可以得出以下几点 ...

  9. runtime记录

    前言: 最初对于runtime的了解其实只停留在,知道这是一组C的方法,知道消息机制中会把方法调用转成objc_msgSend(theObject,@selector(objectMethod)).随 ...

  10. [转载]iOS9 使用CoreLocation

    在iOS8之前,只要 #import <CoreLocation/CoreLocation.h>引入CoreLocation.framework. @property (nonatomic ...