时间: 2004-10-22 12:47:26 标题: [原创]Hibernate_Spring中通用的Service类 注意,以下代码随手写的,只测试了一小部份: Service类要通用,本身就有点难.这一层跟business密切相关. 不过在数据库时代,什么business都少不了几个数据库的操作,那就先把这几个操作放到base的Service中来.当然,因为通用,为了让service知道你操作什么域,也少不了要指定一下,所以增加了个initBaseService(Class service)方法.如果一个service中有多个表要操少,就不断增加initXXXXXService(Class service)方法.建议service做成粗粒度的.就是应该包含多个功能相近的表的DAO操作. 具体开发软件时,少不得扩充这个Service类,在这里如果用"适配器"设计模试来做,效果可能要好. java代码: package common. spring. service; import java. util. List; import java. util. Iterator; import common. spring. dao. BaseDAOImpl; import common. spring. dao. IBaseDAO; import net. sf. hibernate. HibernateException; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 段洪杰 * @version 1.0 */ public class BaseServiceSpringImpl implements IBaseService { private IBaseDAO baseDAO; public BaseServiceSpringImpl ( ) { super ( ); } /** * 增加信息 object * @param object Object */ public void setObject ( Object object ) throws BaseServiceException { try { baseDAO. setObject (object ); } catch ( Exception ex ) { throw new BaseServiceException ("存object信息时出错! " + ex. toString ( ) ); } } /** * 删除信息 object * @param id String */ public void removeObjectById ( String id ) throws BaseServiceException { try { Object object = baseDAO. getObjectById (id ); baseDAO. removeObject (object ); } catch ( Exception ex ) { throw new BaseServiceException ("删除object时出错! " + ex. toString ( ) ); } } /** * 取出信息 object * @param id String */ public Object getObjectById ( String id ) throws BaseServiceException { Object object= null; try { object = baseDAO. getObjectById (id ); } catch ( Exception ex ) { throw new BaseServiceException ("根据ID取出信息object时出错! " + ex. toString ( ) ); } return object; } /** * 修改信息 object * @param object Object */ public void modifyObject ( Object object ) throws BaseServiceException { try { baseDAO. modifyObject (object ); } catch ( Exception ex ) { throw new BaseServiceException ("修改信息object时出错! " + ex. toString ( ) ); } } /** * 取所有信息集合 * @return Iterator * @param position int, length int */ public Iterator getObjects ( int position, int length ) throws BaseServiceException { Iterator objects = null; try { objects = baseDAO. getObjects (position, length ); } catch ( Exception ex ) { throw new BaseServiceException ("取所有信息集合时出错! " + ex. toString ( ) ); } return objects; } /** * 取记录集合总数 * @return int */ public int getObjectsCount ( ) throws BaseServiceException { int count = 0; try { count = baseDAO. getObjectsCount ( ); } catch ( Exception ex ) { throw new BaseServiceException (" 取指定版块记录集合总数时出错! " + ex. toString ( ) ); } return count; } /** * 取指定版块记录集合 * @return Iterator * @param boardId String, position int, length int */ public Iterator getObjects ( String boardId, int position, int length ) throws BaseServiceException { Iterator objects = null; try { objects = baseDAO. getObjects (boardId, position, length ); } catch ( Exception ex ) { throw new BaseServiceException ("取特定所有信息集合时出错! " + ex. toString ( ) ); } return objects; } /** * 取指定版块记录集合总数 * @return int * @param String boardId */ public int getObjectsCountByBoard ( String boardId ) throws BaseServiceException { int count = 0; try { count = baseDAO. getObjectsCountByBoard (boardId ); } catch ( Exception ex ) { throw new BaseServiceException (" 取指定版块记录集合总数时出错! " + ex. toString ( ) ); } return count; } /** * * @return IBaseDAO */ public IBaseDAO getBaseDAO ( ) { return baseDAO; } /** * * @param boardTreeDAO IInfoTreeDAO */ public void setBaseDAO (IBaseDAO baseDAO ) { this. baseDAO = baseDAO; } /** * 设置一个特点的service域 * @param service Class */ public void initBaseService ( Class service ) { baseDAO. init (service ); } } 测试文件 java代码: package common. spring. service; import junit. framework.*; import org. springframework. context. ApplicationContext; import org. springframework. context. support. FileSystemXmlApplicationContext; import oa. pojo.*; /** * <p>Title: OA1.0</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2004</p> * * <p>Company: </p> * * @author 段洪杰 * @version 1.0 */ public class TestBaseService extends TestCase { private IBaseService baseService = null; private ApplicationContext ac; protected void setUp ( ) throws Exception { super. setUp ( ); ac = new FileSystemXmlApplicationContext ("F:/jbproject/oa_ 1_ 0/web/WEB-INF/applicationContext-hibernate. xml" ); baseService = (IBaseService ) ac. getBean ("baseService" ); } protected void tearDown ( ) throws Exception { super. tearDown ( ); } /** * 录入测试 * @throws Exception */ /* public void testSetObject() throws Exception { Cart c=new Cart(); c.setTitle("input service1111"); baseService.setObject(c); // assertEquals("return value", expectedReturn, actualReturn); }*/ /** * 查询总记录数测试 * @throws Exception */ public void testgetObjectCount ( ) throws Exception { Cart c= new Cart ( ); baseService. initBaseService (c. getClass ( ) ); int count =baseService. getObjectsCount ( ); assertEquals (" return value", " 22", count+"" ); User u= new User ( ); baseService. initBaseService (u. getClass ( ) ); int count1 =baseService. getObjectsCount ( ); assertEquals (" return value", " 13", count1+"" ); } }