ModelsTry生成代码的架构说明
架构层次
ModelsTry 生成的代码分三层:
1. View 层:
向用户展现信息和处理用户的交互请求。
2. Services 层:
处理用户的业务逻辑和事务控制。
3. DAO 层:
将用户的持久化信息保存到数据库和对数据库信息的查询。
数据模型
ModelsTry
根据数据库表生成数据模型。每一个表生成一个类,表之间的关联缺省为多对一关系,即表的外键字段生成时会生成一个外键对应表的模型类的一个对象作为其中一个属性。如表
order 的外键 customer_id 对应表 cusotmer ,则生成order模型类 Order 时,将生成一个属性 Customer
customer。
ModelsTry 生成模型的同时生成 Hibernate 的 hbm.xml 文件,以及 Hibernate 配置文件 hibernate.cfg。配置文件包含的内容如下:
<hibernate-configuration>
<session-factory>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/demo/model/Customer.hbm.xml"/>
......
</session-factory>
</hibernate-configuration>
DAO层
对应每一个数据库表,生成两个文件:接口和实现类。实现类继承自
org.springframework.orm.hibernate.support.HibernateDaoSupport 类,方便 Spring 管理事务。
对于表 customer 接口包含的方法:
public interface ICustomerDao {
public abstract void addCustomer(Customer customer) throws DataAccessException, HibernateException;
public abstract List listCustomer() throws DataAccessException, HibernateException;
public abstract void updateCustomer(Customer customer) throws DataAccessException, HibernateException;
public abstract Page listCustomer(int pageno, int rowsize, String orderby, boolean isReserve) throws DataAccessException, HibernateException;
public abstract Customer findByPrimaryKey(java.lang.String customer_id) throws DataAccessException, HibernateException;
public abstract void deleteCustomer(java.lang.String customer_id) throws DataAccessException, HibernateException;
public abstract void deleteCustomers(java.lang.String[] customer_ids) throws DataAccessException, HibernateException;
}
其中,listCustoemr(int pageno, int rowsize, String orderby, boolean isReserve)
为按分页查询数据的方法。参数 isReserve 为按 orderbye 排序的正序(true)或者反序(false)。
Service层
对应每一个数据库表,生成两个文件:接口和实现类。
Service层为用户业务处理层。用户可以在此层添加系统的业务逻辑处理。Service层主要对业务操作的事务进行管理。
Service层的接口和实现的方法基本与 DAO 层相一致。Service 实现类主要调用 Dao 接口实现自己相应功能。
ModelsTry 在生成 Service 层的类的同时,还生成3个 spring 配置文件:
- applicationContext-resources.xml :数据源配置。
- jdbc.properties :数据源的driver、url、user和password值。
- applicationContext-hibernate.xml :spring的bean配置。在这里定义每一个dao和service类以及
Ioc。 同时定义每一个Service类的各个函数的事务处理方式。(所有方法定义为 PROPAGATION_REQUIRED )。
View层
view层主要生成Struts 的 Action 类和jsp文件以及struts-config.xml配置、web.xml配置、validation.xml配置、tiles配置、struts-menu
的配置文件。
生成一个控制基类:BaseAction ,继承自Struts的 LookupDispatchActionSupport
类,此类为分发类,将请求分发到相应的方法。BaseAction类包含getBean方法,从spring的上下文取得Service类的一个实例。
对于每一个表,如customer表,生成的Action 类有两个:CustomerSelectAction 和 CustomerAction 。
CustomerSelectAction类继承Struts的Action类,提供其它模块调用时选择的功能。如Order模块的页面,选择Customer时,调用CustomerSelectAction,从客户列表选择一个客户。
CustomerAction类继承BaseAction,包含几个方法:
- list方法:分页列表客户。
- add方法:新增一个新客户,显示到页面由用户编辑
- save方法:将用户新增后编辑好的客户资料保存,成功后返回列表界面
- saveadd方法:将用户新增后编辑好的客户资料保存,成功后返回到新增页面继续添加客户。
- view方法:从数据库取出客户资料,显示
- modify方法:从数据库取出客户资料,显示到页面由用户编辑
- update方法:将用户编辑好的客户资料更新到数据库
- cancel方法:返回到列表页面
- deleteall方法:删除多个选择的客户
- delete方法:删除指定的一个客户
|