• java:LeakFilling(Hibernate)


    1.关系型数据库:

      Oracle / Mysql

     数据持久化的技术:

      IO  JDBC  XML  ...

     主流的持久层框架:

      Hibernate  

      mybatis---->apache产品

      JPA(由EJB 3.0软件专家组开发,奢侈,豪华的解决方案)--->Oracle

      TopLink---->Oracle(DBA专业管理员)

      JSF(JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架)  

      JDO(JDO(Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。)

      

    2.Hibernate:ORM(对象关系映射)

      一种经典的实现,持久层的框架。解决了面向对象语言与关系数据库不匹配的现象。

    3.Hibernate.cfg.xml文件中:

      格式化sql语句:

      <property  name="format_sql"> true </property>

      创建+更新:

      <property  name="hbm2dd1.auto">update</property>

     

    4.Hibernate三态:

      A.瞬时态/临时态:

        用户使用new关键字创建的对象,此时对象在内存中保存,数据中没有相关记录,session中也没有缓冲信息;

      B.持久态:

        当调用session中的持久化方法(save或save Or Update)时,对数据进行持久化,数据库中存在相应记录,并且seesion中也有对象的缓存信息;

      C.游离态/离线状态:

        由于session的关闭或清空导致对象脱离了session的管辖,数据库中存在相应的记录,但session中没有对象的缓存信息

    5.操作Oracle数据库:

    <id name="id">  
    <generator class="sequence">  
        <param name="sequence">  
             seq_id_supervision
        </param>  
    </generator>  
    </id> 

    6.hbm.xml中:

      cascude(级联):

        save:级联新增

        delete:级联删除

        save-update:级联新增或修改

        all:所有操作都级联

        none:不级联

        eg:cascude="all"

        

    7.hbm.xml中:

      inverse(控制反转):   

        代表关系维护的控制权是否反转,如果inverse值为true则代表将关系维护的控制权交与对方

        eg:inverse="true"    

    8.hbm.xml中:

      constrained(约束的):

        eg:constrained="true",则代表一定得在这个属性对应的表中有数据并对应。

    9. 一对多情况下在一的一方,inverse设置为true,cascade设置为none或不设置,本表数据添加成功,另一个表数据添加失败,console不报错;(没有维护权限,添加数据不会报错)

     一对多情况下在一的一方,inverse设置为false,cascade设置为none或不设置,本表数据添加成功,另一个表数据添加失败,console报错。(拥有维护权限,添加数据会报错)

     一对多情况下在一的一方,inverse设置为false,cascade设置,本表数据添加成功,另一个表数据添加成功,外键添加成功,console不报错。(拥有维护权限,同时又有级联,添加成功)

     一对多情况下在一的一方,inverse设置为true, cascade设置,本表数据添加成功,另一个表数据添加成功,外键添加失败,console不报错。(没有维护权限,但有级联,本表数据添加成功,但另一个表外键会添加失败)

      eg:

      TestCode:

    package cn.zzsxt.test3;
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    
    import cn.zzsxt.entity3.City;
    import cn.zzsxt.entity3.Province;
    import cn.zzsxt.utils.HibernateUtil;
    
    public class TestOneToMany {
        public static void main(String[] args) {
            Session session = HibernateUtil.getSession();
            Transaction tx = session.beginTransaction();
            
            City c1=new City();
            City c2=new City();
            c1.setCityName("郑州");
            c2.setCityName("平顶山");
            Province p1=new Province();
            p1.setProvinceName("河南");
            p1.getCities().add(c1);
            p1.getCities().add(c2);
            
            session.save(p1);
            tx.commit();
            session.close();
            
            
            
            
            
            
            
        }
    }

    10.String  sql=" ";

       sql中不能出现*不然报错

    11.引号内不能直接加引用类型数据否则报错,基本类型不会,必须使用query.setString()方法赋值,从0开始,0代表第一个

    .

  • 相关阅读:
    【Python】python3.6中实现同一行动态输出
    【Python】将python3.6软件的py文件打包成exe程序
    【Java】分布式RPC通信框架Apache Thrift 使用总结
    【Java】加载驱动方法
    【Java】Comparable和Comparator接口的区别
    【Java】接口(interface)VS抽象类
    【Ubuntu】PHP环境安装-phpstudy for linux版
    【Ubuntu】xrdp完美实现Windows远程访问Ubuntu 16.04
    【系统设计】会议室预定系统房间预定系统设计
    jmeter场景设计:业务占比
  • 原文地址:https://www.cnblogs.com/kuangzhisen/p/7372753.html
走看看 - 开发者的网上家园