|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-04-08
借用Robbin的代码
//普通的PODO
public class Item implements Serializable {
.....
}
//LINQ or NHibernate Dao
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);
}
}
//Ext the PODO
public static class ItemExt
{
private static dao=...; //seter注入
public Bid placeBid(User bidder, MonetaryAmount bidAmount,Bid currentMaxBid, Bid currentMinBid)
{
.....
}
public static Item GetItem(this Item it, int id)
{
dao.getItemById(id);
}
public static List<Item> Findall(this Item it)
{
dao...
}
public static void UpdateItem(this Item it)
{
dao.updateItem(it);
}
}
好处: 1. 机动灵活, 必要方法在需要时才加与扩展。例如在页面,可能只需要PODO的参与。 2. DAO和PODO联系松散。 3. 取消ItemManager。 当然模型可能还有些问题,这只是我一时拍脑袋想出来的,大家砸个砖头吧 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-04-08
诗出何典?(传送门)
|
|
| 返回顶楼 | |
|
时间:2008-04-08
to:ray_linn
你在海阔天空呆惯了,正儿八经的技术讨论,也贴到这里来? |
|
| 返回顶楼 | |
|
时间:2008-04-08
http://www.javaeye.com/topic/11712 此典
使用Item Item it=new Item(); it=it.GetItemById(100); it.PlaceBid(...) it.UpdateItem(); |
|
| 返回顶楼 | |
|
时间:2008-04-08
庄表伟 写道 to:ray_linn
你在海阔天空呆惯了,正儿八经的技术讨论,也贴到这里来? .net版米人啊。 |
|
| 返回顶楼 | |
|
时间:2008-04-08
晕,看不出有啥好处啊!
|
|
| 返回顶楼 | |
|
时间:2008-04-08
偶还有变形之一。
1. CURD+F与Domain object在一起。//LINQ似乎比较容易实现 2. 业务方法采用扩展。 it.PlaceBid(...) //才方法先调用Find(id),再调用Update(). |
|
| 返回顶楼 | |
|
时间:2008-04-08
ray_linn 写道 偶还有变形之一。
1. CURD+F与Domain object在一起。//LINQ似乎比较容易实现 2. 业务方法采用扩展。 it.PlaceBid(...) //才方法先调用Find(id),再调用Update(). .net 3好做啊! patial class和extension method都容易达到! java下想做只能是aspectj了! |
|
| 返回顶楼 | |
|
时间:2008-04-08
yimlin 写道 ray_linn 写道 偶还有变形之一。
1. CURD+F与Domain object在一起。//LINQ似乎比较容易实现 2. 业务方法采用扩展。 it.PlaceBid(...) //才方法先调用Find(id),再调用Update(). .net 3好做啊! patial class和extension method都容易达到! java下想做只能是aspectj了! 。。。。当然知道很容易实现了。。。我要解决的是 robbin 写道 虑到典型的web应用中,简单的CRUD操作占据了业务逻辑的绝大多数比例,因此第一类变种的优点是:避免了业务逻辑不得不大量封装DAO接口的问题,简化了软件架构设计,节省了大量的业务层代码量。 这种方案的缺点是:把DAO接口方法和业务逻辑方法混合到了一起,显得职责不够单一化,软件分层结构不够清晰;此外这种方案仍然不得不对隐式依赖持久化的domain logic提供封装方法,未能做到彻底的简化。 |
|
| 返回顶楼 | |
|
时间:2008-04-08
老兄 怎么你还在吃剩饭?
|
|
| 返回顶楼 | |









