最近看到一个基于strtus与hibernate的项目,看到一个夸张的设计,让domain model继承ActionForm,然后在配置文件中把model当作form来配置。
然后我看了一下domain类与映射文件,发现只要关系映射的字段,就做了两次映射,比如,有个User,
class User{
String id;
String name;
String role;
String roleId;
}
role和roleId其实都是role_id,这种设计方式很有问题,若仅仅是load数据,那没有问题;但是若insert数据的话,就会引起问题,比如,从actionForm中copy数据到domain的时候,只copy 就会引起不一致,只能会的roleId,但是role是null,这是effective java中一直提到的对象一致性问题,对象本身的状态在一个可控的时间内处于不稳定的状态。
本文探讨了一个基于Struts与Hibernate的项目中存在的设计问题:Domain Model继承ActionForm并作为Form配置,导致数据映射不一致,特别是在插入数据时可能出现角色ID与角色名称不同步的问题。
1073

被折叠的 条评论
为什么被折叠?



