zoukankan      html  css  js  c++  java
  • 控制insert和update语句

    控制insert和update语句

    Hibernate在初始化阶段,就会根据映射文件的映射信息,为所有的持久化类预定义以下SQL语句:

    • insert语句,例如Person类的insert语句如下:

    insert into person(id,name,age,address) values(?,?,?,?)

    • update语句,例如Person类的update语句如下:

    update person set id=?,name=?,age=?,address=?

    • delete语句,例如Person类的delete语句如下:

    delete from person where id=?

    • 根据OID来检索持久化类实例的select语句,例如Person类的select语句如下:

    Select id,name,age,address from person where id=?

    以上SQL语句中的问号代表JDBC PreparedStatement中的参数,这些SQL语句都存放在SessionFactory的缓存中,当执行Session的save()、update()、delete()和load()方法时,将从缓存中找到相应的预定义SQL语句,再把具体的参数值绑定到该SQL语句中

    在默认情况下,预定义的SQL语句中包含了表的所有字段,此外,Hibernate还允许在映射文件中控制insert和update语句的内存,例如:

    <property name=”addrsss” update=”false” column=”address”/>

    以上代码把<property>元素的update属性设置为false,这表明在update语句中不会包含address字段。

    映射属性

    作用

    <property>元素的insert属性

    如果为false,在insert语句中不包含该字段,表明该字段永远不能被插入。默认值为true

    <property>元素的update属性

    如果为false,update语句中不包含该字段,表明该字段永远不能被更新,默认值为true

    <class>元素的mutable属性

    如果为false,等价于所有的<property>元素的update属性为false,表示整个实例不能被更新,默认值为true

    <property>元素的dynamic-insert属性

    如果为true,表示当保存一个对象时,会动态生成insert语句,只有这个字段取值不能为null,才会把它包含到insert语句中。默认值为false

    <property>元素的dynamic-update属性

    如果为true,表示当更新一个对象时,会动态生成update语句,只有该字段取值不为null,才会把它包含到update语句中。默认值为false

    <class>元素的dynamic-insert属性

    如果为true,等价于所有的<property>元素的dynamic-insert属性为true,表示当保存一个对象时,会动态生成insert语句,insert语句中仅包含所有取值不为null的字段。默认值为false

    <class>元素的dynamic-update属性

    如果为true,等价于所有的<property>元素的dynamic-update属性为true,表示当保存一个对象时,会动态生成update语句,update语句中仅包含所有取值不为null的字段。默认值为false

     

  • 相关阅读:
    /bin/bash^M:损坏的解释器: 没有那个文件或目录
    QT槽函数处理线程
    Strategy策略模式
    Proxy代理模式
    Ubuntu系统修改BIOS时间问题
    Ubuntu下安装Goldendict(翻译软件)
    自定义QMenu
    C connect实现Timeout效果(Windows)
    059 Python计算生态概览
    058 程序设计方法学小结
  • 原文地址:https://www.cnblogs.com/cnjava/p/2602294.html
Copyright © 2011-2022 走看看