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

来源:互联网 发布:3160ac无线网卡优化 编辑:程序博客网 时间:2024/05/18 01:41

续上篇博文:【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:连接数据库URLhibernate.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的操作都相当于一个独立的事务。
原创粉丝点击