【02】框架学习—Hibernate第一个入门案例详解

续上篇博文:【01】框架学习—Hibernate第一个入门案例

8.Hibernate的映射文件

这里只讲解三个主要标签:

<CLASS>标签:用来将类与数据库建立映射关系,其属性有:
        name:类的全路径
        table:表名(类名和表名一致时可省略)
        catalog:数据库名称(一般不写,因为在核心配置文件中会写)

<id>标签:用来将类中的属性与表中的主键建立映射,即id标签是用来配置主键的,其属性有:
    name:类中属性名
    column:表中字段名(类中属性名与表中字段名一致时可省略)
    length:字段的长度。如果表结构没有创建,生成时最好指定,一般不写
    注意id子标签< generator>,是主键生成策略,class=”native”表示采用本地数据库的主键递增方式。

<property>标签:用来将类中普通属性与表中的其它字段建立映射,其属性有:
    name:类中属性名
    column:类中的字段名(类中属性名与表中字段名一致时可省略)
    length:字段的长度。如果表结构没有创建,生成时最好指定,一般不写
    type:数据类型,一般不写

9.Hibernate的核心配置文件hibernate.cfg.xml

必须的配置
数据库连接的四参数:
hibernate.connection.driver_class:连接数据库驱动程序
hibernate.connection.url:连接数据库URL
hibernate.connection.username:数据库用户名
hibernate.connection.password:数据库密码
方言:
    hibernate.dialect:操作数据库方言(每种数据库特有的语言)

加载映射文件
    xml方式:<mapping resource="com/iteheima/domain/Customer.hbm.xml" />
properties方式:需要在Java程序中加载

可选的配置
    hibernate.show_sql:显示sql语句,但这样显示的sql语句没有格式化

这里写图片描述

    hibernate.format_sql:格式化sql语句

这里写图片描述

    hibernate.hbm2ddl.auto:通过映射转成DDL语句
        ①create:每次创建一个新的表,覆盖旧的表,用于测试

这里写图片描述

        ②create-drop:每次创建一个新的表,执行结束后删除表,用于测试
        ③update:如果有表,使用原来的表,没有表则创建。同时会更新表结构, 如果类中新增属性时会自动往表中加入字段。开发中常用
        ④validate:校验映射文件中类属性与表字段名是否匹配,不一致则报错,一般用于项目完成后

10.代码部分—Configuration类

Configuration对象用于配置并且启动Hibernate。
Hibernate应用通过该对象获得对象-关系映射文件中的元数据,以及动态配置Hibernate的属性,然后创建SessionFactory对象。
总结:Configuration加载Hibernate配置文件,获取SessionFactory对象。

其它应用(了解)
Hibernate支持xml和properties类型的配置文件。
xml配置文件:通过Configuration config = new Configuration().configure();加载配置文件。
properties配置文件:通过Configuration config = new Configuration();加载配置文件,但需要自己手动加载映射文件config.addResource(“映射文件路径”);

11.代码部分——SessionFactory接口

1)工厂类,是生成Session对象的工厂类。
2)特点:
    *由Configuration通过加载配置文件创建该对象。
    *SessionFactory对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存。
    *预定义SQL语句
        使用Configuration类创建了SessionFactory对象是已经在SessionFactory对象中缓存了一些SQL语句。
        常用的SQL语句是curd(通过主键查询)。
    *一个SessionFactory实例对应一个数据库,应用从该对象中获得Session实例。
    *SessionFactory是线程安全的,意味着它的一个实例可以被应用的多个线程共享。
    *SessionFactory是重量级的,意味着不能随意创建或销毁它的实例。如果只访问一个数据库,只需要创建一个SessionFactory实例,且在应用初始化时完成。
    *SessionFactory需要一个较大的缓存,用来存放预定义的SQL语句及实体的映射信息。另外可以配置一个缓存插件,这个插件被称之为Hibernate的二级缓存,被多线程所共享。
3)关于二级缓存的图

这里写图片描述

4)总结
    使用一个SessionFactory最好是应用启动时就完成初始化。

12.代码部分——Session接口

1)概述
    Session提供和持久化有关的操作,CURD。
    Session是程序与数据库交互操作的一个单线程对象,是Hibernate运作的中心。
    Session是线程不安全的。
    Session对象有一级缓存,显示执行flush之前,所有的持久化操作的数据都缓存在Session对象处。
2)特点
    线程不安全,应避免多线程共用。
    Session是轻量级的,每次客户请求分配独立的Session实例,用完后销毁。
    Session的一级缓存。
3)常用方法
    save(obj):插入记录。
    delete(obj):删除记录。
    get(Class, id):查询一条记录。
    update(obj):更新记录。
    saveOrUpdate(obj):保存与修改,数据不存在则保存,已存在则修改。
    createQuery():HQL语句的查询方式。

13.代码部分——Transaction接口

1)Transaction是事务的接口
2)常用的方法
    commit():提交事务。
    rollback():回滚事务。
3)特点
    Hibernate框架默认不自动提交事务,需要手动提交事务。
    如果没有开启事务,那么每个Session的操作都相当于一个独立的事务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值