SSH笔记三 反向生成DAO 优化开发目录
感谢昨天有人提醒用maven来管理所有依赖,今天稍微看了一下,终于把所有依赖交予了maven。也算对maven的掌握更进了一步。
SSH笔记目录
SSH笔记一 用maven构建项目(源码下载ssim1.rar)
SSH笔记二 整合hibernate和spring(源码下载ssim2-maven.rar)
SSH笔记三 反向生成DAO 优化开发目录(源码下载ssim3-dao.rar)
SSH笔记四 整合struts2(源码下载ssim4-struts2.rar)
SSH笔记五 整合Tiles2(源码下载ssim5-tiles2.rar)
今天的任务是——反向生成DAO并优化开发目录。完成的效果如下(左边为包视图、右边为文件视图):
1. 反向生成DAO并测试(上次我们已经在ssimdb中建立了ssim_user表)
1.1 hibernate反向工程,切换到 Database Explorer ,选中ssim_user,右键选择Hibernate Reverse Engineering,弹出如下视图
2.测试DAO并优化开发目录
2.1创建测试父类 SpringTestCase.java,如下
package
net.selitech.ssim.utils;
import junit.framework.TestCase;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTestCase extends TestCase {
private ApplicationContext context;
@Override
protected void setUp(){
context = new ClassPathXmlApplicationContext(getPathName());
}
@Override
protected void tearDown(){
}
protected String getPathName() {
return " application-context.xml " ;
}
protected Object getBean(String name) {
return context.getBean(name);
}
protected ApplicationContext getContext() {
return context;
}
}
2.2 测试SimmUserDAOimport junit.framework.TestCase;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTestCase extends TestCase {
private ApplicationContext context;
@Override
protected void setUp(){
context = new ClassPathXmlApplicationContext(getPathName());
}
@Override
protected void tearDown(){
}
protected String getPathName() {
return " application-context.xml " ;
}
protected Object getBean(String name) {
return context.getBean(name);
}
protected ApplicationContext getContext() {
return context;
}
}
package
net.selitech.net.dao;
import java.util.List;
import net.selitech.ssim.dao.SsimUser;
import net.selitech.ssim.dao.SsimUserDAO;
import net.selitech.ssim.utils.SpringTestCase;
/**
* @author : juxuejian
* @filename: SsimUserDAOTest.java
* @date: Aug 9, 2009 , 9:14:54 PM
* @description :
*/
public class SsimUserDAOTest extends SpringTestCase{
SsimUserDAO ssimUserDAO;
public void setUp(){
super .setUp();
ssimUserDAO = (SsimUserDAO)getBean( " SsimUserDAO " );
}
public void testSsimUserDAO(){
List < SsimUser > list = ssimUserDAO.findAll();
for (SsimUser s:list){
System.out.println(s.getUserEmail() + " \t " + s.getUserRealname());
}
}
}
2.3 如果你正确的输出了邮件地址以及姓名,恭喜你import java.util.List;
import net.selitech.ssim.dao.SsimUser;
import net.selitech.ssim.dao.SsimUserDAO;
import net.selitech.ssim.utils.SpringTestCase;
/**
* @author : juxuejian
* @filename: SsimUserDAOTest.java
* @date: Aug 9, 2009 , 9:14:54 PM
* @description :
*/
public class SsimUserDAOTest extends SpringTestCase{
SsimUserDAO ssimUserDAO;
public void setUp(){
super .setUp();
ssimUserDAO = (SsimUserDAO)getBean( " SsimUserDAO " );
}
public void testSsimUserDAO(){
List < SsimUser > list = ssimUserDAO.findAll();
for (SsimUser s:list){
System.out.println(s.getUserEmail() + " \t " + s.getUserRealname());
}
}
}

接下来我们讲对开发目录进行优化
3. 优化目录以及配置文件
3.1 将数据库链接信息提取为配置文件 ssimdb-config.properties,如下
<?
xml version="1.0" encoding="UTF-8"
?>
< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< import resource ="beans/data-source.xml" />
< import resource ="beans/ssim-dao.xml" />
< bean id ="configurator" class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
< property name ="locations" >
< list >
< value > ssimdb-config.properties </ value >
</ list >
</ property >
</ bean >
</ beans >
3.3 正如你看到的,我们将数据连接信息以及DAO配置分别放在了 data-source.xml和ssim-dao.xml中,那我们就来创建他们。< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< import resource ="beans/data-source.xml" />
< import resource ="beans/ssim-dao.xml" />
< bean id ="configurator" class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
< property name ="locations" >
< list >
< value > ssimdb-config.properties </ value >
</ list >
</ property >
</ bean >
</ beans >
data-source.xml
<?
xml version="1.0" encoding="UTF-8"
?>
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="ssimdb.TxManager"
class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
< property name ="sessionFactory" ref ="ssimdb.session.factory" />
</ bean >
< bean id ="ssimdb.mssql" class ="org.apache.commons.dbcp.BasicDataSource"
destroy-method ="close" >
< property name ="driverClassName" value ="com.mysql.jdbc.Driver" >
</ property >
< property name ="url" value ="${ssimdb.mysql.url}" />
< property name ="username" value ="${ssimdb.mysql.username}" />
< property name ="password" value ="${ssimdb.mysql.password}" />
< property name ="maxIdle" value ="10" />
< property name ="minIdle" value ="2" />
< property name ="maxActive" value ="10" />
</ bean >
< bean id ="ssimdb.session.factory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" >
< ref bean ="ssimdb.mssql" />
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
</ prop >
</ props >
</ property >
< property name ="mappingResources" >
< list >
< value > dao/SsimUser.hbm.xml </ value >
</ list >
</ property >
</ bean >
</ beans >
ssim-dao.xml< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="ssimdb.TxManager"
class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
< property name ="sessionFactory" ref ="ssimdb.session.factory" />
</ bean >
< bean id ="ssimdb.mssql" class ="org.apache.commons.dbcp.BasicDataSource"
destroy-method ="close" >
< property name ="driverClassName" value ="com.mysql.jdbc.Driver" >
</ property >
< property name ="url" value ="${ssimdb.mysql.url}" />
< property name ="username" value ="${ssimdb.mysql.username}" />
< property name ="password" value ="${ssimdb.mysql.password}" />
< property name ="maxIdle" value ="10" />
< property name ="minIdle" value ="2" />
< property name ="maxActive" value ="10" />
</ bean >
< bean id ="ssimdb.session.factory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" >
< ref bean ="ssimdb.mssql" />
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
</ prop >
</ props >
</ property >
< property name ="mappingResources" >
< list >
< value > dao/SsimUser.hbm.xml </ value >
</ list >
</ property >
</ bean >
</ beans >
<?
xml version="1.0" encoding="UTF-8"
?>
< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="SsimUserDAO" class ="net.selitech.ssim.dao.SsimUserDAO" >
< property name ="sessionFactory" >
< ref bean ="ssimdb.session.factory" />
</ property >
</ bean >
</ beans >
< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="SsimUserDAO" class ="net.selitech.ssim.dao.SsimUserDAO" >
< property name ="sessionFactory" >
< ref bean ="ssimdb.session.factory" />
</ property >
</ bean >
</ beans >
到了这里,运行一下SsimUserDAOTest,看看结果,如果顺利通过,该恭喜你完成了我们今天的任务了。明天再接再历

下一次 SSH笔记四 整合struts2