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框架不维护主键,主键由程序自动生成.

Hibernate学习笔记(一)的更多相关文章

  1. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  2. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  3. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  4. Hibernate学习笔记

    一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...

  5. Hibernate学习笔记(四)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  6. Hibernate学习笔记(三)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  7. HIbernate学习笔记(一) 了解hibernate并搭建环境建立第一个hello world程序

    Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装,Java程序员可以使用面向对象的编程思维来操纵数据库,它通过对象属性和数据库表字段之间的映射关系,将对象 ...

  8. Hibernate学习笔记-Hibernate关系映射

    1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...

  9. Hibernate学习笔记(1)Hibernate构造

    一 准备工作 首先,我们将创建一个简单的基于控制台(console-based)Hibernate应用. 我们所做的第一件事就是创建我们的开发文件夹.并把所有需要用到的Java件放进去.解压缩从Hib ...

随机推荐

  1. Node.js的特点

    作为后端JavaScript的运行平台,Node保留了前端JavaScript中些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛应用的思想作用到了服务器端.下面 ...

  2. ubuntu安装使用GitHub--PC端

    按照这个步骤安装并且初步使用 按照这个程序配置git的ssh,在git push时不用输入密码

  3. 200行代码搞定炸金花游戏(PHP版)

    <?php/* * 游戏名称:炸金花(又名三张牌.扎金花) * 开发时间:2009.1.14 * 编 程:多菜鸟 * 来 源:http://blog.csdn.net/kingerq/archi ...

  4. jQuery之元素的遍历与元素的过滤

    jQuery遍历之向下遍历 jQuery遍历之向上遍历 jQuery遍历之同级遍历 jQuery遍历之过滤

  5. 浅析MySQL中exists与in的使用

    exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...

  6. Uml学习-用例建模简介

    用例建模简介  用例建模是UML建模的一部分,它也是UML里最基础的部分.用例建模的最主要功能就是用来表达系统的功能性需求或行为.用例图重点描述用户需求. 它描述需求.用户和主要组件之间的关系. 它不 ...

  7. Alwayson 与 mirror

    --将主副本改为同步模式和自动故障转移,将其中一个辅助副本改为同步辅助副本和自动故障转移 USE [master]GOALTER AVAILABILITY GROUP [TESTDB5AG]MODIF ...

  8. iOS8 关于预编译文件.pch的改变

    ios8 添加.pch文件 1, 新建文件 (command+N)选择other组,选择pch,输入文件名保存. eg: 创建的工程为Demo; 创建文件名为DemoPrefixHeader.pch ...

  9. php中环境变量

    $_ENV $_ENV是一个包含服务器端环境变量的数组.它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它.   $_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素 ...

  10. Hibernate Spring

    原理: 1.         读取并解析配置文件 2.         读取并解析映射信息,创建SessionFactory 3.         打开Sesssion 4.         创建事务 ...