好勤 的个人资料天高云淡的世界照片日志列表 工具 帮助

日志


6月25日

开源框架Appfuse初探

Appfuse是一个开源的J2EE开发框架,可以使用它对Spring、Hibernate、Struts、Tapestry、Ant、Xdoclet、Junit、Log4j等进行集成,以简洁快速地构建项目开发框架。Appfuse是一个项目骨架,类似于通过向导创建新Web项目时IDE所创建的东西。Appfuse可以支持Hibernate或iBATIS作为持久性框架。对于Web框架来说,我们可以使用JSF(JavaServer Faces)、Spring MVC、Struts、Tapestry 或 WebWork。在开发应用时Appfuse与楼上3.0的代码机有些类似,对于单表的增删查改维护,可以用Ant直接生成对应的JSP和Java代码,然后可以在此基础上进行修改以实现自己的业务功能,方便了应用的开发。

下面一个关于员工信息管理的例子演示了如何使用Appfuse快速构建J2EE应用:

1、 搭建开发环境:
下载JDK、Tomcat、Eclipse、MySQL、Appfuse、Ant等,配置Path、JAVA_HOME、CATALINA_HOME、ANT_HOME等环境变量。

2、建立项目并创建数据库
在Appfuse目录下运行ant new新建项目,将项目导入Eclipse。在项目build.properties文件中配置数据库连接,在\\metadata\sql\mysql-create.sql中配置数据库创建语句。运行ant setup test-all。此命令中“setup”完成了很多“设置”工作:创建数据库、构建dao和serive类、加载样本数据、创建war文件并部署到Tomcat。“test-all”运行所有的测试用例:对dao、service、页面的测试。启动Tomcat访问应用,会发现只运行了一次Ant脚本,但是系统已经拥有“用户管理”、“邮件”、“文件上传”等功能,这就是Appfuse开箱即用、快速开发的优势。

3、创建employee表并使用appgen自动生成代码
AppGen可以生成绝大部分我们需要的代码,比如dao类,service类,菜单、增删改的web 页面、配置文件、样本数据,等等。AppGen利用XDoclet生成代码,因此可以在extras/appgen/src看到很多.xdt文件,这些就是XDoclet的模版定义文件。如果希望自己编写dao和service类,就运行“install”这个target,否则就使用“install-detailed”。
在MySQL中创建运行install-detailed,并手工将Employee.hbm.xml添加到配置文件applicationContext-hibernate.xml中。运行ant deploy,打开页面,员工维护功能已经添加到页面中了。

4、根据项目需求调整代码
语言国际化:在资源文件里定义国际化文字,Appfuse会在Ant脚本运行的时候根据本地区域和语言设置,自动用native2ascii进行编码转换。

页面布局和样式:Appfuse 使用CSS框架来定义页面布局和样式,文件存放在\\web\styles中,我们可以仿照样例格式,在其中定义自己的主题文件。系统使用的主题由web\WEB-INF\web.xml中的“theme”参数指定。

系统安全:Appfuse使用Acegi进行安全管理。Acegi的配置信息位于\\web\WEB-INF\classes\security.xml。Acegi是被集成到Spring当中的,因此这个文件是Spring 的配置文件格式。在\\web\WEB-INF\web.xml中,该文件被指定在应用启动前会被加载。

事务控制:Appfuse利用Spring进行事务管理。Spring可以以声明的方式,对方法进行事务控制,并且可以根据实际的需要,调整控制粒度。“声明方式”的好处在于:核心代码只需要关注业务逻辑,而将事务控制完全交由配置文件管理,一方面是核心代码简洁清晰,另一方面也便于进行集中配置管理。Spring 提供了大量的参数和选项使开发者能够灵活地管理事务。

日志:Appfuse集成了Log4j进行日志管理,log4j.properties位于\\web\WEB-INF\classes目录下。Appfuse已经在绝大多数基类中加入了如下用于输出日志的成员变量:
protected final Log log = LogFactory.getLog(getClass());
因此,开发者只需要在自己的代码中调用log方法就可以了,例如:“log.debug("entered 'update' method");”。

6月20日

Hibernate入门及例程

Hibernate本身是个独立的框架,它不需要任何web server或application server的支持,本文的目的是演示一下Hibernate的安装过程及其最基本的功能。
 
1、配置环境
 
下载安装Java SDK、Hibernate包、Ant包、和对应的JDBC Driver,配置环境变量PATH及JAVA_HOME、ANT_HOME,建立项目目录结构。
 
2、创建数据库和表(如mysql中)
 
create database hibernate_test; use hibernate_test;
CREATE TABLE CUSTOMER
(
    CID INTEGER NOT NULL PRIMARY KEY,
    USERNAME VARCHAR(12) NOT NULL,
    PASSWORD VARCHAR(12)
);
show tables; select * from customer;
 
3、编写Customer的bean类和Test类:
 
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
    public static void main(String[] args) {
        try {
            SessionFactory sf = new Configuration().configure().buildSessionFactory();
            Session session = sf.openSession();
            Transaction tx = session.beginTransaction();
            for (int i = 0; i < 200; i++) {
                Customer customer = new Customer();
                customer.setUsername("customer" + i);
                customer.setPassword("customer");
                session.save(customer);
            }
            tx.commit();
            session.close();
        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }
}
 
4、配置Hibernate映射文件
 
因为这里只有一个Class和一个Table,只需建立一个映射文件Customer.hbm.xml,来对应Customer类和CUSTOMER表之间的关系。
 
5、配置Ant build.xml文件
 
不必须了解build.xml的细节,Ant也不是Hibernate所必须的。但使用Ant可以简化一些任务,比如编译、复制、运行等。
 
6、配置Hibernate描述文件
 
可以是一个xml或properties文件,其中最重要的是定义数据库的连接,比如在连接mysql使用的hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>   
    <session-factory name="java:/hibernate/HibernateFactory">       
        <property name="show_sql">true</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.url">
            jdbc:mysql:///hibernate_test
        </property>
        <property name="connection.username">
            root
        </property>
        <property name="connection.password">
            admin
        </property>
        <property name="dialect">
            net.sf.hibernate.dialect.MySQLDialect
        </property>       
        <mapping resource="Customer.hbm.xml"/>       
    </session-factory>   
</hibernate-configuration>
 
7、运行
 
使用控制台到项目目录下,输入ant run编译并运行程序。
 
8、总结
 
到hibernate_test数据库看一下,没有写任何JDBC及SQL代码,但是在customer表里已经新增了200条记录。以后如需更换数据库,只需改变hibernate.cfg.xml描述文件里相应的值即可。