最近看到一个基于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中一直提到的对象一致性问题,对象本身的状态在一个可控的时间内处于不稳定的状态。