zoukankan      html  css  js  c++  java
  • Hibernate缓存、组件、继承映射

    Hibernate缓存、组件、继承映射

    三种状态:

    临时状态:不受session管理,没有提交到数据库;没有执行sql之前,new对象的时候;

    持久化状态:受session管理,提交到数据库;正在执行sql

    游离状态:不受session管理,提交到数据库;session关闭后

    Cache缓存:会先看看缓存里有没有,有就取出来,没有就到数据库取数据。

    Session的三个方法:flush、evict、clear

    不同session不会共享数据。

    List与iterator的区别:

    List是直接到数据库进行查询,也会放到缓存,但是不会到缓存取数据;

    Iterator是到数据库取数据也放到缓存,会到缓存取数据。

    Get和load的区别:

    Get是及时查询,直接一个select出来;

    Load默认是懒加载,使用到数据的时候才会到数据库取数据。会先到数据库取主键,然后根据主键一个一个遍历。

    Lazy=true、false、extra(真正使用到数据的时候才回到数据库取数据,像isEmpty、size都不会到数据库取数据)

    一对一映射:

    <generator class=”foreign”>

    <param name=”property”>引用的对象</

    <id name="user_id">

                                <!--

                                         id 节点指定的是主键映射, 即user_id是主键

                                         主键生成方式: foreign  即把别的表的主键作为当前表的主键;

                                                            property (关键字不能修改)指定引用的对象     对象的全名 cn..User、  对象映射 cn.User.hbm.xml、   table(id)

                                 -->

                                <generator class="foreign">

                                         <param name="property">user</param>

                                </generator>

                       </id>        

    <!--

                                一对一映射,有外键方

                                (基于主键的映射)

                                 constrained="true"  指定在主键上添加外键约束

                        -->

                       <one-to-one name="user" class="User" constrained="true"  cascade="save-update"></one-to-one>

    组件映射

    <!-- 组件映射 -->

                       <component name="wheel">

                                <property name="size"></property>

                                <property name="count"></property>

                       </component>

    继承关系的映射

    简单映射:

             可以直接使用父类的属性;

             获取时候注意:当写hql查询的使用,通过父类查询必须写上类的全名

    每个类都对应一张表:(包括父类在内)

             每个子类都这么写:

             <joined-subclass name="Cat" table="t_cat">

                                <key column="t_animal_id"></key>

                                <property name="catchMouse"></property>

                       </joined-subclass>

    每个类都对应一张表:(包括父类不在内)

    需要将父类:abstract=”true” <class name="Animal" abstract="true">

    abstract="true"  指定实体类对象不对应表,即在数据库段不生成表

    <union-subclass name="Cat" table="t_cat">

                                <property name="catchMouse"></property>

                       </union-subclass>

    注意:主键不能是自增长!可以用uuid,父类id要为String类型

  • 相关阅读:
    EOS概念理解总结
    boost asio one client one thread
    EOS 数据签名与公匙验证代码用例
    EOS 智能合约编写(一)
    EOS多节点同步代码分析
    EOS 用户权限相关命令
    EOS 多主机多节点配置终极命令
    EOS多主机多节点环境配置
    ubuntu命令错误集
    java多线程中的调度策略
  • 原文地址:https://www.cnblogs.com/core404/p/5854829.html
Copyright © 2011-2022 走看看