以前刚开始工作的时候,一直纳闷展示数据为什么要用对象dto来展示,而不直接用对象,后来百度发现主要为了隐藏不需要展示的属性,用dto展示前端需要的数据,entity对应表.
刚刚敲代码的时候发现,
当更新数据用了事务,本来我想更新的是user.getEmail()的数据,但是在执行更新方法userDao.saveAndFlush(updateUser)后,因为事务的存在,jpa是只有等整个service方法执行完成后才会把数据提交到数据库,而我在saveAndFlush方法后又执行了
updateUser.setPassword(StringUtils.EMPTY); updateUser.setEmail("无敌@qq.com");这两个方法,想把这个对象返回给前端,结果就会导致最后提交给数据库的数据为密码为空,email为 无敌@qq.com,所以我们要用个专门展示给表示层的对象的分装类来返回给前台,而不要直接用entity(加上为了隐藏不需要展示的数据 这两个原因),之前一直没意识到这个问题,因为公司一直每个对象都有对应的dto用来展示数据,用习惯了,这次自己遇到了记录下来以免下次犯同样错误.