Hibernate

 

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

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

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

 

1.4.1.4 创建表

1.4.1.5 创建实体类

1.4.1.6 创建映射

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

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

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

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

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

  

1.4.1.8 编写代码

  

 

 2 .核心api:Configuration 

  

a.加载核心配置文件

  1.Hibernate.properties

Configuration cfg = new Configuration();

  2.Hibernate.cfg.xml

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

b.加载映射文件

 

 核心api:SessionFactory :Session工厂

 

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

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

 

核心api:Session

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

get和load方法区别

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

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

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

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

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

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

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

 

修改方法

  void update(Object obj);

 

删除方法

  void  delete(Object obj)

保存或更新

  void saveOrUpdate(Object obj)

 

查询所有:

核心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方法就无区别了

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用户表和角色表和中间表

用户的实体

 角色的实体

     

 

 

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

 删除角色级联删除用户  

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zhuwenxia/p/10333770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值