zoukankan      html  css  js  c++  java
  • 使用Hibernate

    1、Hibernate框架设计原理

       1)设计原理

           Hibernate采用ORM思想对JDBC进行封装,Hibernate框架是ORM思想的一种实现,解决对象和数据库数据映射问题

            Hibernate提供一系列API,允许我们直接访问实体对象,然后根据ORM映射关系,转换成SQL去执行,从而达到访问数据库的目的。

        2)ORM思想

            ORM(Object Relation Mapping)即对象关系映射,指的是Java对象和关系数据库之间的映射。

            ORM思想,就是将对象与数据库进行相互转换的思想,不同的框架/技术实现ORM的手段不同,但更多的是采用配置+反射的方式实现。

    2、Hibernate框架体系结构

        1)主配置文件

            Hibernate的主配置文件是一个XML文件,通常命名为 hibernate.cfg.xml ,此文件可以配置数据库连接参数、Hibernate框架参数、及映射关系文件

        2)实体类

            实体类是数据库表对应的Java类型,它是用于封装数据库记录的对象类型。

        3)映射关系文件

            映射关系文件指定实体类和数据库表的对应关系,即类中的属性和表中的字段之间的对应关系。

            Hibernate使用XML文件来描述映射关系,文件通常命名为“实体类.hbm.xml”,存放在实体类相同的路径下。

         3)底层API

            Hibernate提供一系列的底层API,基于ORM思想对数据库进行访问,API主要是对映射关系文件的解析,根据解析出来的内容动态生成SQL语句,自动将属性和字段关系映射。

    3、如何使用Hibernate

        1)Hibernate常用的API

            Configuration:负责加载主配置文件信息,同时加载映射关系文件信息

            SessionFactory:负责创建Session对象

            Session:数据库连接会话,负责执行增删改查操作

            Transaction:负责事务控制

            Query:负责执行特殊查询

        2)Hibernate使用步骤

            a.先导入Hibernate 的jar包,及数据库驱动包

            b.引入Hibernate主配置文件hibernate.cfg.xml

            c.创建实体类

            d.创建映射关系文件(存放于实体类相同路径下,通常命名为“实体类.hbm.xml”)

            e.使用Hibernate常用API执行增删改查操作

    4、Hibernate映射类型

      Hibernate提供6种映射类型,书写时全小写,对应转换如下:

      映射类型 Java类型 数据库类型
    整数 byte java.liang.Byte number(m)
    short java.lang.Short number(m)
    integer java.lang.Integer number(m)
    long java.lang.Long number(m)
     小数 float java.lang.Float number(m,n)
    double java.lang.Double number(m,n)
    字符串 string java.lang.String varchar()
    日期(年月日) date java.util.Date或java.sql.Date date
    时间(年月日时分秒) time java.sql.Timestamp date
    布尔 yes/no boolean或java.lang.Boolean char(1)('Y'or'N')
    true/false boolean或java.lang.Boolean char(1)('T'or'F')

    5、Hibernate主键生成方式

       1)sequence:采用序列方式生成主键,适用于Oracle,其配置语法:

    <generator class="sequence">
    <param name="sequence">序列名</param>
    </generator>

        2)identity:采用数据库自增长机制生成主键,适用于数据库支持自动递增,其配置语法:

    <generator class="increment"></generator>

            注意:这种方式在并发量高时存在问题,可能会出现重复的主键。

        3)assigned:是Hibernate不负责生成主键,需要开发者自己处理主键的生成,其配置语法:

    <generator class="assigned"></generator>

        4)uuid/hilo:采用uuid或hilo算法生成一个主键值,是一个不规则的长数字,其配置语法:

    <generator class="uuid"></generator>

            注意:这种方式生成的主键值可以保证不重复,但是没有规律,不能按主键值排序。

        5)native:根据当前配置的数据库方案,自动选择sequenec或identity,其配置语法:

    <generator class="native">
    //注意:如果Oracle,需要制定序列名
    <param name="sequence">序列名</param>
    </generator>

        6)increment:不是采用数据库自身的机制来生成主键,而是Hibernate提供的一种生成主键的方式,它会取当前表中主键的最大值,然后加1作为新的主键值,其配置语法:

    <generator class="increment"></generator>

           注意:这种方式在并发量高时存在问题,可能会出现重复的主键。

  • 相关阅读:
    【bzoj1116】[POI2008]CLO 并查集
    【bzoj3831】[Poi2014]Little Bird 单调队列优化dp
    【bzoj4726】[POI2017]Sabota? 树形dp
    【bzoj4822/bzoj1935】[Cqoi2017]老C的任务/[Shoi2007]Tree 园丁的烦恼 树状数组
    【bzoj4884】[Lydsy2017年5月月赛]太空猫 dp
    【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
    【bzoj2424】[HAOI2010]订货 费用流
    【bzoj2662】[BeiJing wc2012]冻结 分层图Spfa
    【bzoj1195】[HNOI2006]最短母串 AC自动机+状态压缩+BFS最短路
    【bzoj4818】[Sdoi2017]序列计数 矩阵乘法
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9564115.html
Copyright © 2011-2022 走看看