有关数据传输对象大小的问题

把表映射成对象,有些时候造成冗余数据的传输,降低了系统性能,特别是在表字段比较多的情况下:比如一个用户表有30个字段,包括地址,描述等 ,但我有一个方法只要用户名列表,用o/r mapping后,一般都是用select * from mytable,造成很多数据根本不要传输的进入了传输,是不是我不应该用select * from mytable,而应该用select field,field2....这样的语句呢?

应该使用定制的DTO。这种方法在《EJB设计模式》P43中有详细介绍,机械工业出版社。

是的,说白了,就是使用JDBC直接获得。

有些模块要表的前面字段,有些呢是要后面的字段,有些是表的字段全要
定制的dto是不是把一张表根据需求分成不同属性的dto

比如一个Car类,有30个属性。有些页面只需要品牌和制造厂家,你就可以造一个CarNameAndProducerDTO, 而有些页面只关注汽车的引擎,你就需要一个CarEngineDTO.
还有,你还需要一个CarDTOFactory,就是跟汽车有关的DTO的工厂。有如下的方法:
CarNameAndProducerDTO getNameAndProducerDTO(carPK);
CarEngineDTO getCarEngineDTO (carPK);

谢啊,不过dtoFactory有什么作用呢?

就是生产dto的工厂。