dynamic-insert
作用:设置对象中没有值的字段 insert并不会对其进行插入.
实体类映射配置如下
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
首先是设置了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:设置了此属性只对进行了改变的值进行更新
