zoukankan      html  css  js  c++  java
  • hibernate笔记

    懒加载分属性懒加载(如load方法),关联懒加载
    Hibernate.initialize() and Hibernate.isInitialized() 强制初始化集合与代理对象

    hibernate查询方式
    sql Query(SQLQuery) = session.createSQLQuery(sql) (不会自动关联)
    hql Query = session.createQuery(hql) (自动关联)
    Criteria Criteria = session.createCriteria(clazz) (自动关联)

    关联时,如果要关联的对象不存在,会报错
    可在关联的get方法下设置
    @NotFound(action = NotFoundAction.IGNORE)


    在hibernate上
    @oneToOne, @ManyToOne, @OneToMany 这些注解上可以设置
    fetch = FetchType.LAZY
    但是如果在这些注解上在加上
    @NotFound(action = NotFoundAction.IGNORE)
    则懒加载失效, 会变成立即加载. (在程序中会带来很可怕的效应). 产生n+1查询.
    所以要使用fetch = FetchType.LAZY时, 要把 @NotFound给去掉

    @Formula与sql映射实体冲突,sql语句映射实体类时会报空指针异常


    立即关联查询会有重复记录
    criteria重复记录
    criteria.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE)

    懒加载
    会有1+n条sql语句查询

    无状态session,对数据增删改都会立即执行,不存在对session执行flush的问题。

    打开session不会立马连接数据库

    @DynamicUpdate动态更新,用于同一个seesion中。

    merge方法
    调用merge方法的时候,hibernate会检查在持久化上下文中的持久化实例是否和脱管实例具有相同的标识符。如果有,把脱管实例的状态负责到持久化实例中;如果没有,就从数据库中加载,然后把脱管实例和获取的对象状态合并;如果数据库中没有查到结果,就创建新的持久化实例,把脱管实例的状态复制到新实例,插入到数据库中,并通过merge()操作返回。

    not-null property references a null or transient value 错误原因:model中nullable设置与数据库表不一致

    自关联映射,双向关联映射,实体转json会报循环错误 ,懒加载,springmvc自转json报错

    session中不能有主键id相同的对象
    hibernate报错a different object with the same identifier value was already associated with the session

    object references an unsaved transient instance - save the transient instance before flushing  对象主键要有值

    通过id查询如果id为null会报如下错误:

    id to load is required for loading

    关联查询:外键为null不会报错,不为null且关联表中没相应的id则会报错

     

  • 相关阅读:
    linux下简单线程池实现
    mongodb日志文件切换
    SQL Server中如何统计数据库中所有用户表所占空间大小?
    Windows 2008 R2 + IIS7.5客户端证书认证问题?
    mongodb Replica Sets +Sharding高可用集群搭建(含认证)
    读书笔记linux vfs
    SQL Server 常用性能分析语句
    CentOS6.2下fastDFS的完整安装和配置步骤
    改进jquery.tablesorter.js 支持中文表格排序
    Sage CRM升级注意事项三
  • 原文地址:https://www.cnblogs.com/cghhnty/p/7865213.html
Copyright © 2011-2022 走看看