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

      

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    用户表和角色表和中间表

    用户的实体

     角色的实体

         

     

     

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

     删除角色级联删除用户  

     

     

     

     

     

     

     

  • 相关阅读:
    javascritp学习笔记(四)----引用类型
    Bootstrap学习笔记(二)-----网格系统
    Javascript学习笔记(三)--变量、作用域和内存问题
    Javascript学习笔记(二)--创建对象(七种模式)
    Javascript学习笔记(一)--理解对象
    ReentrantLock
    synchronized使用
    多线程在web项目中的存在方式
    多线程基础
    java集合Map体系
  • 原文地址:https://www.cnblogs.com/zhuwenxia/p/10333770.html
Copyright © 2020-2023  润新知