欢迎来到天天文库
浏览记录
ID:38760963
大小:33.73 KB
页数:28页
时间:2019-06-19
《充血模型与贫血模型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、领域模型分为4大类:1,失血模型2,贫血模型3,充血模型4,胀血模型那么让我们看看究竟有这些领域模型的具体内容,以及他们的优缺点:一、失血模型失血模型简单来说,就是domainobject只有属性的getter/setter方法的纯数据类,所有的业务逻辑完全由businessobject来完成(又称TransactionScript),这种模型下的domainobject被MartinFowler称之为“贫血的domainobject”。下面用举一个具体的代码来说明,代码来自Hibernate的caveatemptor,但经过我的改写:一个
2、实体类叫做Item,指的是一个拍卖项目一个DAO接口类叫做ItemDao一个DAO接口实现类叫做ItemDaoHibernateImpl一个业务逻辑类叫做ItemManager(或者叫做ItemService)java代码: publicclassItemimplementsSerializable{ privateLongid=null; privateintversion; privateStringname; privateUserseller; privateStringdescription;
3、 privateMonetaryAmountinitialPrice; privateMonetaryAmountreservePrice; privateDatestartDate; privateDateendDate; privateSetcategorizedItems=newHashSet(); privateCollectionbids=newArrayList(); privateBidsuccessfulBid; privateItemStatestate; privateUs
4、erapprovedBy; privateDateapprovalDatetime; privateDatecreated=newDate(); // getter/setter方法省略不写,避免篇幅太长}java代码: publicinterfaceItemDao{ publicItemgetItemById(Longid); publicCollectionfindAll(); publicvoidupdateItem(Itemitem);}ItemDao定义持久化操作的接口,用于隔离持久化代码。
5、java代码: publicclassItemDaoHibernateImplimplementsItemDaoextendsHibernateDaoSupport{ publicItemgetItemById(Longid){ return(Item)getHibernateTemplate().load(Item.class,id); } publicCollectionfindAll(){ return(List)getHibernateTemplate().find("fromItem
6、"); } publicvoidupdateItem(Itemitem){ getHibernateTemplate().update(item); }}ItemDaoHibernateImpl完成具体的持久化工作,请注意,数据库资源的获取和释放是在ItemDaoHibernateImpl里面处理的,每个DAO方法调用之前打开Session,DAO方法调用之后,关闭Session。(Session放在ThreadLocal中,保证一次调用只打开关闭一次)java代码: publicclassItemMana
7、ger{ privateItemDaoitemDao; publicvoidsetItemDao(ItemDaoitemDao){this.itemDao=itemDao;} publicBidloadItemById(Longid){ itemDao.loadItemById(id); } publicCollectionlistAllItems(){ return itemDao.findAll(); } publicBidplaceBid(Itemitem,Use
8、rbidder,MonetaryAmountbidAmount, BidcurrentMaxBid,BidcurrentMi
此文档下载收益归作者所有