概念  持久化框架  把对象保存到数据库中,对数据的CURD操作

    ORM框架  ORM对象关系映射  类<->表

                    属性<->字段

                     对象<->表中的记录

          实现方法  创建持久化类

                描述映射关系  对象关系映射文件,使用注解

环境搭建  安装 eclipse 的 HiberTools 插件  带有配置文件的向导

                       支持正项工程和反向工程

      在项目中引入 Hibernate 的 jar 包

      在项目中引入数据库驱动的 jar 包

配置文件  默认名 hibernate.cfg.xml

      放在src目录下

      根节点<hibernate-configuration>  

      子节点 <session-factory>  数据库连接

                      <property name="属性名">属性值</property>  

                              hibernate.connection.driver_class  数据库驱动类属性

                              hibernate.connection.password  数据库密码

                              hibernate.connection.url  数据库连接

                              hibernate.connection.username  数据用户名

                              hibernate.default_schema  数据库方案,只针对oracle(配置为全大写的用户名)

                              hibernate.dialect  数据库方言  (org.hibernate.dialect.Oracle10gDialect)

                              调试选项  hibernate.show_sql  是否显示SQL语句

                                    hibernate.format_sql  是否格式化SQL语句

                              自动建表方式  hibernate.hbm2ddl.auto  update(表不存在就创建新表)

                                                         (增加属性就增加字段)

                                                        (减少属性不减少字段)

                                                    create(先删表和序列,重新创建)

                                                       (是用于重新初始化系统)

                                                     creat-drop(先删除表和序列,

                                                        重新创建,用完之后删除)

                                                     validate(检查映射关系和表是否一直)

                                                         (不一直就报错)

                    <mapping resource="包名/映射文件名.hbm.xml"/>

                              注册映射文件

  

API  Configuration  管理和加载配置信息

             默认加载 hibernate.cfg.xml

            new Configuration().configure()

    ServiceRegistry  4.0之后新增,所有基于 hibernate 的配置或服务都必须向其注册才能生效

               ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();

    SessionFactory  生成 session 的类,相当于数据库连接

              比较耗资源,一般一个应用创建一个

              SessionFactory sf = cfg.buildSessionFactory(sr);

    session  和数据库交互操作的单线程对象

          管理所有持久化类的实例

          Session se = sf.openSession();

    Transaction  相当于数据库事务的概念

            Transaction ts = se.beginTransaction();

            所有持久化操作包括查询,都必须放在事务中进行

            ts.commit(); 提交事务

            ts.rollback(); 回滚事务

ORM  持久化类  实体类(符合pojo结构)

           必须有无参的构造方法(用来反射)

           提供一个表示属性(用来对应主键字段)

           不能使final类  如果是final累就不能使用load()进行延迟加载

    映射文件  一般持久化类对应一个映射文件

          一般命名方式是 类名.hbm.xml

          根节点<hibernate-mapping>  <class name="持久化类全路径" table="表名">

                          <property name="属性名" type="数据类型">

                            <column name="字段名" />
                          </property>

                class的属性  id标签(主键用这个标签)  column同property标签

                                     generator class=“”(主键生成策略)

                                    (assigned 自然主键,由程序负责定义)

                                    (odentity 数据库自动增长,要求底层数据库支持自动增长字段,数据类型要为整形)

                                    (sequence 序列,要求底层数据库支持序列,数据库类型要为整形)

                                    (hilo 适合所有数据库-需要在数据库中建表保存计算次数,按照high/low算法生成随机数,数据类型要为整形)

                                    (native 根据底层数据库类型自动选择上面三种之一,适用于跨平台项目开发,数据类型必须是整形)

                                    (guid 全局唯一标示,和数据库平台无关,数据库类型要为字符串类型)

                        property标签  name=“属性名”                     

                                length=“长度”

                                not-null=“是否为空”  (true为空,false非空)

                                sql-type=“数据库的数据类型”  

                                unique=“唯一约束”

                                  default=“默认值” 

      多对一 

      <many-to-one name="属性名" class=“持久化类的全路径”>    column同property标签  通过字段的值查找对应的主键表的数据

      一对多(和多对一不能同时配置)

      <set name="属性名" table="表名" inverse="true">   

         <key>

          <column name="TNO"></column>

         <key>

       <one-to-many class="持久化类的全路径" />

          set内的属性   inverse="true"反转控制方向可以提高效率

                  级联操作类型cascade=  none 默认不级联

                                delete 级联删除

                                save-update 级联保存和更新

                                all 级联全部操作

session  get(持久化类.class,主键值)  立即加载数据,加载前检查一级缓存,如果数据不存在就返回空

      load(持久化类.class.主键值)  延时加载数据,当使用时才加载,加载前检查一级缓存,如果数据不存在就抛出异常,要求持久化类是非final类

      状态  持久化状态  get()或load()调用之后得到的实例

                 通过save(),update(),saveorupdate()调用之后

          临时状态  实例化之后,save之前是临时状态

          删除状态  delete()之后是删除状态

          游离状态  关闭了session之后是游离状态

      save(持久化类的实例)  添加数据到数据库,并把实例转为持久化状态,会根据主键策略生成策略覆盖OID的属性

      update(持久化类的实例)  执行数据修改,如果持久化状态的实例属性发生变化,事务在提交前自动执行update

      saveOrUpdate(持久化类的实例)  根据OID属性是否为空自动执行save或update方法

      delete(持久化类的实例)  执行删除,使实例进入删除状态 

