论坛首页 Java企业应用论坛

事务封装的界定

浏览 1774 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-24  

功能描述:

添加商品 addProduct<ID,name,desc>,商品有一些基本的信息,比如价格,名称,描述等, 除此之外,商品还可以有图片.图片可以有多张,比如商品有缩略图,清晰图,颜色图,并且在展示商品时,希望在不同的位置显示不同的图片.并且有可能某种类型图片只能为控制为一张,当新上传一张该类型的图片,则原来的图片被替换.

初步的设计:如图

[code]
Public Class ProductTransaction
{     
        private ImgDao imgDao;
        private ProductDao productDao;
        public void AddProduct(Product product)
        {
            daoManager.BeginTransaction();
            try
            {
                productDao.AddProduct(product);
                imgDao.AddImg(Product.ImgList);
                daoManager.CommitTransaction();
            }
            catch
            {
                daoManager.RollBackTransaction();
            }
        }

        public void UpdateProduct(Product product)
        {
            daoManager.BeginTransaction();
            try
            {
                   productDao.UpdateProduct(product);
                   imgDao.Del(Product.ID);//先删
                  imgDao.AddImg(Product.ImgList);
//在添加
                  daoManager.CommitTransaction();
            }
            catch
            {
                daoManager.RollBackTransaction();
            }
        }

      public Set GetImgList(string ProductID)
      {
         
//根据商品ID获取商品图片
      }
      public Set GetImgList(string ProductID,string ImgType)
      {
         
//根据商品ID获取商品某类型(imgType)的图片
      }
}


因为以后想可以对商品图片单独进行一个维护. 我想抽出一个图片事务"ImgTransaction",那么"ProductTransaction"可以用"ImgTransaction"完成原来的添加图片功能,那么这里就:

        public void AddProduct(Product product)
        {
            daoManager.BeginTransaction();
            try
            {
                productDao.AddProduct(product);
                daoManager.CommitTransaction();
            }
            catch
            {
                daoManager.RollBackTransaction();
            }

            imgTransaction.AddImg(Product.ImgList);//添加图片
        }


这样做本来一个事务的变成了两个事务,这样有损性能. 后来觉得没必要抽出一个图片事务"ImgTransaction", 但用"ProductTransaction"是否合理?

我对图片类型的处理感觉不妥, 要做到不同位置展示不同图片,只能通过GetImgList(string ProductID,string ImgType)来取, ProductID是商品ID,ImgType是
图片类型.这里应该怎样设计?请高手指教.

  • 大小: 9.6 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics