风雨无阻

实例:设备,设备类型,设备端口

有以下三个对象:
US设备对象:USDevie
US设备类型对象:USDeviceModle
US设备端口对象:USDevicePort
class USDevice
{
....
// US设备类型
USDeviceModel model;

// US设备端口对象集合
Set<USDevicePort> devicePortSet = new HashSet();

}

/**
US设备类型说明每种设备都有不同的端口数目
*/
class USDeviceModel
{
....

// 设备端口数目
int deviceport;
}

class USDevicePort
{
private int deviceId;
private int devicePort;
}

               1              :                    1                    :                    n
一种US设备(device)----->设备类型(model)------>不同数目的设备端口
US设备:设备类型:设备端口数目 = 1:1:n
所以,如果新增设备的时候,要根据设备类型,得到相应的设备端口数目,
然后在USDevicePort对应的数据库表中插入记录.
编辑设备的时候,如果编辑了US设备类型,则相应的设备端口就会改变,这种
情况除了更新USDevice对应的数据表中设备类型外,因为在USDevicePort表中
存放在以前设备类型的端口记录,所以应该先删除之前的端口记录,然后再插入
现在类型所对应的端口记录.
其实只需:

//这一步根据具体设备id,从数据库中取出相应的设备对象
USDevice device = .....

// 得到US设备端口对象集合
Set devicePortSet = device.getDevicePortSet();

// 先清空以前所有的端口记录
devicePortSet.clear();

// 根据编辑后类型ID,得到设备类型对象,并可以得到此种类型上的端口数目
USDeviceModel usModle = ....


// 根据上面得到的端口数据,构造"设备端口数目"对象,并把所有的设备端口对象添加到集合中

//最后更新US设备


这样,每当编辑一个US设备的类型后,在设备端口表中,这种设备编辑之前的类型所对应的端口记录
就会被删除,而保持只有新的设备类型端口记录.

注意在配置USDevice.hbm.xml文件时,要将<set name="devicePortSet " casecade="all-orphan-delete" .../>
因为它会将和USDevice没有关联的对象从数据中删除,这也与程序中devicePortSet.clear()相对应.

 

 

 


 

posted on 2008-03-14 23:53 秋枫故事 阅读(364) 评论(0)  编辑  收藏 所属分类: 工作总结


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

新闻档案

搜索

最新评论

阅读排行榜

评论排行榜