HQL  一种面向对象的查询语言  类似SQL查询语句,基于持久化类实现查询,类名和属性名严格区分大小写

    Query  负责执行HQL查询的类(支持方法链调用)

        方法  1.创建  Query qu = session的实例.createQuery("HQL语句")  

            2.条件参数设置  (?占位符  setXXX(位置索引从0开始,值))(:参数名  setXXX(参数名,值))

            3.得到查询数据集合Lise(返回List<持久化类名>)  

            分页查询  setFirstResult(开始行号)(默认开始行号从0开始)

                  每页的开始行号=页码-1*每页行数

            分组和聚合函数  使用List<Object>或List<Object[]>接收数据集合(根据查询结果选择)

反向工程  表要有主键(最好是单主键)

      步骤  1.创建Hibernate Console Configuration  目的只创建数据库连接,一般是选择项目的hintrnate.cfg.xml获取连接信息

          2.创建反向配置文件Hibernate.reveng  目的是确定要反向的表

          3.配置CodeGeneration并运行  链接数据库的Console Configuration

                          反向配置文件.reveng.xml

                          输出的项目目录  一般是项目的SRC目录

                          要生成的包名

                          要导出的文件类型  持久化类 和 映射文件

          4.检查生成的结果  检查持久化类

                    检查映射文件  一对多和多对一只能同时存在一个

          5.把映射文件注册到主配置文件中

三大框架-Hibernate的更多相关文章

  1. java 三大框架 hibernate部分知识实现增删该查操作

    1.三层架构    表现层 web层(MVC是一个表现层的设计模型)    业务层 service层    持久层 dao层2.三大框架和三层架构的关系(建议学习三大框架的顺序:先学习hibernat ...

  2. java 的 struts2 Spring Hibernate 三大框架的整合

    原理就不说了,直接上配置文件及代码,用来备用 首先,将三大框架所需要的jar包导入项目中 导入  struts2-spring-plugin-2.3.3.jar包  此包的作用是作为struts2 与 ...

  3. Struts,spring,hibernate三大框架的面试

    Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...

  4. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  5. Struts2+Spring+Hibernate 三大框架的合并集成

    这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样.  首先看一 ...

  6. 三大框架:Struts+Hibernate+Spring

    三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...

  7. 2018.11.11 Java的 三大框架:Struts+Hibernate+Spring

    ·定义:Java三大框架主要用来做WEN应用.Struts主要负责表示层的显示: Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作): Hibernate主要是数据持久化到数据库. ...

  8. 详谈Struts+Hibernate+Spring三大框架

    前言:对于JAVA WEB端的程序员来说,对JAVA三大框架:Struts+Hibernate+Spring的了解必不可缺,下面详细谈谈 Java三大框架主要用来做WEN应用. 三大框架:Struts ...

  9. JavaWeb_(SSH)三大框架整合struts+hibernate+spring_Demo

    三大框架整合 一.SSH导包 二.书写Spring 三.书写Struts 四.整合Spring与Struts 五.书写(与整合)Hibernate.引入c3p0连接池并使用hibernate模板 六. ...

随机推荐

  1. C#图片处理---基础

    简单的图片剪裁 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; namespa ...

  2. Qt Load and Save Image Dialog 加载图片对话框

    在Qt中,我们想要通过对话框来打开某一个图片,可以通过使用QFileDialog来快速实现,参见以下代码: QString fileName = QFileDialog::getOpenFileNam ...

  3. mysql双主复制总结

    双主复制: 1).在两台服务器上各自建立一个具有复制权限的用户: 2).修改配置文件: # 主服务器A上 [mysqld] server-id = 10 log-bin = mysql-bin rel ...

  4. 关于mysql(或MariaDB)中的用户账号格式

    之前在修改数据库本地root用户密码时,发现我远程连接的root用户的密码并没有改变,之后查了一下,发现原来这两个root不是同一个用户(汗..) 于是联想到之前配置数据库每次给用户赋予远程连接权限时 ...

  5. webapp 侧边导航效果

    @media (max-width: 767px) .main-sidebar, .left-side { -webkit-transform: translate(-230px, 0); -ms-t ...

  6. javascript平时小例子①(移动的小div)

    css样式: #box{ width: 300px; height: 300px; background: deepskyblue; position: absolute; margin-right: ...

  7. yum install maven

    wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos ...

  8. linux同步系统时间

    命令:ntpdate 路径:/usr/sbin/ntpdate 例子:ntpdate us.pool.ntp.org 查看日期时间命令:date 修改日期时间命令:date -s "2012 ...

  9. PNG格式的图像文件,创建的图像的MIME类型的头部

    在安装完这三个组件后,还需要重新配置一次PHP,这也是你对采用DSO方式安装PHP感到庆幸的地方之一.运行make clean,然后在当前的配置中添加下面的内容: --with-gd=[/path/t ...

  10. HTML中id、name、class 区别

    参考:http://www.cnblogs.com/polk6/archive////.html http://blog.csdn.net/ithomer/article/details/ HTML ...