随笔:25 文章:1 评论:66 引用:0
steeven
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
编程使用SDO[EMF兄弟篇]
SDO,简单理解就是EMF的脱机版。类似于resultSet和DataSet。可用于smartclient等脱机数据加工场合。
主要特点:(个人理解)
可验证
强类型
可取出完整数据和差异。
生成SDO代码和EMF大同小异,主要是在my.genmodel的第一个节点的右键菜单中选择:Set SDO defaults.
体验:
1. 生成Editor后,执行生成的Editor Plugin
2. 新建Example EMF Model Creation Wizards->Data Graph Model
3. 在Changes节点上Start Loggin, 然后编辑数据即可看到自动生成的差异。
网上手工操作SDO的示例代码比较少,这里简单demo如下:
import
java.util.Iterator;
import
org.eclipse.emf.ecore.EObject;
import
org.eclipse.emf.ecore.sdo.EDataGraph;
import
org.eclipse.emf.ecore.sdo.SDOFactory;
import
org.steeven.family.FamilyFactory;
import
org.steeven.family.个人;
import
org.steeven.family.家庭;
import
commonj.sdo.ChangeSummary;
import
commonj.sdo.DataGraph;
import
commonj.sdo.DataObject;
public
class
Server
{
public
static
void
main(String[] args)
{
//
client side
EDataGraph graph
=
loadGraph();
graph.getChangeSummary().beginLogging(); // important!
家庭 family
=
(家庭) graph.getRootObject();
family.setTitle(
"
my family
"
);
个人 baby
=
FamilyFactory.INSTANCE.create个人();
baby.set姓名(
"
sophie
"
);
family.get兔崽子().add(baby);
graph.getChangeSummary().endLogging();
saveGraph(graph);
update(graph);
}
//
server side
public
static
EDataGraph loadGraph()
{
家庭 family
=
FamilyFactory.INSTANCE.create家庭();
//
or load from
//
database
EDataGraph graph
=
SDOFactory.eINSTANCE.createEDataGraph();
graph.setERootObject((EObject) family);
return
graph;
}
//
server side full save
public
static
void
saveGraph(EDataGraph graph)
{
System.out.println(graph.getRootObject());
}
//
server side update changed objects
public
static
void
update(DataGraph dataGraph)
{
ChangeSummary changeSummary
=
dataGraph.getChangeSummary();
for
(Iterator it
=
changeSummary.getChangedDataObjects().iterator(); it
.hasNext();)
{
DataObject changedObject
=
(DataObject) it.next();
System.out.println(
"
Update for
"
+
changedObject);
for
(Iterator settingIt
=
changeSummary.getOldValues(changedObject)
.iterator(); settingIt.hasNext();)
{
ChangeSummary.Setting changeSetting
=
(ChangeSummary.Setting) settingIt
.next();
System.out.println(
"
(changed
"
+
changeSetting.getProperty().getName()
+
"
from \
""
+
changeSetting.getValue()
+
"
\
"
to \
""
+
changedObject.get(changeSetting.getProperty())
+
"
\
"
)
"
);
}
}
}
}
输出:
org.steeven.family.impl.家庭Impl@9664a1 (title: my family)
Update for org.steeven.family.impl.个人Impl@1729854 (姓名: sophie, 性别: 男)
Update for org.steeven.family.impl.家庭Impl@9664a1 (title: my family)
(changed title from "null" to "my family")
(changed 兔崽子 from "[]" to "[org.steeven.family.impl.个人Impl@1729854 (姓名: sophie, 性别: 男)]")
SDO生成的代码似乎更加纯净一点,没有很多的eXxxx()方法(有需要的也可以取到)。
据说log的开销比较大,不建议对大量数据使用。
发表于 2006-05-15 19:00
steeven
阅读(1800)
评论(5)
编辑
收藏
所属分类:
胡思乱想
、
学习笔记
评论
#
re: 编程使用SDO[EMF兄弟篇]
看不懂
#
re: 编程使用SDO[EMF兄弟篇]
你好,最近正在研究SDO,现在已经实现先根据XSD文件生成了SDO API CODE。
不知道该怎样往数据库里边增删改查。。。如果有DEMO。
麻烦请发送到1984prince@163.com
小弟先谢了。
#
re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
#
re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
邮箱: litao5168@sohu.com 谢谢
#
re: 编程使用SDO[EMF兄弟篇]
最近也在看这个,有没有好点的文章和代码啊,有的话麻烦给些,谢谢,邮箱:
huanggenping2002@163.com
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
db4o,没有主键?
YY一下未来的用户界面
gwt和echo2的对比
转贴:Comparing the Google Web Toolkit to Echo2
编程使用SDO[EMF兄弟篇]
EMF编程使用
Java版2006新春祝福
奢谈未来的java语言。。。
CALENDER
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
学习笔记(11)
(rss)
程序点滴(16)
(rss)
胡思乱想(8)
(rss)
随笔档案
2009年5月 (1)
2006年12月 (1)
2006年7月 (2)
2006年6月 (7)
2006年5月 (8)
2006年4月 (2)
2006年3月 (1)
2006年1月 (2)
2005年12月 (1)
文章档案
2006年8月 (1)
相册
annotation_wizard
samples
我的链接
我在csdn上的窝
(rss)
很久没打理了
我在MSN上的窝
(rss)
我在博客园的窝
(rss)
我在天涯上的窝
搜索
最新评论
1. re: 编程使用SDO[EMF兄弟篇]
最近也在看这个,有没有好点的文章和代码啊,有的话麻烦给些,谢谢,邮箱:
huanggenping2002@163.com
--zebrahgp
2. re: SNMP亲密接触
请问,我在接收Trap时,同时有多个设备发送,在同一时间接收到的会有丢失的情况,怎么解决呢?snmp4j自带的ThreadPool类有没有在这方面起到多线程作用?
--analyser
3. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
邮箱: litao5168@sohu.com 谢谢
--litao
4. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
--litao
5. re: 编程使用SDO[EMF兄弟篇]
评论内容较长,点击标题查看
--1984prince
Powered By:
博客园
模板提供
:
沪江博客