2009年5月4日星期一

JavaEEDesign_014:数据层(持久化层)面临的四大问题之四:性能问题(摘录+整理)

通过数据层访问数据自然会比直接访问数据的性能要差。但它提高了复用性和维护性,因此如果性能在可接受的范围内,使用数据层还是非常值得的。
除此之外,一些设计上的错误也会导致性能低下:

1. DAO 返回对象的粒度不合适。
不要把原始数据模型直接照搬成值对象,导致值对象粒度过细。


2. DAO 返回对象的深度超过三层。
嵌套超过三层的值对象,即使读取和更新少量对象都会造成巨大开销。

3. DAO find() 方法返回大量值对象。
数据层框架最适合用于OLTP (联机事务处理),即处理少量对象的小事务;而不适合用于OLAP(联机分析处理),即处理大量对象的大事务。
特别是嵌套聚集的使用会严重影响性能,比如某个查询返回1000本书,每本书有多个编辑。此时,应该考虑用其它方式实现,比如使用JDBC for Reading 模式,直接通过JDBC读取数据。


4. EJB常见设计问题。
(1)未缓存JNDI查找结果。
(2)未使用本地接口。

没有评论: