• Hibernate session FlushMode的五种设置


    http://www.2cto.com/kf/201207/141455.html

    Hibernate session FlushMode有五种属性:
    1、NEVEL:已经废弃了,被MANUAL取代了
    2 MANUAL:
    如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在增加、删除或修改操作过程中会出现如下错误
    org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition;
    解决办法:配置事务,spring会读取事务中的各种配置来覆盖hibernate的session中的FlushMode;
    3 AUTO
    设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库
    4 COMMIT
    提交事务或者session.flush()时,刷新数据库;查询不刷新
    5 ALWAYS:
    每次进行查询、提交事务、session.flush()的时候都会刷数据库
    ALWAYS和AUTO的区别:当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当 session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。 

  • 相关阅读:
    I
    poj 3414 pots (bfs+路径记录)
    hdoj 1495 非常可乐(bfs)
    hdoj 1241 Oil Deposits (dfs)
    hdoj 2612 find a way (两次bfs)
    poj 3984 迷宫问题
    poj 3087 Shuffle'm Up (bfs)
    poj 3126 Prime Path (bfs)
    poj 3279 Fliptile
    hdu_3068 最长回文(Manacher算法)
  • 原文地址:https://www.cnblogs.com/silentjesse/p/5066528.html
Copyright © 2020-2023  润新知