rapid-framework 生成后的SSH三层架构

用了rapid-framework 也有一段时间了,但是一直没认真的去看其中的代码。里面还有很多可研究的东西,这里简单的说下action service dao 层的调用过程,service层和dao层用new对象方式,rapid中采用的是Spring自动注入方式。废话不多说下面看代码!

1.Action 层的调用Service层:

package com.project.zx.action;

import org.junit.Test;

import com.project.zx.bean.User;
import com.project.zx.service.UserManager;

public class UserAction {

        //rapid 中采用Spring自动注入方式这里只是简单演示
	private UserManager userManager = new UserManager();
	private User user = new User();
	
	public String save(){
		user.setId(1L);
		user.setName("myName");
		user.setSex("男");
		userManager.svae(user);//保存User
		return "";
	}
	
	public static void main(String[] args) {
		new UserAction().save();
	}
	
}




2.Service 层的UserManager继承BaseManager,实现BaseManager中getEntityDao抽象方法,返回 UserDao实例,实际上Action调用的是BaseManager中的方法。

package com.project.zx.service;

import base.BaseManager;
import base.EntityDao;

import com.project.zx.bean.User;
import com.project.zx.dao.UserDao;

public class UserManager extends BaseManager<User, Long>{

	private UserDao userDao = new UserDao();
	
	@Override
	protected EntityDao getEntityDao() {
		[color=red]return this.userDao;[/color]
	}
	
}



3.抽象类 BaseManager 这里的主要讲getEntityDao抽象方法,getEntityDao抽象方法经过Usermanager实现已经是一个具体的Dao,下面看代码:


package base;

import java.io.Serializable;

public abstract class BaseManager <E,PK extends Serializable>{

	protected abstract EntityDao getEntityDao();
	
	public E getById(PK id){
		System.out.println("1  经过BaseManager : getById");
		return (E)getEntityDao().getById(id);
	}
	
	public void svae(E entity){
		System.out.println("1  经过BaseManager : save");
		getEntityDao().save(entity);
	}
}




4.UserDao 继承 BaseHibernateDao(抽象类增删改具体的实现) 实现 EntityDao接口,UserDao中的getEntityClass抽象方法返回具体的Class 而这Class将在BaseHibernateDao使用,代码就一个方法很简单。

package com.project.zx.dao;

import java.io.Serializable;

import com.project.zx.bean.User;

import base.BaseHibernateDao;

public class UserDao extends BaseHibernateDao<User, Long>{

	@Override
	public Class getEntityClass() {
		return User.class;
	}	
}



5.下面来看BaseHibernateDao抽象类,该类实现EntityDao接口并为之实现。

package base;
import java.io.*;
public abstract class BaseHibernateDao<E,PK extends Serializable> implements EntityDao<E,PK>{

	//模拟HibernateTemplate
	public final HibernateTemplate getHibernateTemplate(){
		HibernateTemplate hibernateTemplate = new HibernateTemplate();
		return hibernateTemplate;
	}
	
	public abstract Class getEntityClass();
	
	public Object getById(PK id) {
		return this.getHibernateTemplate().get(this.getEntityClass(), id);
	}

	public void save(E entity) {
		this.getHibernateTemplate().save(entity);
	}

}



6.贴上EntityDao接口:

package base;

import java.io.Serializable;

public interface EntityDao <E,PK extends Serializable>{
	
	public void save(E entity);
	
	public Object getById(PK id);
}



7.HibernateTemplate 模拟Hibernate中的HibernateTemplate

package base;
import java.io.Serializable;

import com.project.zx.bean.User;


public class HibernateTemplate {

	public Object get(Class entityClass , Serializable id){
		return 1;
	}
	
	public void save(final Object entityClass){
		System.out.println("2 保存"+entityClass.toString()+".....");
		User u = (User)entityClass;
		u.getId();
		u.getName();
		u.getSex();
		System.out.println("3 保存成功   ID: "+u.getId()+"  Name: "+u.getName()+"  Sex : "+u.getSex());
	}
}



好了讲完了,下面附上代码。

学无止境,希望老鸟们给些好的建议!

你可能感兴趣的:(java,DAO,spring,Hibernate,ssh)