zoukankan      html  css  js  c++  java
  • Hibernate学习笔记(一)

    2016/4/18 19:58:58

    Hibernate学习笔记(一)

    1.Hibernate框架的概述:

    • 就是一个持久层的ORM框架.
      • ORM:对象关系映射.将Java中实体对象与关系型数据库中表建立一种关系.Hibernate中可以通过操作对象的方式,从而操作数据库的表.
      • 常见的持久层框架:
        • Hibernate
        • MyBatis
        • JPA
        • DBUtils
        • Hibernate3.x和Hibernate4.x

    2.Hibernate快速入门:

    2.1 下载Hibernate开发包.

    http://sourceforge.net/projects/hibernate/files/hibernate3

    2.2 Hibernate开发包目录结构:

    • 文档:
    • 开发包:
      • 操作字节码:
      • 必须的
      • 可选的
      • jpa
    • 项目:

    2.3 创建一个java项目 导入相应jar包.

    2.4 创建数据库表:

    2.5 创建一个实体类:

    2.6 建立映射:

    2.7 创建Hibernate核心配置文件:

    2.8 编写一个测试类:

    3.Hibenrate的CRUD的操作:

    • save():保存记录。
      • session.save(customer);
    • update():修改记录。
      • session.update(customer);
    • delete();
    • get()/load():根据主键进行查询。
      • Customer customer = (Customer)session.get(Customer.class ,1);

      • Customer customer = (Customer)session.load(Customer.class,1);

      • 区别:

        • get :采用是立即检索,马上发送SQL查询.返回的是真实对象.检索一个找不到的对象的时候NullPointException
        • load :采用延迟加载技术,当真正使用这个对象的时候,才会发送SQL.返回代理对象.检索一个找不到的对象的时候ObjectNotFoundException

    4.Hibernate的常见配置及API:

    • 4.1核心配置:
      • 两种方式;
        • 属性文件的方式:

          • 在src下创建一个hibernate.properties.
            ***** 手动加载映射文件.
        • XML格式的配置:

          • 在src下创建一个hibernate.cfg.xml
        • 必须的配置:

          • 数据库连接信息.
          • Hibernate的方言.
        • 可选配置:

          • 显示SQL
          • 格式化SQL
          • hbm2ddl.auto
            • create/create-drop/update/validate
        • 映射文件:

    • 4.2映射配置:建立类与表映射
    • class
      • name :类的全路径
      • table :表名称
    • id
      • name
      • column
      • type
      • length
    • property
      • name
      • column
      • type
      • length

    5.Hibernate的API

    • Configuration:管理配置信息.

      • 属性文件:
        • 直接创建.
      • XML
        • new Configuration().configure();
    • SessionFactory:

      • 维护二级缓存,线程安全的对象.
      • 抽取工具类.
    • Session:

      • 维护一级缓存,线程不安全的对象.
    • Transaction:

      • 事务是默认不自动提交,手动提交事务.
    • Query:

    • Criteria:

    6.持久化类编写:

    • 持久化类:就是一个实体类 + XML映射.

    • 编写原则:

      • 无参数构造:
      • 属性提供set/get方法
      • 提供为一个标识:
      • 尽量使用包装类型:
      • 这个类尽量不要使用final修饰.
    • 自然主键和代理主键:

    • Hibernate提供主键生成策略:

      • increment :自动增长.适合 short int long...不是使用数据库的自动增长机制.使用Hibernate框架提供的自动增长方式.

      • select max(id) from 表; 在最大值的基础上+1.(多线程的问题.)在集群下不要使用

      • identity :自动增长.适合 short int long...采用数据库的自动增长机制.不适合于Oracle数据库.

      • sequence :序列.适用于 short int long ... 应用在Oracle上 .

      • uuid :适用于字符串类型的主键.采用随机的字符串作为主键.

      • native :本地策略.底层数据库不同.自动选择适用identity 还是 sequence.

      • assigned :Hibernate框架不维护主键,主键由程序自动生成.

  • 相关阅读:
    redis集群redis-cloud搭建
    Linux下搭建redis服务器
    mybatis主键返回
    分布式文件系统FastDFS
    mapper映射文件不发布
    dubbo发布和引用服务
    PageHelper分页插件
    F. Cards and Joy
    E. Paint the Tree 树形dp
    D. Sequence Sorting dp
  • 原文地址:https://www.cnblogs.com/kobelieve/p/5405698.html
Copyright © 2011-2022 走看看