zoukankan      html  css  js  c++  java
  • Spring相关技术记录

    @ResponseStatus(value=)

    Hibernate
    OneToOne:
    使用optional=false,才能使用lazy
    如果关联字段是当前表的主键,我试了不加optional=false,lazy也生效,如果不使用lazy, 默认会使用left out join 来查询

    @Column(nullable=false)
    is an instruction for generating the schema. The database column generated off the class will be marked not nullable in the actual database.
    optional=false
    is a runtime instruction. The primary functional thing it does is related to Lazy Loading. You can't lazy load a non-collection mapped entity unless you remember to set optional=false (because Hibernate doesn't know if there should be a proxy there or a null, unless you tell it nulls are impossible, so it can generate a proxy.)

    Session:
    长session应用性能影响并不大,如果不进行数据库操作,session不会获取jdbc连接, hibernate建议每个请求对应一次session
    使用vo封装视图层需要的数据与openSessionInView各有优势,可以视情况使用,使用vo时,可以用Hibernate.initialize()或者用fetch查询出关联数据填充vo
    使用ThreadLocalSessionContext策略,Hibernate的Session会随着getCurrentSession()方法自动打开,并随着事务提交自动关闭。
    Session的打开关闭并意味着JDBC连接的打开关闭,创建Session时,并不会打开与数据库的连接,只有需要进行数据库操作时,才会获取JDBC连接
    一级缓存是session级别,二级缓存将缓存所有访问过的实体,查询缓存缓存特定的数据

    FetchMode:
    不设置,默认为FetchMode.SELECT, 可以使用Lazy,会有n+1问题
    FetchMode.JOIN - 采用外联,用一条sql取出关联数据,lazy无效
    FetchMode.SUBSELECT- 生成两条sql, 第二条用in去查询关联数据
    fetch_size - 设置批量查询的条数,和SUBSELECT类似,用in查询关联数据,生成多少sql取决于关联的数据量,默认是10,一般设置为50-100为佳
    batch_size - 批量删除、更新、插入的量,一般设置为50-100为佳
    max_fetch_depth - 外连接抓取深度,设置为0-3为佳

    测试感觉OneToMany应用FetchMode.JOIN无效,需要进一步验证

  • 相关阅读:
    poj1182 食物链
    poj1611 The Suspects
    poj3436 Computer Factory
    (转) GPG入门教程
    cronolog安装配置
    RHCA-436-4 rhcs conga
    pxe引导gparted live万能分区
    linux下拔号pptp
    GNU parted简略用法
    hostapd故障解决(1.1,2.0,2.2)
  • 原文地址:https://www.cnblogs.com/firejava/p/7550326.html
Copyright © 2011-2022 走看看