首页 > 代码库 > hibernate dynamic-update="true" 的一点应用

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" 的一点应用