没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
36页
Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射工具;在容器方面,它采用了Spring Framework。用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。 AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。
资源推荐
资源详情
资源评论
AppFuse2.0 学习笔记
第一章 简介
Appfuse 是 Matt Raible 开发的一个指导性的入门级 J2EE 框架,它对如何集成流行的
Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF 等基础框架给出了示范。
在 持 久 层 , AppFuse 采 用 了 Hibernate O/R 映 射 工 具; 在 容 器 方 面, 它 采 用 了 Spring
Framework。用户可以自由选择 Struts、Spring/MVC,Webwork,Taperstry、JSF 这几个
web 框架。采用 TDD 的开发方式,使用 JUnit 测试各层,甚至测试 jsp 输出的 w/o 错误。
为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置 Tomcat、测试部
署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。
AppFuse2.0 重构了 AppFuse1.0,转到 Maven2 和 Jdk1.5。采用 Maven2 的主要原因是:
依赖下载
更容易维护
对最终用户易于更新
AppFuse2.0 的新特性:
集成 Maven2.0
更新 Webwork 到 Struts2
JDK1.5,Annotation,JSP2.0,J2EE1.4
JPA 支持
生成 CRUD 终端
完全 Eclipse、IDEA、NetBeans 支持
快速开始和使 Maven Jetty 插件无部署
多种测试
第二章 快速入门
二.1 创建工程
下载并安装 jdk5,AppFuse 最佳工作是 java 5,但是 Maven 在 multi-module 工程有
点问题。
下载并安装 MySql5.x
安装一个本地的 SMTP 邮件服务,或者修改 mail.properties(src/main/resources)的
Host 名称。因为默认为”localhost”
下载并安装 Maven2.0.4(参考 http://maven.apache.org/download.html#installation)
AppFuse 带来了一些不同风格,对于用户最佳和简单的体验,我们创建了一些不
同 的 archetypes( 又 称 为 初 始 工 程 ) 。 目 前 有 二 类 AppFuse 原 型 : basic 和
modular.。basic 原型最理想的选择是创建 web application 工程;modular 原型,包
括”core”和”web”二个模块,最理想的是创建支持可重用的工程。下面列表给出产
生不同工程的列表,你可能通过改变 groupId 定义你自己的包名和改变 artifactId
定义你的工程名称:
Archetyp
e
Command
JSF Basic
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-basic-jsf -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Spring
MVC
Basic
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-basic-spring -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Struts2
Basic
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-basic-struts -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Tapestry
Basic
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-basic-tapestry -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
JSF
Modular
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-modular-jsf -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Spring
MVC
Modular
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-modular-spring -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Struts2
Modular
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-modular-struts -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
Tapestry
Modular
mvn archetype:create -DarchetypeGroupId=org.appfuse -
DarchetypeArtifactId=appfuse-modular-tapestry -
DremoteRepositories=http://static.appfuse.org/repository -
DarchetypeVersion=1.0-m3 -DgroupId=com.mycompany -DartifactId=myproject
如果你已经安装有 MySQL5.x 的数据库且 root 用户的密码为空,那么你可以立即运行
AppFuse。
MySql 安全:MySql 的 root 用户无密码设置不是安全的。一旦你的数据库被创建,你将修
改 root 密码。AppFuse 使用 root 用户和空密码,改变这些值,你可以修改你工程下的
pom.xml(根路径)的<jdbc.username>和<jdbc.password>属性。
二.2 配置
设置如下环境变量
HOME = c:\Source
SDKS_HOME = c:\SDKs
TOOLS_HOME = c:\Tools
JAVA_HOME = %SDKS_HOME%\jdk1.5.0_10
MAVEN_HOME = %TOOLS_HOME%\maven-2.0.5
MYSQL_HOME = %TOOLS_HOME%\mysql
扩展 PATH: %JAVA_HOME%\bin;%MAVEN_HOME%\bin;%MYSQL_HOME%\bin
二.3 运行
现在,运行 appFuse 是简单的,一旦原型工程被创建,Maven 将分别采用 Hibernate3 和
dbunit 插件来创建和组装你的数据库。你必须使用 Maven 去运行 Jetty 容器和查看你的工程。
在工程路径下,运行 mvn integration-test 下载 jar 包,Tomcat 和集成测试工程。
在工程路径下,运行 mvn jetty:run-war。Maven 将启动 Jetty,你可能在浏览器查看
http://localhost:8080。如果你采用的是 modular 原型,你必须在工程路径下的 web
路径中运行 mvn jetty:run-war。
运 行 mvn war:inplace , 从 appFuse 覆 盖 文 件 。 这 将 获 取 到 依 赖 的 war 包
到 src/main/webapp 下,在这里,你可以修改你的核心内容。当你已经扩展了你的
资源树,你可以运行 mvn jetty:run。这将允许你方便地修改文件和重载他们到
Jetty。你仅会碰到的问题是在你的工程中终止“exploded appfuse”,不能很好的预示
更新。我们建议在运行 mvn war:inplace 之前,把你的工程 check in 到配置库中。
二.4 开发应用
可 以 使 用 Eclipse,IDEA 或 者 NetBeans 来 开 发 , 对 于 Eclipse , 运 行 mvn install
eclipse:eclipse 来产生工程文件,对于 IDEA 你可以使用 mvn idea:idea。
第三章 开发指南
三.1 Persistence—持久层
三.1.1 概述
本节将介绍如何创建一个新数据库表和生成访问该表的 Java 代码。
你将创建一个对象,并从数据库生成一些持久层的操作(Save/retrieve/delete)。在
Java 语法中,此对象被称为 POJO。此对象是数据库表的基本表示。如果使用 AppFuse
1.x,你将典型地创建一个 DAO 和 JUnit 测试此 POJO 的打操作。然而,使用 AppFuse2.x,
将生成一个基本的 DAO 和 Manager,将对你所有的对象进行 CRUD。此时,你仅需要创建
DAO 当你想自定义行为或者如果你需要 finders.
AppFuse 使用 Hibernate 作为默认的持久层。Hibernate 是一个对象关系(O/R)框架,
允 许 你 的 Java 对 象 与 数 据 库 表 关 联 。 他 允 许 你 非 常 方 便 地 执 行 对 象 的
CRUD(Create,Retrieve,Update,Delete)。
注:iBatis 和 JPA:你同样也可以选择 iBATIS 或者 JPA 作为你的持久层框架。
三.1.2 创建一个新的 POJO 和增加 JPA Annotations
首先,你需要创建一个持久层对象。创建一个“Person”对象(在 src/main/java/**/model/
路 径 下 ) , 他 的 属 性 有 id,firstName,lastName 。 建 议 采 用 约 定 的 包 命 名 法 。
如:”org.appfuse.tutorial”作为根包名。
package org.appfuse.tutorial.model;
import org.appfuse.model.BaseObject;
public class Person extends BaseObject {
private Long id;
private String firstName;
private String lastName;
/*
Generate your getters and setters using your favorite IDE:
In Eclipse:
Right-click -> Source -> Generate Getters and Setters
*/
}
注:继承 BaseObject 是可选的,但建议强制创建 toString(),equals 和 hashCode 方法。如
果 你 计 划 把 这 个 对 象 放 到 用 户 的 会 话 中 , 或 者 暴 露 在 web Service , 最 好 实 现
java.io.Serializable。
你可以使用 Commonclipse
生成 toString(),equals(),和 hashCode()方法,,更多使用此工
具的信息参考 Lee Grey's site。
现在,你已经创建好了 POJO,你需要增加 JPA annotations。这些注释被 Hibernate 用来
映射对象与表和属性与列。
首先,加入@Entity 注释来表示这个对象关联的数据库表。”name”可选,如果没有指定,
则直接使用类名。确保你已经从 javax.persistence.*导入注释,而不是从 Hibernate。
@Entity(name=”person”)
public class Person extends BaseObject{
同时,你需要增加@Id 注释去表示主键。@GeneratedValue 注释同时指定主键生成的策
略。
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public Long getId(){
return this.id;
}
对于字段,不须注释。除下述二种情况外:
1、 从持久层扩展(如使用@Transient)
2、 改变列名或者其它属性。改变列名,使用@Column 注释
@Column(name="first_name", length=50)
public String getFirstName() {
return this.firstName;
}
...
@Column(name="last_name", length=50)
public String getLastName() {
return this.lastName;
}
剩余35页未读,继续阅读
资源评论
- changhai9112013-04-23这份资料很不错
zhuhao081
- 粉丝: 4
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功