zoukankan      html  css  js  c++  java
  • day31_Hibernate复习_03(补刀)

    一、多对多
        在对象中如何表达多对多关系: 
            两方都使用集合表达。即两个对象中互相持有对方的集合的引用。
        
        小结:
            <set name="本方引用的集合名称" table="中间表表名" >
                <key column="本方中间表列名称" />
                <many-to-many class="对方的完整类名" column="对方中间表列名称" />
            </set>        
        
        操作:
            inverse:本方是否要放弃维护外键关系(默认值是false)
            cascade:是否需要级联操作(有5个值)(没有默认值)
              save-update         级联保存和级联修改
          delete              级联删除
          delete-orphan       孤儿删除
          all                 save-update + delete
          all-delete-orphan    save-update + delete + delete-orphan
        
    二、检索策略
        1、类级别
            load方法    =>    受class元素上的lazy属性影响
        2、关联级别
           1> 一对多:根据客户去找订单
                fetch:
                    select       (默认值) 使用普通select语句查询集合内容
                    join         使用表连接语句查询集合
                    subselect    同时加载多个对象的集合时,使用子查询语句
                lazy:
                    true         (默认值)需要使用时才会去加载
                    false        立即加载
                    extra        极其懒惰,当调用集合的size时,Hibernate只会发送count语句
            小结:        
                使用join时,lazy属性失效,都是立即加载。
                使用select时,lazy属性正常。
                使用subselect,除了在加载多个集合时使用子查询语句外,其他同select。
            
            2> 多对一:根据订单去找客户
                fetch:
                    select       (默认值) 使用普通select语句查询集合内容
                    join         使用表连接语句查询集合
                lazy:
                    false        立即加载
                    proxy        交给对方的类加载策略决定,受class元素上的lazy属性影响
                    
        3、批量检索
            batch-size="n"       决定一次加载几个对象(客户)的集合数据
        
    三、查询总结
        1、get/load     根据oid进行检索
        2、对象导航图检索 
        3、Sql语句查询
        4、Hql语句查询
        5、Criteria查询(了解)
        
    四、连接池、事务、锁
        c3p0连接池
            1、导包,c3p0-0.9.1.jar 在 Hibernate 的类库中optional文件夹下
            2、在hibernate.cfg.xml 进行配置
            3、配置c3p0中的具体使用的参数
    
        事务
            隔离级别设置: hibernate.connection.isolation     1 2 4 8悲观锁
                读锁:select * from xxx lock in share mode;    =>    get(clazz, id, LockOption.READ);
                写锁:select * from xxx for update;            =>    get(clazz, id, LockOption.UPGRADE);
            乐观锁
                1、实体类中加入版本控制属性(类型是Integer)
                2、在Xxx.hbm.xml,配置上version元素
  • 相关阅读:
    终于把老板的项目搞完了---最后一步项目部署
    linux rz/sz 拖动文件上传
    layui之table.render使用(含后台详细代码实现)
    layui upload 后台获取不到值
    Layui upload动态传参,后台接收不到,解决方法
    hibernate 多条件查询,查询部分字段等操作
    IDEA自动生成序列化ID
    MySQL范围查询(日期)
    安全随机数!Java 随机数 Random 与 SecureRandom
    java poi 写excel到指定目录
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9306057.html
Copyright © 2011-2022 走看看