应用系统采用三层结构已经被越来越多的开发者所接受,然而在实际开发中,有不少项目由于各种各样的原因,设计的三层结构并未显示出自己的优势,反而增加了系统的复杂性,降低了系统的可维护性。在这些项目中,项目的设计者是否真正理解了三层结构,项目的执行者是否能够按照设计者的思路开发出系统,是三层结构能否显示其优势的重要因素。
JPetStore 5.0 采用了一个非常清晰的三层结构,深入研究JPetStore 5.0的结构,对设计者和开发者都大有裨益。
从JPetStore 5.0的包就可以清晰地看出各层:
表现层:com.ibatis.jpetstore.presentation
业务层:com.ibatis.jpetstore.service
持久层:com.ibatis.jpetstore.persistence
此外还有领域模型:com.ibatis.jpetstore.domain
在经典的三层结构中,表现层调用业务层,业务层调用持久层。表现层与Struts、velocity、jsp等结合完成页面的展现,持久层与JDBC、Hibernate、ibatis、JDO等完成与关系数据库的访问。
应用的三层结构与DBMS和WEB共五层,每一层只调用它下面的一层,通常不隔层调用,更不能反向调用。但领域模型则横跨多层,通过领域模型在各层之间传递数据,相比传递各层特有的对象(如把ServletRequest、ServletContext传递到业务层、甚至持久层),大大降低各层之间的耦合性。