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无效,需要进一步验证

  • 相关阅读:
    QQ聊天界面的布局和设计(IOS篇)-第二季
    关于UIButton中的ContentEdgeInsets的深入研究
    QQ聊天界面的布局和设计(IOS篇)-第一季
    UITextField实现过滤选中状态拼音
    UITableView系列(1)---Apple缓存池机制
    应用程序打包(ipa)
    线程篇-01-NSThread
    IOS开发错误提示原因集合-----长期更新
    Divide and Conquer.(Merge Sort) by sixleaves
    [已完成,附上实现方式]DWZ横向导航实现动态左菜单树
  • 原文地址:https://www.cnblogs.com/firejava/p/7550326.html
Copyright © 2011-2022 走看看