hibernate dynamic-update="true" 的一点应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate dynamic-update="true" 的一点应用相关的知识,希望对你有一定的参考价值。
dao层代码
public void test(User user) throws Exception{ User user1=(User)findById(user.getId()); user1.setName(user.getName()); user1.setIsAdmin(user.getIsAdmin()); user1.setTelephone(user.getTelephone()); user1.setPassword(user.getPassword()); user1.setUsername(user.getUsername()); }
biz层(因为使用的是hibernate的getCurrentSession()方法 所以所有的操作都需要提交事务)
private User methodFactory(String methodName,Class<?>[] dataType,Serializable...params) throws NoSuchMethodException{ Class<?> userClass=UserDao.class; Method method = userClass.getDeclaredMethod(methodName,dataType); Transaction transaction=null; User user=null; try{ transaction=HibernateSessionFactory.getSession().beginTransaction(); user=(User)method.invoke(userClass.newInstance(),params); transaction.commit(); }catch(Exception e){ System.out.println("execute sql filed!"); e.printStackTrace(); if(transaction!=null) transaction.rollback(); } return user; } public void test(User user)throws Exception{ methodFactory("test",new Class[]{User.class},user); }
<hibernate-mapping> <class name="po.User" table="users" dynamic-update="true" >
如果是开启了动态更新 那么你在commit之前select到的bean对象,这时再次set不同值进去
然后commit,hibernat会自动判断如果新set的值有变化 那么会执行update操作,那么此时这个
dynamic-update="ture" 就表示只update有变化的项,而false默认是全部字段更新
以上是关于hibernate dynamic-update="true" 的一点应用的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
Hibernate→ 《Hibernate程序开发》教材大纲