• JPA-学习02


    一、主键生成策略

    主键:确定一张表的唯一性东西(非空且唯一)

    分为:自然主键和代理主键、

    生成策略:

    identity:自增策略(1.值必须是数字,2.数据库支持)

    sequence:序列策略(同上,性能高,可以缓存)

    auto:默认策略(通过方言自动配置)

    table:表策略(性能较低,但是能模拟序列,兼容所有数据库)

    二、JPA的对象状态

    临时状态(transient):瞬时状态,和entityManager没有关系

    持久状态:托管状态,一级缓存中的对象,和entityManager发生关系

    删除状态:执行remove方法就是,和entityManager准备解除关系

    游离状态:脱管状态,和entityManager解除关系

    三、脏数据更新

    结论:持久化对象一旦修改,提交事务时数据库修改

    四、规则

    1.domain实体类不能定义final

    2.不能使用基本数据类型

    3.必须提供默认的无参构造方法

    五、域对象(domain)之间的关系

    1.依赖:例如Controller依赖于service依赖于dao

    2.关联关系:

      多重性:可分为一对一、一对多,多对一、多对多

      导航型:可分为单向关联和双向关联

      (表有多重性,没有导航性)

    六、设计表注意事项

    多对一:有外键的就是多方

    多对多:有中间表的就是多对多

    一对一:共享主键,唯一外键

    聚合关系:双向的多对一、一对多

    组合关系:强聚合、分不开

    注:开发中一般先一后多,有效提高性能

    fetch:数据抓取策略

    FetchType.EAGER:及时加载

    FetchType.LAZY:延时加载,懒加载

    懒加载异常:no session(和数据库会话关闭)

    七、二级缓存

    同一个EntityManagerFactory 不同EntityManager 同一个OID

    使用场景:

    1.读取大于修改

    2.对数据要有独享控制权,数据不被第三方修改

    3.可以容忍无效数据、非关键数据(非财务数据)

    4.数据量不能超过内存容量

  • 相关阅读:
    如果再回到从前 备忘录模式
    在NBA我需要翻译 适配器模式
    无尽加班何时休 状态模式
    Linux网络编程学习(六) ----- 管道(第四章)
    Linux网络编程学习(五) ----- 信号(第四章)
    Linux网络编程学习(四) -----守护进程的建立(第三章)
    Linux网络编程学习(三) ----- 进程控制实例(第三章)
    Linux网络编程学习(二) ----- 进程控制(第三章)
    Linux网络编程学习(一) ----- 概论和Linux模型(第一章第二章)
    Linux网络编程学习计划
  • 原文地址:https://www.cnblogs.com/smiledragon/p/10487029.html
Copyright © 2020-2023  润新知