使用Spring Roo构建项目
1. 结构概述 Architectural Overview
Spring Roo
专注于Java
企业应用的开发。在当前的应用版本2.0.0.M1
中,构建的应用将以关系数据库为基础,采用JPA
标准对数据持久化,并大量使用了Spring
框架中的依赖注入和事务管理,以及JUnit
测试,利用Maven
进行项目的配置,以Spring MVC
为基础将JSP
作为视图。
使用Roo
创建的项目和传统项目相比,Roo
创建的项目去掉了一些不必要的的抽象层。大多数的Java
企业应用都包含DAO
层、domain
层和controller
层。而在一个使用Roo
构建的典型项目中,你将只会用到entity
层(这有点类似于domain
层,但似乎又结合了DAO
层和Services
层)和web
层。当然,如果你的应用的确需要,你可以添加一个services
层,但是,几乎是不会添加DAO
层的。
2. 关键技术 Critical Technologies
2.1. AscpectJ
2.2. Spring
3. 实体层 Entity Layer
大家在使用Roo
时,都应该遵循如下的几个步骤:
3.1. 初始化项目
3.2. 安装持久化工具
3.3. 创建实体和字段
3.1. 初始化项目
> mkdir demo
> cd demo
roo> project setup --topLevelPackage cn.edu.cqupt.demo
3.2. 安装持久化工具
roo> jpa setup --database MYSQL --provider HIBERNATE
roo> database properties set --key database.url --value jdbc:mysql://localhost:3306/cblog?useUnicode=true&characterEncoding=utf-8
roo> database properties set --key database.username --value root
roo> database properties set --key database.password --value root
打印信息(仅列出一部分信息)
Updated SPRING_CONFIG_ROOT\applicationContext.xml
Created SRC_MAIN_RESOURCES\META-INF\persistence.xml
Updated SPRING_CONFIG_ROOT\database.properties
路径常量:
SPRING_CONFIG_ROOT
-> src\main\resources\META-INF\spring
SRC_MAIN_RESOURCES
-> src\main\resources\META-INF
jpa setup
命令指定了使用MYSQL
数据库、HIBERNATE
映射工具。database properties
命令修改的是database.properties
文件中的信息。数据源的相关配置是在applicationContext.xml
文件中,使用的是dbcp
。HIBERNATE
的配置是在persistence.xml
文件中。
3.3. 创建实体
entity jpa --class ~.domain.Admin
打印信息(部分)
Created SRC_MAIN_JAVA\cn\edu\cqupt\demo\domain\Admin.java
Created SRC_MAIN_JAVA\cn\edu\cqupt\demo\domain\Admin_Roo_Configurable.aj
Created SRC_MAIN_JAVA\cn\edu\cqupt\demo\domain\Admin_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA\cn\edu\cqupt\demo\domain\Admin_Roo_Jpa_ActiveRecord.aj
Created SRC_MAIN_JAVA\cn\edu\cqupt\demo\domain\Admin_Roo_ToString.aj
路径常量:
SRC_MAIN_JAVA\cn
-> src\main\java
从打印的信息中可以看出,有创建如下几个文件:
- Admin.java
基础类文件
- Admin_Roo_Configurable.aj
不知道干嘛用的
- Admin_Roo_Jpa_Entity.aj
包含实体的version
和id
属性,注意,version
和id
属性是和@RooJpaActiveRecord
有关,而不是@RooJavaBean
- Admin_Roo_Jpa_ActiveRecord.aj
主要是实体的CRUD
操作,对应实体中@RooJpaActiveRecord
注解
- Admin_Roo_ToString.aj
实体的toString()
方法,对应实体类中@RooToString
注解
The generated method takes care to avoid circular references that are commonly seen in bidirectional relationships involving collections
这个方法(toString)需要注意避免循环引用,尤其是在涉及集合的双向关系时。
3.4. 创建字段
roo> field string --fieldName username --class ~.domain.Admin --notNull --sizeMax 30 --unique
roo> field string --fieldName passwd --class ~.domain.Admin --notNull --sizeMax 60 --sizeMin 6
打印信息