- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java领域模型
Java领域模型标签:?javadomainobjectdaohibernateservice2007-04-29 16:21?1602人阅读?评论(0)?收藏?举报?分类:Java(17)?为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类:1,失血模型2,贫血模型3,充血模型4,胀血模型那么让我们看看究竟有这些领域模型的具体内容,以及他们的优缺点:?一、失血模型?失血模型简单来说,就是domain object只有属性的getter/setter方法的纯数据类,所有的业务逻辑完全由business object来完成(又称TransactionScript),这种模型下的domain object被Martin Fowler称之为“贫血的domain object”。下面用举一个具体的代码来说明,代码来自Hibernate的caveatemptor,但经过我的改写:?一个实体类叫做Item,指的是一个拍卖项目?一个DAO接口类叫做ItemDao?一个DAO接口实现类叫做ItemDaoHibernateImpl?一个业务逻辑类叫做ItemManager(或者叫做ItemService)?java代码:??public class Item implements Serializable {???? private Long id = null;???? private int version;???? private String name;???? private User seller;???? private String description;???? private MonetaryAmountinitialPrice;???? private MonetaryAmountreservePrice;???? private Date startDate;???? private Date endDate;???? private Set categorizedItems = new HashSet();???? private Collection bids = new ArrayList();???? private Bid successfulBid;???? private ItemState state;???? private User approvedBy;???? private Date approvalDatetime;???? private Date created = new Date();???? //? getter/setter方法省略不写,避免篇幅太长?}java代码:??public interface ItemDao {???? public Item getItemById(Long id);???? public Collection findAll();???? public void updateItem(Item item);?}ItemDao定义持久化操作的接口,用于隔离持久化代码。?java代码:??public class ItemDaoHibernateImpl implements ItemDao extends HibernateDaoSupport {???? public Item getItemById(Long id) {???????? return (Item) getHibernateTemplate().load(Item.class, id);???? }???? public Collection findAll() {???????? return (List) getHibernateTemplate().find(from Item);???? }???? public void updateItem(Item item) {???????? getHibernateTemplate().update(item);???? }?}ItemDaoHibernateImpl完成具体的持久化工作,请注意,数据库资源的获取和释放是在ItemDaoHibernateImpl里面处理的,每个DAO方法调用之前打开Session,DAO方法调用之后,关闭Session。(Session放在ThreadLocal中,保证一次调用只打开关闭一次)?java代码:??public class ItemManager {???? private ItemDaoitemDao;???? public void setItemDao(ItemDaoitemDao) { this.i
文档评论(0)