zoukankan      html  css  js  c++  java
  • atitit.hbnt orm db 新新增更新最佳实践o7

    atitit.hbnt orm db 新新增更新最佳实践o7

    1. merge跟个save. 1

    2. POJO对象处于游离态、持久态、托管态。使用merge()的情况。 1

    3. @DynamicInsert @DynamicUpdate 2

    4. 实际调用merge()生成的sql 2

    5. 参考 2

    1. merge跟个save.

    Update

    UpdateorSave 已经不推荐了...

    生成的黑头子有个merge跟个save...

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    2. POJO对象处于游离态、持久态、托管态。使用merge()的情况。

    测试过程中游离态、持久态、有用

    1、游离态ID为空,数据库肯定不存在,调用merge(),直接插入数据库。

    2、持久态,pojo对象从数据库中取出的行记录,调用merge(),自动比较该对象和数据库对象是否发生更改,是则更新该行记录。

    3、托管态,通过编程的方式指定ID,程序构造的POJO对象,调用merge(),自动比较数据库该ID行记录与POJO对象的属性。不一样则更新。

    但通过程序构造的POJO对象,并指定ID。但POJO的ID为native,并指定了数据库的sequence,调用merge()后,程序指定的ID,还是会被改成新的序列ID,则,该POJO对象还是成了ID不为空、数据库不存在该ID的游离态。

    3. @DynamicInsert @DynamicUpdate

    4. 实际调用merge()生成的sql

    首先selectup

    select gvmaterial0_.material_id as material1_0_0_, gvmaterial0_.application_type as applicat2_0_0_, gvmaterial0_.can_down_org as can3_0_0_, gvmaterial0_.create_time as create4_0_0_, gvmaterial0_.effectie_time as effectie5_0_0_, gvmaterial0_.failure_time as failure6_0_0_, gvmaterial0_.file_path as file7_0_0_, gvmaterial0_.material_description as material8_0_0_, gvmaterial0_.material_type as material9_0_0_, gvmaterial0_.play_time as play10_0_0_, gvmaterial0_.size as size0_0_, gvmaterial0_.update_time as update12_0_0_, gvmaterial0_.update_user as update13_0_0_ from gv_material gvmaterial0_ where gvmaterial0_.material_id=1

       32 Query update gv_material set play_time=125 where material_id=1

    5. 参考

    Hibernate更新某些字段的几种update方法 - zb0567的专栏 博客频道 - CSDN.NET.htm

  • 相关阅读:
    十问5.12汶川大地震
    JZ035数组中的逆序对
    JZ037数字在排序数组中出现的次数
    JZ039平衡二叉树
    JZ033丑数
    JZ040数组中只出现一次的数字
    JZ032把数组排成最小的数
    JZ036两个链表的第一个公共结点
    JZ034第一个只出现一次的字符位置
    JZ031从 1 到 n 整数中 1 出现的次数
  • 原文地址:https://www.cnblogs.com/attilax/p/15199169.html
Copyright © 2011-2022 走看看