• sgg_(7_8)_session.update()


    一、session的update()方法  

      session的update()方法使一个游离对象转变为持久化对象,并且计划执行一条update语句。
      若希望session仅当修改了对象属性事才执行update()语句,可以把映射文件中<class>元素的select-before-update设为true,该属性的默认值为false
      当update()方法关联一个游离对象时,如果在session的缓存中已经存在相同OID的持久化对象,会抛出异常
      当update()方法关联一个游离对象时,如果在数据库中不存在相应的记录,也会抛出异常。
      若更新一个持久化对象,不需要显示的调用update方法,因为在调用Transaction的commit()方法时,会先执行session的flush()方法。
      更新一个游离对象,需要显式的调用session的update方法,可以把一个游离对象变为持久化对象。

    二、session的saveOrUpadate()方法
      session的saveOrUpate()方法同时包含了sava()与update()方法的功能

      


      判定对象为临时对象的标准
        java对象的OID为null
        映射文件中<id>设置了unsaved-value属性,并且java对象的OID取值与这个unsaved-value属性值匹配。

    三、了解session的merge()方法

      

    四、session的delete()方法

       可以通过设置hibernate.cfg.xml配置文件hibernate.use_indentifier_rollback为true,使删除对象后,把其OID置为null。 

    五、session的evict()
      从session缓存中把指定的持久化对象移除。

    六、在hibernate中配置c3p0数据源  

      6.1导入jar包
        hibernate-release-4.2.4.Finalliboptionalc3p0*.jar

      6.2在hibernate.cfg.xml中加入这几个配置项

        

      c3p0数据库连接池属性
        hibernate.c3p0.max_size:数据库连接池的最大连接数
        hibernate.c3p0.min_size:数据库连接池的最小连接数
        hibernate.c3p0.timeout:数据库连接池中连接对象在多长时间没有使用过后就应该被销毁
        hibernate.c3p0.max_statements:缓存Statement对象的数量
        hibernate.c3p0.idle_test_period:表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时,连接池本身不会把自己从连接池中移除而是专门有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和timeout做对比,进而决定是否销毁这个连接对象。
        hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同一时刻获取多少个数据库连接对象。

      

      

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    ABP AsyncHelper.RunSync 内部实现
    ABP 扩展 OrganizationUnit 数据实体(新增字段)
    ABP 调用 PUT 接口报错 405 Method Not Allowed
    ABP 扩展 Role 数据实体(新增字段)
    C# EntityFramework 自定义数据库表名(一)
    EPPlus.Core(OfficeOpenXml) 获取 Excel 数据集合
    C# 获取文件并将文件按创建/修改时间排序
    C# 计算两个日期之间的月份数(差值)
    C# Split 方法扩展支持双引号
    教你在 C# 代码中写出带高亮关键字的注释
  • 原文地址:https://www.cnblogs.com/aeon/p/10838731.html
Copyright © 2020-2023  润新知