dynamic-insert

 作用:设置对象中没有值的字段 insert并不会对其进行插入.

实体类映射配置如下

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name实体类路径 table数据库表名 schema表的拥有者-->
<class name="entity.Emp" table="emp" schema="scott">
<!-- 此id属性表示 持久化的OID和表的主键映射
name为实体类中的属性名称 type为数据类型 column为数据库中的列名 -->
<id name="empno" type="java.lang.Integer" column="empno">
<!-- 此属性用于指定具体注解生成策略 assigned策略,就是不使用主键生成策略,由手工输入ID. -->
<generator class="assigned"/>
</id>
<!-- name为实体类中的属性名称 type为数据类型 column为数据库中的列名 not-null="true"表示不允许为空 -->
<property name="ename" type="string" not-null="true" column="ename"/>
<property name="deptNo" type="java.lang.Integer" column="deptNo"/>
<property name="job" type="string" column="job"/>
<property name="MGR" type="java.lang.Double" column="MGR"/>
<property name="hiretDate" type="java.sql.Date" column="hireDate"/>
<property name="sal" type="java.lang.Double" column="sal"/>
<property name="comm" type="java.lang.Double" column="comm"/>
</class>
</hibernate-mapping>

首先是设置了dynamic-insert属性的

public static void main(String[] args){
EmpSerivce empSerivce = new EmpSerivce();
Emp emp = new Emp();
emp.setEmpno(7903);
emp.setEname("张三");
empSerivce.add(emp);
}

结果如上,可以看到string类型未赋值的属性都没有对其进行插入,数值类型因为默认值是0所以会进行插入,deptNo因为是外键所以没有进行插入

没设置dynamic-insert属性的

 

public static void main(String[] args){
EmpSerivce empSerivce = new EmpSerivce();
Emp emp = new Emp();
emp.setEmpno(7905);
emp.setEname("张三");
empSerivce.add(emp);
}

结果如上 全部字段都进行了插入

dynamic-update

 作用:设置对象空字段不对其进行更新

不设置dynamic-update

 public void updateEmp(){
Transaction tx = null;
try {
tx= HibernateUtil.currentSession().beginTransaction();
Emp empUpdate = empDao.update(7900);
empUpdate.setSal(9999);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null)
tx.rollback(); //回滚事务
}
}

可以看到在代码中我只更新了sal列

可以看到,对全部的列进行了更新

sal 列也变成了 9999

设置了dynamic-update

设置了之后只对我们更新过的列进行更新

总结

  • dynam-insert:设置了此属性对中的空值并不会进行insert,数值型除外
  • dynam-update:设置了此属性只对进行了改变的值进行更新

最新文章

  1. MAC显示文件夹路径
  2. SourceTree 免登录跳过初始设置
  3. android开发之在activity中控制另一个activity的UI更新
  4. nl2br() 函数
  5. [MFC] 高仿Flappy bird 桌面版
  6. [Tomcat]如何在同一台机部署多个tomcat服务
  7. winform学习之-----页面设计-20160523
  8. maven入门教程
  9. NDK开发之数组操作
  10. CMD经常使用的命令
  11. jsel、tl是什么
  12. 笔记-64位dump转32位dump
  13. Vray
  14. python大法好——Python XML解析
  15. JavaSE基础知识(5)—面向对象(抽象类和接口)
  16. MPU和CPU有什么区别?
  17. __x__(2)0905第二天__计算机软件和硬件
  18. 用c++写一个数据库
  19. JVM、JRE,JDK
  20. Windows 7 任务栏图标消失(变透明,仍然占有地方,但是点击无反应)的解决方法

热门文章

  1. 前端(三大框架、Bootstrap,jQuery,自整理)
  2. Spark应用(app jar)发布到Hadoop集群的过程
  3. 打杂程序员之nginx服务配置
  4. .NET开源工作流RoadFlow-流程运行-菜单配置
  5. 开发Windows RT平台下的Windows应用商店应用程序的遇到的问题备忘
  6. Network Request Failed
  7. javascript正则表达式 - 学习笔记
  8. May 30th 2017 Week 22nd Tuesday
  9. 【转载】SSH login without password 免密登陆
  10. python核心编程中网络爬虫的例子