Hibernate

Hibernate

1.hibernate :是一个持久层的ORM框架

  orm:对象关系映射,将一个java中的对象与关系型数据库中得表建立一种映射关系,从而操作对象就可以操作数据库中的表

 下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

Hibernate

Hibernate

1.4.1.4 创建表

1.4.1.5 创建实体类

1.4.1.6 创建映射

  映射需要通过xml的配置文件来完成

  这个配置文件可以任意命名,尽量统一命名规范(类名.hbm.xml)

Hibernate

1.4.1.7 创建一个Hibernate的核心配置文件

  Hibernate的核心配置文件的名称:hibernate.cfg.xml

    连接数据库和方言的模板位置

  Hibernate

Hibernate

1.4.1.8 编写代码

  Hibernate

 2 .核心api:Configuration 

  Hibernate

a.加载核心配置文件

  1.Hibernate.properties

Configuration cfg = new Configuration();

  2.Hibernate.cfg.xml

Configuration cfg = new Configuration().configure();

b.加载映射文件

 Hibernate

 核心api:SessionFactory :Session工厂

Hibernate

SessionFactory 内部维护了Hibernate的连接池和Hibernate的二级缓存,是线程安全的

一个项目只需要创建一个即可

 Hibernate

Hibernate

核心api:Session

Hibernate

Session 代表的是Hibernate与数据库的连接对象,不是线程安全,与数据库交互桥梁

Hibernate

get和load方法区别

  get:采用的是立即加载,执行到这行代码的时候,就会马上发送sql语句去查询

    查询后返回是真实对象本身

    查询一个找不到的对象,返回null

  load:采用的是延迟加载(Lazy懒加载),执行到这行代码的时候,不会发送sql语句,当

    真正使用这个对象的时候才会发送sql语句

    查询后返回的是代理对象,利用javassist技术产生的代理

    查询一个找不到的对象,返回ObjectNotFoundException

 Hibernate

修改方法

  void update(Object obj);

 Hibernate

删除方法

  void  delete(Object obj)

Hibernate

保存或更新

  void saveOrUpdate(Object obj)

Hibernate

查询所有:

Hibernate

核心api:Transaction :事物对象

  Hibernate中管理事物的对象

    Commit()

    rollback();

 3.持久化类的编写规则

 3.1持久化类

    持久化:将内存中的一个对象持久化到数据库中过程

    持久化类:一个java对象与数据库表建立了映射关系,那么这个类在Hibernate中称为持久化类

    持久化类 = java 类+映射文件 

 持久化类编写规则:

    a. 对持久化类提供一个无参的构造方法 :Hibernate底层需要使用反射生成实例

    b. 属性需要私有:对私有属性提供public的get和set方法:Hibernate中获取,设置对象的值

    c. 对持久化类提供一个唯一标识的OID与数据库主键对应:java中通过对象的地址区分是否是同一对象,

      数据库中通过主键确定是否是同一记录,在Hibernate中通过持久化类中的OID的属性区分是否是同一对象

    d. 持久化类中的属性尽量使用包装类类型:基本数据类型默认是0,那么0有很多的歧义,包装类默认值为null

    e.持久化类不要使用final进行修饰 :延迟加载本身是HIbernate优化手段,返回的是代理对象(javassist可以

       对没有实现接口的类产生代理-使用非常底层字节码增强技术,继承这个类进行代理)如果使用final修饰,

       不能被继承,不能产生代理对象,延迟加载也就失效。load和get方法就无区别了

  Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

 Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

 Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

用户表和角色表和中间表

Hibernate

用户的实体

Hibernate

 角色的实体

Hibernate

Hibernate

Hibernate

     Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

 Hibernate 同理保存用户级联保存角色

Hibernate

Hibernate

Hibernate

 删除角色级联删除用户  

 Hibernate

Hibernate

 Hibernate

Hibernate

 Hibernate

 Hibernate

Hibernate

 Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

Hibernate

 Hibernate

 Hibernate

Hibernate