JiveJdon Community Forums
在线122人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 1 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
willem

发表文章: 13
注册时间: 2008年03月24日 11:34
给他发消息
事务封装的界定 发表: 2008年03月24日 11:40 回复
功能描述:

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










初步的设计:如图




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是
图片类型.这里应该怎样设计?请高手指教.
[该贴被willem于2008-03-24 11:43修改过]
[该贴被admin于2008-03-29 08:44修改过]
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:事务封装的界定 发表: 2008年03月29日 08:50 回复
首先 没有必要为事务专门做一个类,ProductTransaction

可以用ProductService这样业务服务来封装。只要你将一个操作封装在一个事务过程中就可以,没有必要再专门搞多个Transaction,问题复杂化,性能急剧降低。

>我对图片类型的处理感觉不妥, 要做到不同位置展示不同图片
那就专门建立一个位置或类型类表达所在位置,注意get之类不要事务,不要将业务建模和具体技术平台事务混合在一起,加剧设计的复杂性。

这个主题有 1 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam