新版本兼容旧版本之架构设计示例
2016-10-21 01:42
148 查看
1.背景
昨天工作,在数据库持久化方面遇到点疑惑,然后打开jar包研究源码,发现了点有趣的设计,这个框架有1.0版本内容,有2.0版本内容,“除非维护1.0版本老代码,不推荐使用1.0版本,即2.0版本兼容1.0版本”。
2.设计图
此处欠uml图一张。。。
3.源码示例
数据库持久化,最基础的增删改查。
2.0版本通过PersistenceService来操作所有方法,1.0版本则通过单一的类操作某个方法即插入操作与删除操作不在一块儿。代码示例如下:
PersistenceService.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
public interface PersistenceService {
public int executeInsert(String sqlId, Map<String, Object> params);
public int executeInsertBatch(String sqlId, Map<String, Object> params);
public int executeDelete(String sqlId, Map<String, Object> params);
public int executeDeleteBatch(String sqlId, Map<String, Object> params);
public int executeUpdate(String sqlId, Map<String, Object> params);
public int executeUpdateBatch(String sqlId, Map<String, Object> params);
public DataResult executeQuery(String sqlId, Map<String, Object> params);
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceImpl.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
import com.persistence.oldPackage.PersistenceServiceDelete;
import com.persistence.oldPackage.PersistenceServiceDeleteImpl;
import com.persistence.oldPackage.PersistenceServiceInsert;
import com.persistence.oldPackage.PersistenceServiceInsertImpl;
import com.persistence.oldPackage.PersistenceServiceQuery;
import com.persistence.oldPackage.PersistenceServiceQueryImpl;
import com.persistence.oldPackage.PersistenceServiceUpdate;
import com.persistence.oldPackage.PersistenceServiceUpdateImpl;
public class PersistenceServiceImpl implements PersistenceService {
private PersistenceServiceInsert insert;
private PersistenceServiceDelete delete;
private PersistenceServiceUpdate update;
private PersistenceServiceQuery query;
public PersistenceServiceImpl() {
insert = new PersistenceServiceInsertImpl();
delete = new PersistenceServiceDeleteImpl();
update = new PersistenceServiceUpdateImpl();
query = new PersistenceServiceQueryImpl();
}
public int executeInsert(String sqlId, Map<String, Object> params) {
return insert.executeInsert(sqlId, params);
}
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return insert.executeInsertBatch(sqlId, params);
}
public int executeDelete(String sqlId, Map<String, Object> params) {
return delete.executeDelete(sqlId, params);
}
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return delete.executeDeleteBatch(sqlId, params);
}
public int executeUpdate(String sqlId, Map<String, Object> params) {
return update.executeUpdate(sqlId, params);
}
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return update.executeUpdateBatch(sqlId, params);
}
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return query.executeQuery(sqlId, params);
}
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return query.executeQueryBatch(sqlId, params);
}
}
PersistenceServiceParent.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
public class PersistenceServiceParent {
public int executeInsert(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeDelete(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeUpdate(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}
}
下边类是1.0版本的:
PersistenceServiceDelete.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceDelete {
public int executeDelete(String sqlId, Map<String, Object> params);
public int executeDeleteBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceDeleteImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceDeleteImpl extends PersistenceServiceParent implements PersistenceServiceDelete {
@Override
public int executeDelete(String sqlId, Map<String, Object> params) {
return super.executeDelete(sqlId, params);
}
@Override
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return super.executeDeleteBatch(sqlId, params);
}
}
PersistenceServiceInsert.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceInsert {
public int executeInsert(String sqlId, Map<String, Object> params);
public int executeInsertBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceInsertImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceInsertImpl extends PersistenceServiceParent implements PersistenceServiceInsert {
@Override
public int executeInsert(String sqlId, Map<String, Object> params) {
return super.executeInsert(sqlId, params);
}
@Override
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return super.executeInsertBatch(sqlId, params);
}
}
PersistenceServiceQuery.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.DataResult;
public interface PersistenceServiceQuery {
public DataResult executeQuery(String sqlId,Map<String, Object> params);
public DataResult executeQueryBatch(String sqlId,Map<String, Object> params);
}
PersistenceServiceQueryImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.DataResult;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceQueryImpl extends PersistenceServiceParent implements PersistenceServiceQuery {
@Override
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return super.executeQuery(sqlId, params);
}
@Override
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return super.executeQueryBatch(sqlId, params);
}
}
PersistenceUpdate.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceUpdate {
public int executeUpdate(String sqlId, Map<String, Object> params);
public int executeUpdateBatch(String sqlId, Map<String, Object> params);
}
PersistenceUpdateImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceUpdateImpl extends PersistenceServiceParent implements PersistenceServiceUpdate {
@Override
public int executeUpdate(String sqlId, Map<String, Object> params) {
return super.executeUpdate(sqlId, params);
}
@Override
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return super.executeUpdateBatch(sqlId, params);
}
}
其实可以发现,1.0版本已经被2.0版本“架空”,而2.0版本的PersistenceService接口及其实现类也没有执行真正的操作。主要是学习了这个模块的架构设计
昨天工作,在数据库持久化方面遇到点疑惑,然后打开jar包研究源码,发现了点有趣的设计,这个框架有1.0版本内容,有2.0版本内容,“除非维护1.0版本老代码,不推荐使用1.0版本,即2.0版本兼容1.0版本”。
2.设计图
此处欠uml图一张。。。
3.源码示例
数据库持久化,最基础的增删改查。
2.0版本通过PersistenceService来操作所有方法,1.0版本则通过单一的类操作某个方法即插入操作与删除操作不在一块儿。代码示例如下:
PersistenceService.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
public interface PersistenceService {
public int executeInsert(String sqlId, Map<String, Object> params);
public int executeInsertBatch(String sqlId, Map<String, Object> params);
public int executeDelete(String sqlId, Map<String, Object> params);
public int executeDeleteBatch(String sqlId, Map<String, Object> params);
public int executeUpdate(String sqlId, Map<String, Object> params);
public int executeUpdateBatch(String sqlId, Map<String, Object> params);
public DataResult executeQuery(String sqlId, Map<String, Object> params);
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceImpl.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
import com.persistence.oldPackage.PersistenceServiceDelete;
import com.persistence.oldPackage.PersistenceServiceDeleteImpl;
import com.persistence.oldPackage.PersistenceServiceInsert;
import com.persistence.oldPackage.PersistenceServiceInsertImpl;
import com.persistence.oldPackage.PersistenceServiceQuery;
import com.persistence.oldPackage.PersistenceServiceQueryImpl;
import com.persistence.oldPackage.PersistenceServiceUpdate;
import com.persistence.oldPackage.PersistenceServiceUpdateImpl;
public class PersistenceServiceImpl implements PersistenceService {
private PersistenceServiceInsert insert;
private PersistenceServiceDelete delete;
private PersistenceServiceUpdate update;
private PersistenceServiceQuery query;
public PersistenceServiceImpl() {
insert = new PersistenceServiceInsertImpl();
delete = new PersistenceServiceDeleteImpl();
update = new PersistenceServiceUpdateImpl();
query = new PersistenceServiceQueryImpl();
}
public int executeInsert(String sqlId, Map<String, Object> params) {
return insert.executeInsert(sqlId, params);
}
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return insert.executeInsertBatch(sqlId, params);
}
public int executeDelete(String sqlId, Map<String, Object> params) {
return delete.executeDelete(sqlId, params);
}
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return delete.executeDeleteBatch(sqlId, params);
}
public int executeUpdate(String sqlId, Map<String, Object> params) {
return update.executeUpdate(sqlId, params);
}
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return update.executeUpdateBatch(sqlId, params);
}
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return query.executeQuery(sqlId, params);
}
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return query.executeQueryBatch(sqlId, params);
}
}
PersistenceServiceParent.java
package com.persistence.newPackage;
import java.util.Map;
import com.persistence.DataResult;
public class PersistenceServiceParent {
public int executeInsert(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeDelete(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeUpdate(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}
}
下边类是1.0版本的:
PersistenceServiceDelete.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceDelete {
public int executeDelete(String sqlId, Map<String, Object> params);
public int executeDeleteBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceDeleteImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceDeleteImpl extends PersistenceServiceParent implements PersistenceServiceDelete {
@Override
public int executeDelete(String sqlId, Map<String, Object> params) {
return super.executeDelete(sqlId, params);
}
@Override
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return super.executeDeleteBatch(sqlId, params);
}
}
PersistenceServiceInsert.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceInsert {
public int executeInsert(String sqlId, Map<String, Object> params);
public int executeInsertBatch(String sqlId, Map<String, Object> params);
}
PersistenceServiceInsertImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceInsertImpl extends PersistenceServiceParent implements PersistenceServiceInsert {
@Override
public int executeInsert(String sqlId, Map<String, Object> params) {
return super.executeInsert(sqlId, params);
}
@Override
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return super.executeInsertBatch(sqlId, params);
}
}
PersistenceServiceQuery.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.DataResult;
public interface PersistenceServiceQuery {
public DataResult executeQuery(String sqlId,Map<String, Object> params);
public DataResult executeQueryBatch(String sqlId,Map<String, Object> params);
}
PersistenceServiceQueryImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.DataResult;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceQueryImpl extends PersistenceServiceParent implements PersistenceServiceQuery {
@Override
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return super.executeQuery(sqlId, params);
}
@Override
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return super.executeQueryBatch(sqlId, params);
}
}
PersistenceUpdate.java
package com.persistence.oldPackage;
import java.util.Map;
public interface PersistenceServiceUpdate {
public int executeUpdate(String sqlId, Map<String, Object> params);
public int executeUpdateBatch(String sqlId, Map<String, Object> params);
}
PersistenceUpdateImpl.java
package com.persistence.oldPackage;
import java.util.Map;
import com.persistence.newPackage.PersistenceServiceParent;
public class PersistenceServiceUpdateImpl extends PersistenceServiceParent implements PersistenceServiceUpdate {
@Override
public int executeUpdate(String sqlId, Map<String, Object> params) {
return super.executeUpdate(sqlId, params);
}
@Override
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return super.executeUpdateBatch(sqlId, params);
}
}
其实可以发现,1.0版本已经被2.0版本“架空”,而2.0版本的PersistenceService接口及其实现类也没有执行真正的操作。主要是学习了这个模块的架构设计
相关文章推荐
- PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据
- 0907期《程序员》架构栏目文章《关于大规模系统缓存设计的一些考虑(上)》示例代码
- 互联网架构设计之Redis篇-【Redis Windows版本安装过程】
- 基于Struts2,Spring4,Hibernate4框架的系统架构设计与示例系统实现
- Android APP架构设计——MVP的使用示例
- 网络应用系统---系统设计架构示例
- 【厚积薄发】编程技术项目总结3—定制版本架构设计与实现
- 设计一种100%可用性服务的架构--适用于任何系统(B/S,C/S)[中英文版本]
- TTS包设计架构流程 JAVA版本
- jQuery架构设计与实现(2.1.4版本)
- System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据库架构。
- System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据库架构。
- win2003r2升级成员服务器出错"源林的AD架构与这台计算机上的AD的版本不兼容"
- 编写同时兼容Python2.x与Python3.x版本的代码的几个示例
- 一种解决新版本API完全兼容老版本API的方法
- Active Directory安装向导不能继续,因为林没有为安装Windows 2003 Server准备好,源林的Active Directory架构与这台机器上的Active Directory版本不兼容
- Android多版本兼容示例
- Exchange Server 2013架构设计示例一
- 经历一个工具软件版本架构设计后的总结
- restful架构风格设计准则(六)版本管理