下面这个例子也许对你有所有启发,我用的是Hibernate+Spring,这个是我做实际开发的一个项目的一部分。在Spring注入的时候调用了Hibernate的dao
public com.linkage.lcvas.interfaces.provinceforcsss.OrderResult order(java.lang.String senderID, java.lang.String timeStamp, java.lang.String account, java.lang.String cityCode, java.lang.String actionType, java.lang.String transactionID, java.lang.String productID, java.lang.String passWord) throws java.rmi.RemoteException {
OrderResult result = null;
try {
HttpServlet servlet = (HttpServlet) MessageContext.getCurrentContext().
getProperty(HTTPConstants.MC_HTTP_SERVLET);
ApplicationContext context = WebApplicationContextUtils.
getWebApplicationContext(servlet.getServletContext()); JXVASForCSSBO jxVASForCSSBO = (JXVASForCSSBO) context.getBean(
"jxvasForCSSSBO");
result = jxVASForCSSBO.order(senderID,timeStamp, account, cityCode, actionType, transactionID, productID,passWord/*,startTime,endTime,price*/);
}
catch (Exception e) {
e.printStackTrace();
result.setErrorDescription(e.getMessage());
}
return result; }
public com.linkage.lcvas.interfaces.provinceforcsss.OrderResult order(java.lang.String senderID, java.lang.String timeStamp, java.lang.String account, java.lang.String cityCode, java.lang.String actionType, java.lang.String transactionID, java.lang.String productID, java.lang.String passWord) throws java.rmi.RemoteException {
OrderResult result = null;
try {
HttpServlet servlet = (HttpServlet) MessageContext.getCurrentContext().
getProperty(HTTPConstants.MC_HTTP_SERVLET);
ApplicationContext context = WebApplicationContextUtils.
getWebApplicationContext(servlet.getServletContext()); JXVASForCSSBO jxVASForCSSBO = (JXVASForCSSBO) context.getBean(
"jxvasForCSSSBO");
result = jxVASForCSSBO.order(senderID,timeStamp, account, cityCode, actionType, transactionID, productID,passWord/*,startTime,endTime,price*/);
}
catch (Exception e) {
e.printStackTrace();
result.setErrorDescription(e.getMessage());
}
return result; }
在JXVASForCSSBO 里面调用了DAO
public class JXVASForCSSBOImpl
implements JXVASForCSSBO,BillingConstants {
private JXVASForCSSDAO jxvasForCSSSDAO;
private ProductBO productBO;
private ProductDAO productDAO;
private PlatformTransactionManager transactionManager;
private static final String SALE_CHANLE = "2,3"; //2 – CSSS营业厅销售,3-VNET和CSSS都可以销售
//JXVAS将CSSS完成的产品定义进行登记(6.1.1 产品信息通知接口)
public ProductInformationUploadResult productInformationUpload(
String senderID, String timeStamp, String productID,
String productType, String productName,
String productDesc, com.linkage.lcvas.interfaces.provinceforcsss.ServiceList serviceList,
String startTime, String endTime,
int price, String packageName, int packagePrice) throws Exception {
ProductInformationUploadResult result = new ProductInformationUploadResult();
int rc = Constants.INTERFACE_OK;
//校验产品编号是否已经存在
try {
List _1 = productBO.getProduct(productID);
if (_1.size() > 0) {
rc = Constants.DATA_ERROR;
result.setErrorDescription("传入的产品编号已经存在!");
result.setResult(rc);
return result;
}
}
catch (Exception e) {
rc = Constants.SYSTEM_ERROR;
result.setErrorDescription(Constants.getErrorInfo(rc));
result.setResult(rc);
return result;
}
//_serviceID校验
if (serviceList == null) {
rc = Constants.DATA_ERROR;
System.out.println("传入的产品服务列表为空,传入数据格式不正确!");
result.setErrorDescription("传入的产品服务列表为空,传入数据格式不正确!");
return result;
}
System.out.println("传入的ServiceList对象中的_serviceID []的长度是: " + _serviceID.length);
// 业务处理
String servicePackageID = "";
System.out.println("开始事务");
//-----------------声明事务--------------------//
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = this.transactionManager.getTransaction(def); try {
//1.写服务包表,服务包编号是自动生成的
Servicepackage servicePackage = new Servicepackage();
//服务包名称
servicePackage.setBundlename(packageName);
//服务包周期(单位:月)
servicePackage.setLifecycle(new Long(1));
jxvasForCSSSDAO.insertServicePackage(servicePackage);
//服务包编号的取得
servicePackageID = servicePackage.getBundleid().toString();
//向服务包内容表插入数据
for (int i = 0; i < _serviceID.length; i++) {
Servicepackagedetail servicePackageDetail = new Servicepackagedetail();
ServicepackagedetailKey servicePackageDetailPK = new ServicepackagedetailKey();
servicePackageDetailPK.setBundleid(new Long(servicePackageID));
servicePackageDetailPK.setServiceid(_serviceID[i]);
servicePackageDetailPK.setServiceitemid(_serviceID[i] + "00000000000000000001");
servicePackageDetail.setId(servicePackageDetailPK);
jxvasForCSSSDAO.insertServicePackageDetail(servicePackageDetail);
}
//写产品价格地市表
Productprice productPrice = new Productprice();
ProductpriceKey productPriceKey = new ProductpriceKey();
productPriceKey.setProductid(productID);
//0标识的是江西省中心的代码
productPriceKey.setAreaid("700");
productPriceKey.setSalechannel("2"); //2 – CSSS营业厅销售
productPrice.setId(productPriceKey);
productPrice.setPrice(new Long(price));
productPrice.setDealtime(new java.util.Date());
jxvasForCSSSDAO.insertProductPrice(productPrice);
//写产品定义表
Vnetproduct product = new Vnetproduct();
Integer fee = new Integer(0);
product.setProductid(productID);
product.setSpid("15999999"); //CSSS产品产品的虚拟SPID
product.setStatus("00");
product.setProductsource(new Integer(2)); //2 – CSSS营业厅定义
product.setSalechannel("2"); //2 – CSSS营业厅销售
product.setBundleid(new Long(servicePackageID));
product.setProductname(productName);
product.setEffectdate(Date.parseTimeStamp(startTime));
product.setExpiredate(Date.parseTimeStamp(endTime));
product.setDescription(productDesc);
product.setOrderflag("1");
jxvasForCSSSDAO.insertProduct(product);
//插入产品明细表
for (int i = 0; i < _serviceID.length; i++) {
Vnetproductdetail vnetproductdetail = new Vnetproductdetail();
VnetproductdetailKey vnetproductdetailKey = new VnetproductdetailKey();
vnetproductdetailKey.setProductid(productID);
vnetproductdetailKey.setServiceid(_serviceID[i]);
vnetproductdetailKey.setServiceitemid(_serviceID[i] + "00000000000000000001");
vnetproductdetail.setId(vnetproductdetailKey);
jxvasForCSSSDAO.insertVnetproductdetail(vnetproductdetail);
}
/*
省Vnet中心和营销支撑系统完成产品定义后,
将相关的产品信息上传全国中心平台省Vnet中心和营销支撑系统完成产品定义后,
将相关的产品信息上传全国中心平台
*/
}
catch (Exception e) {
//回滚事务
transactionManager.rollback(status);
rc = Constants.SYSTEM_ERROR;
result.setResult(rc);
result.setErrorDescription(Constants.getErrorInfo(rc));
//----------------------------------------------- return result;
}
//-----------------提交事务--------------------//
transactionManager.commit(status);
result.setResult(Constants.INTERFACE_OK);
result.setErrorDescription(Constants.getErrorInfo(Constants.INTERFACE_OK));
return result;
}
}