PEAA的Table Data Gateway模式是带有sql语句,可以处理数据表的搜索,插入,删除,更新的数据处理模式.其中作者对Table Data Gateway模式返回map结构提出了反对意见,认为类型的检查不严格,容易在map中出现拼写错误,所以推荐返回DTO.在spring中这两种方法都支持,getJdbcTemplate().queryForList返回一个由HashMap组成的ArrayList,或者使用getJdbcTemplate().query的new RowMapper()返回一个由POJO组成的ArrayList.问题有两个1.因为数据库的设计一般都不能一次完毕,其中涉及到大量库表的修改,每次修改库表,必须修改Model和数据库的CRUD操作,很是麻烦,使用map模式,只需要修改使用Model数据的JSP页面,因为POJO的javabean和HashMap都是java对象,jstl都可以得到.好像比hibernate好一些,那样必须修改数据库-->hbm文件-->POJO类,最是痛苦,所以使用hibernate的数据库设计者必须为绝顶高手.2.其实说白了,Table Data Gateway就是DAO模式,不过感觉返回POJO类有性能问题,在jvm中每生成一个POJO都要耗费一定的资源.在同样的数据量的情况下,使用hibernate的程序的CPU耗费比使用JDBC的要高. |