??xml version="1.0" encoding="utf-8" standalone="yes"?>99999久久久久久亚洲,精品亚洲国产成人,亚洲偷自拍另类图片二区http://www.tkk7.com/rosen/category/13739.html努力和牛人羃短差距?/description>zh-cnFri, 09 Jul 2010 02:22:47 GMTFri, 09 Jul 2010 02:22:47 GMT60开源面向对象数据库 db4o 之旅: 使用 dRS “db4o 之旅Q四Q?/title><link>http://www.tkk7.com/rosen/archive/2010/07/09/325618.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Fri, 09 Jul 2010 02:19:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2010/07/09/325618.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/325618.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2010/07/09/325618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/325618.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/325618.html</trackback:ping><description><![CDATA[     摘要: 很多开发者对 hibernate 性能表示|疑Q下一ơ技术革C是什么呢Q——对象数据库 <br>q篇文章是开源面向对象数据库 db4o 之旅 pd文章的第 4 部分Q介l面向对象数据库 db4o ?db4o Replication System(dRS) —?db4o 复制pȝQƈ对其如何同步 Oracle 数据库进行分析?nbsp; <a href='http://www.tkk7.com/rosen/archive/2010/07/09/325618.html'>阅读全文</a><img src ="http://www.tkk7.com/rosen/aggbug/325618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2010-07-09 10:19 <a href="http://www.tkk7.com/rosen/archive/2010/07/09/325618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Versant db4o 8.0 RC发布Q翻译)http://www.tkk7.com/rosen/archive/2010/05/13/320921.htmlRosenRosenThu, 13 May 2010 11:16:00 GMThttp://www.tkk7.com/rosen/archive/2010/05/13/320921.htmlhttp://www.tkk7.com/rosen/comments/320921.htmlhttp://www.tkk7.com/rosen/archive/2010/05/13/320921.html#Feedback0http://www.tkk7.com/rosen/comments/commentRss/320921.htmlhttp://www.tkk7.com/rosen/services/trackbacks/320921.html
回首q去Q?.0版本是非常易用的Q其重要之处在于实现了透明ȀzM及其他重要特性,例如处理Runtime/Unchecked异常、MTOC(multi-transactional object-container 多事务对象容?客户端和服务器端的实C及在zd客户端的推更?pushed updates)。我们曾l的db4oC֌Q注册用户已l超q?5,000Q这一切告诉我们品的易用性是不容|疑的,其是原生对象的复杂映射完全可以与创可脓?band-aid)的ORM技术相抗衡?br />
展望未来Q?.0ȝ本的发布更加x性能Q当然还是保持一如既往的易用性。本着挑战性能极限和易用性的_Qdb4oq行了新一轮的改进Q涉及到了内部非常根基的部分。尽无法直观的看到改进了什么,但在q行的时候你能明昄体会到。db4o 8.0?a >标识理pȝq行了根本性的改变Q重Ҏ改进了db4o server的I/OҎ。正如Poleposition基准试所昄的,q些改进都应验了db4o的卓性能。未来,q些改进都ؓ改进I/O集群、碎片整理和对象演进做好了准备?br />
认识到db4o在嵌入式讑֤和桌面应用程序中的力量,我们扩展了db4o与大?a >Versant对象数据?/a>集成Q进行端到端对象持久化的能力Q而db4o复制技术可用于提供强大的从db4o高性能桌面到Versant大规模集服务器的纯对象持久化。与此同Ӟdb4o核心团队l把重点攑֜增强易用性,q在日益壮大的社Z扮演重要角色。例如增Z透明持久以及Ȁz?NET集合、安全特性、客户和服务器优化、适时的支持了Android和Silverlight之类的轻量环境?br />
在技术创新的同时QVersantl箋向开源社区敞开大门Q一直向C֌传播q这L声音Q对象数据库在互联网计算的新U元中是非常重要的。l保?.0的新业务模式和品预览发布策略,新的8.0遵@了更加流行的FLOSS开源授权模式,q持l提交和db4o一L开源管理工P例如OME(Object Manager Enterprise)工具以及Eclipse和Visual Studio插g?br />
注意Q这ơ新版本发布q是遵@标准程。下面是一个汇总,db4o团队在整?010q都会ؓ8.0的最l发布而努力:

新性能Ҏ?br />     内部Idpȝ改善I/O、集、碎片整理等 *
    改进内存理——通过2的因?factor of 2)减小堆空?br />     在不同的负蝲Q有多种新的~存选项
    快速集合的实现(BigSet)
    自定义类型处理器
    为client/server模式优化的对象预获取

新功?br />     从db4o到大哥Versant的对象复?*
    针对Java?NET集合的TP/TA *
    对Silverlight和Mono的支?br />     提供.NET LINQ支持
    国际化——UnicodeQ现在还是UTF-8和其他字W串~码...支持中文、日文字W集

由开源社区提供的新功?br />     扩展开源授权——微?Ms-PL, Ms-RL)QFLOSS授权Q兼容GPL_v3
    开源Eclipse和Visual Studio的OME插g
    DZone RefCard以及新的技术视频和播客
    像MapMeq样的Android应用E序demo
    Eclipse和Visual Studio的TA/TP插g

新的易用性改q?br />     安全的套接字通讯
    引进Maven资源库快?br />     ADO .NET Data Services接口(IQueryable, IUpdateable)
    新的q行时统计收集和可视化分?br />     mdRS——ؓGoogle Android用户提供的移动dRSQ以便能复制到关pd数据?br />     Spring db4o扩展
    对ؓI类型的Array的支?br />     化后的新配置界面
    支持.NET枚D作ؓ值类?br />     业界率先支持CompactFramework上的LINQ
    .NET普通集合类型的支持
    为推更新客户端缓存准备的提交回调函数
    ?NET LINQ提供TP
    集合感知的dRS实现

*h注的是RC版中不可用的Q但计划放进最l版?br />
Versant目标是ؓdb4oC֌用户提供最先进、最易用Q最坚固、遵循ACID且高性能的数据库解决Ҏ。新db4o 8.0的发布兑C我们始终奉行的承诺。我们期待听C的声韛_ƈ愿和你一起ƈ肩作战ؓ未来交付新的创新?br />
请帮助我们向你们的朋友和同事分nq样的声韻I“工作中用正的工具Q用对象数据库去应对互联|时代的数据理挑战?#8221;?br />
Robert Greene

开源运营V.P.

Versant——db4o团队

h意!引用、{贴本文应注明原译者:Rosen Jiang 以及出处Q?/font>http://www.tkk7.com/rosen



Rosen 2010-05-13 19:16 发表评论
]]>
国际对象数据库大会(ICOODBQ简?/title><link>http://www.tkk7.com/rosen/archive/2008/01/23/177365.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Wed, 23 Jan 2008 13:24:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2008/01/23/177365.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/177365.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2008/01/23/177365.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/177365.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/177365.html</trackback:ping><description><![CDATA[ <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <b style="mso-bidi-font-weight: normal"> <span lang="ZH-CN" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">大会目的</span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </b> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p> </p> <table class="MsoTableGrid" style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 480; mso-padding-alt: 0mm 5.4pt 0mm 5.4pt" cellspacing="0" cellpadding="0" border="0"> <tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0mm; BORDER-LEFT: #d4d0c8; WIDTH: 801pt; PADDING-TOP: 0mm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" valign="top" width="1068"> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">ICOODB 2008</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">是本世纪<b style="mso-bidi-font-weight: normal">对象数据库方面的W一ơ国际大?/b>Q将?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">3</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">13</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">14</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">日在德国柏林召开。对U学家、工业、开发者和学生来说Q在q里能面寚w交流象数据库q相互碰撞灵感,q是一ơ难得的Z。大会旨在让Z对对象数据库产生兴趣Q以一U?b style="mso-bidi-font-weight: normal">创新的方式把对象和数据库l合h</b>Qƈ代替或扩展关pd<b style="mso-bidi-font-weight: normal">数据?/b></span> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">/</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">映射</span> </b> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">?/span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <br /> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">大会׃个独立的委员会组l,来自柏林应用U技大学Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">TFH-Berlin</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Q的</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Stefan Edlich</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">教授和英国喀里多g大学Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Glasgow Caledonian University</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Q的</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">James Paterson</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">是本ơ大会的领导人,?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">ODBMS.org</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">ODBMS</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">供应商、主要出版h提供支持Qƈ由柏林应用科技大学提供场所。大会将在柏林应用科技大学召开。在<b style="mso-bidi-font-weight: normal">星期?/b>Q也是在?b style="mso-bidi-font-weight: normal">理论?/b>”,焦点在对象数据库的理论斚w?b style="mso-bidi-font-weight: normal">星期?/b>Q也是?b style="mso-bidi-font-weight: normal">应用?/b>”,焦点在实际应用和实现方面。ؓ技术日准备的每论文都进?b style="mso-bidi-font-weight: normal">审阅</b>。更多关键信息、演讲和大会日程h?/span> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <a > <span lang="ZH-CN">日程面</span> </a> </span> </b> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Q?/span> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0mm; BORDER-LEFT: #d4d0c8; WIDTH: 126pt; PADDING-TOP: 0mm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" valign="top" width="168"> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-font-kerning: 0pt"> <a > <span style="TEXT-DECORATION: none; text-underline: none"> <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?> <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"> </v:stroke> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> </v:f> <v:f eqn="sum @0 1 0"> </v:f> <v:f eqn="sum 0 0 @1"> </v:f> <v:f eqn="prod @2 1 2"> </v:f> <v:f eqn="prod @3 21600 pixelWidth"> </v:f> <v:f eqn="prod @3 21600 pixelHeight"> </v:f> <v:f eqn="sum @0 0 1"> </v:f> <v:f eqn="prod @6 1 2"> </v:f> <v:f eqn="prod @7 21600 pixelWidth"> </v:f> <v:f eqn="sum @8 21600 0"> </v:f> <v:f eqn="prod @7 21600 pixelHeight"> </v:f> <v:f eqn="sum @10 21600 0"> </v:f> </v:formulas> <v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"> </v:path> <o:lock aspectratio="t" v:ext="edit"> </o:lock> </v:shapetype> </span> </a> <img src="http://odbmsjournal.org/icoodb/img/grashof.jpg" /> </span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> </td> </tr> </tbody> </table> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p> </p> <table class="MsoTableGrid" style="MARGIN: auto 4.85pt; BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 480; mso-padding-alt: 0mm 5.4pt 0mm 5.4pt; mso-table-lspace: 7.1pt; mso-table-rspace: 7.1pt; mso-table-anchor-vertical: paragraph; mso-table-anchor-horizontal: margin; mso-table-left: left; mso-table-top: .1pt" cellspacing="0" cellpadding="0" align="left" border="0"> <tbody> <tr style="HEIGHT: 116.65pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0mm; BORDER-LEFT: #d4d0c8; WIDTH: 149.4pt; PADDING-TOP: 0mm; BORDER-BOTTOM: #d4d0c8; HEIGHT: 116.65pt; BACKGROUND-COLOR: transparent" valign="top" width="199"> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-element: frame; mso-element-frame-hspace: 7.1pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .1pt; mso-height-rule: exactly" align="left"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-font-kerning: 0pt"> <o:p> <img src="http://odbmsjournal.org/icoodb/img/icoodb_revised.gif" /> </o:p> </span> </p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0mm; BORDER-LEFT: #d4d0c8; WIDTH: 768.6pt; PADDING-TOP: 0mm; BORDER-BOTTOM: #d4d0c8; HEIGHT: 116.65pt; BACKGROUND-COLOR: transparent" valign="top" width="1025"> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">对象数据库在某些特定的应用程序类型中是明智的选择Q这栯减少开发者成本和旉Q也能帮助他们构建更加富?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">OO</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">Ҏ的应用E序。否则,如果盲目地加大数据库I间Q迟早也q是会被关系数据库和</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">O/R</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">映射l充填满了。因此,本次大会的一个目的就是让大家能更好的理解什么情况下和ؓ什么?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">ODBMS</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">。有了这U精,我们想邀请你<strong>加入本次</strong></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <strong>大会、v草一份论文或演讲、展Cv?/strong> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">或简单的到场观摩或和我们q一步接z。如果你Ҏ个主题有兴趣Q只需要访?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a >odbms.org</a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a > <span lang="ZH-CN">专家文章</span> </a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">或浏览包括演讲稿、指南、文章等在内?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a > <span lang="ZH-CN">免费内容</span> </a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">?/span> </span> </p> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-element: frame; mso-element-frame-hspace: 7.1pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .1pt; mso-height-rule: exactly" align="left"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt"> <o:p> </o:p> </span> </p> </td> </tr> </tbody> </table> <p class="MsoNormal" style="MARGIN: 0mm 0mm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS Qゴ゗?; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <b style="mso-bidi-font-weight: normal"> <span lang="ZH-CN" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <font color="#ffffff">?/font> <font color="#ffffff">?/font> <font color="#ffffff">?/font> <font color="#ffffff">?/font> </span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </b> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <font color="#ffffff">?/font> <br /> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <b style="mso-bidi-font-weight: normal"> <span lang="ZH-CN" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <br /> <br /> <br />大会内容</span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 18pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </b> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <br /> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">感兴的主题被包括在内Q但不局限于此:</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据?b style="mso-bidi-font-weight: normal">研究</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库与关系型技术、映?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">JPA</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">{的<b style="mso-bidi-font-weight: normal">比较</b>?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库在工业、案例研IӞ能源、生物、移动领域、汽?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">?/span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据?b style="mso-bidi-font-weight: normal">产品</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库与<b style="mso-bidi-font-weight: normal">性能</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库与<b style="mso-bidi-font-weight: normal">查询语言</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据?b style="mso-bidi-font-weight: normal">体系和模?/b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库在<b style="mso-bidi-font-weight: normal">嵌入式系l?/b>?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库在<b style="mso-bidi-font-weight: normal">高可用?/b>?b style="mso-bidi-font-weight: normal">可变规模pȝ</b>?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库的不同<b style="mso-bidi-font-weight: normal">~程语言</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库和<b style="mso-bidi-font-weight: normal">标准</b>Q例?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">odmg</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">4th generation</span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">”)</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据库的<b style="mso-bidi-font-weight: normal">培训</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: ZH-CN; mso-fareast-font-family: Wingdings"> <span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">对象数据?b style="mso-bidi-font-weight: normal">实现</b></span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </b> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN">如果你能在以上的M主题有所贡献Q或M其他相关主题Q请与我联系?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN"> <o:p> </o:p> </span> </p> <p class="MsoPlainText" style="MARGIN: 0mm 0mm 0pt"> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">最后,请参考本|站?/span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a >FAQ</a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">Q相xd</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a > <span lang="ZH-CN">q里</span> </a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">查阅Q官Ҏv报可以在</span> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"> <a > <span lang="ZH-CN">q里</span> </a> </span> <span lang="ZH-CN" style="FONT-SIZE: 12pt; FONT-FAMILY: SimSun; mso-bidi-font-family: 'QS ゴシック'; mso-fareast-language: ZH-CN; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">览?/span> <br /> <br /> <span id="ctl00_ctl00_bcr_topicView___TopicBody"> <span id="ctl00_ctl00_bcr_topicView___TopicBody"> <span style="FONT-FAMILY: 宋体"> <strong> <font color="#ff0000" size="2">h意!引用、{贴本文应注明原译者:RosenJiang 以及出处Q?/font> </strong> <a href="/rosen/archive/2007/02/rosen/rosen/rosen"> <font face="宋体" color="#ff0000" size="2"> <strong>http://www.tkk7.com/rosen</strong> </font> </a> </span> </span> </span> </p> <img src ="http://www.tkk7.com/rosen/aggbug/177365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2008-01-23 21:24 <a href="http://www.tkk7.com/rosen/archive/2008/01/23/177365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapMeQ翻译)http://www.tkk7.com/rosen/archive/2007/12/13/167622.htmlRosenRosenThu, 13 Dec 2007 15:44:00 GMThttp://www.tkk7.com/rosen/archive/2007/12/13/167622.htmlhttp://www.tkk7.com/rosen/comments/167622.htmlhttp://www.tkk7.com/rosen/archive/2007/12/13/167622.html#Feedback3http://www.tkk7.com/rosen/comments/commentRss/167622.htmlhttp://www.tkk7.com/rosen/services/trackbacks/167622.html ?/font>

本项目基?a >Davanum Srinivas开发的BrowseMapQ?a >BrowseMap是一个ؓAndroid开发的Google Maps览器,能提供:
  • 在Android上浏览Google Maps
  • 地图的放大和~小
  • 跟随鼠标UdQ在真实讑֤上应该是触摸屏)
  • 交通和卫星视图之间转换
  • 定位

Q这L地图应用E序基础功能实际上已l在Android上实CQ?br />
但是MapMe在这些基功能之上提供了不新Ҏ,q都得感谢db4o对象持久引擎Q?

  • 把位|信息登记到db4oQ完整的地图持久化,包括~放U别以及卫星交通视图)
  • 览书签列表
  • ~辑书签
  • 从书{中D到地图上某个位置
  • Ҏ当前GPS所报告的位|居中显C地?

屏幕截图

想看应用E序是如何运作的Q你可以观看?a >YouTube上的MapMe视频、从一个外部服务器下蝲高分辨率视频(30 Mb)或下面的屏幕截图Q?br />
db4o总部Q卫?交通视图)



MapMe主菜单:



建立书签/D?navpoint)Q?br />


保存的书{?D?navpoint)列表Q?br />


MapMe是如何运用db4o?/font>

如果你查看源代码Q下面有下蝲Q,你会发现DB helpercd理了所有的持久化操作(开启、存储、查询、计数数据库Q,而这一切都不超q?0行代码!

q一切都很简单,而且不会丧失性能。让我们来看一些项目中用到的持久化Ҏ?/p>

开启数据库

开启数据库的确单,q且在必要的时候还能自动生成数据库文g。一旦打开Qdb4o锁定数据库文g?/p>

public  ObjectContainer db(){

      
try  {

            
if (oc  ==   null   ||  oc.ext().isClosed())

                  oc 
=  Db4o.openFile(dbConfig(), db4oDBFullPath(context));

            
return  oc;

      } 
catch  (Exception e) {

            Log.e(Db4oHelper.
class .getName(), e.toString());

            
return   null ;

      }

}

 

private  String db4oDBFullPath(Context ctx) {

      
return  ctx.getDataDir()  +   " / "   +   " browsemap.db4o " ;

}

注意我们所存放的数据库文g路径是和上下文数据目录有关的?br />
配置数据?/font>

q里我们提供一个配|对象,以便在打开数据库的时候把它传递进去(代码如下Q?br />
private Configuration dbConfig(){

      Configuration c 
= Db4o.newConfiguration();

      c.objectClass(MapBookmark.
class).objectField("name").indexed(true);

      c.objectClass(MapBookmark.
class).updateDepth(2);

      c.objectClass(MapBookmark.
class).minimumActivationDepth(3);

      c.objectClass(MapBookmark.
class).cascadeOnDelete(true);

      
return c;

注意QؓMapBookmark对象建立的烦引字D|“name”,q设|激zd更新U别?br />
保存书签

在这里我们调用一pd的操作,无论对象是否存在于数据库Q对象都会被更新或插入?/p>

public void setBookmark(

                        String name,

                        String description,

                        
int latitude,

                        
int longitude,

                        
int zoomLevel,

                        
boolean satellite,

                        
boolean traffic){

     

      MapBookmark bkm 
= getBookmark(name);

      
if(bkm == null)

            bkm 
= new MapBookmark(name);

      bkm.setDescription(description);

      bkm.setLatitude(latitude);

      bkm.setLongitude(longitude);

      bkm.setZoomLevel(zoomLevel);

      bkm.setSatellite(satellite);

      bkm.setTraffic(traffic);

      db().set(bkm);

      db().commit();

}

在保存到数据库之前,我们讄好所有字Dc?/p>

Ҏ名字查询书签

我们通过Query by Example(QBE)传入一个原型来取回以名字ؓ条g的书{?/p>

public MapBookmark getBookmark(String name){

      MapBookmark proto 
= new MapBookmark(name);

      ObjectSet result 
= db().get(proto);

      
if(result.hasNext()){

            
return (MapBookmark)result.next();

      }

      
return null;

}

QBE利用反射来检查原型对象的字段?br />
查询所有书{?/font>

q里我们把SODA查询l果拯到ArrayList中。但要注意,当用Native Queries时你不必q样做(在这U情况下直接返回List<MapBookmark>Q?/p>

public List<MapBookmark> getBookmarkList(){

      ArrayList
<MapBookmark> ret = new ArrayList<MapBookmark>();

        ObjectSet result 
= getBookmarks();

        
while (result.hasNext())

            ret.add((MapBookmark)result.next());

        
return ret;

}

   

private ObjectSet getBookmarks(){

      Query query 
= db().query();

      query.constrain(MapBookmark.
class);

      query.descend(
"name").orderAscending();

      
return query.execute();

}

删除书签

public void deleteBookmark(String name) {

      MapBookmark bkm 
= getBookmark(name);

      
if(bkm != null){

            db().delete(bkm);

            db().commit();

      }

如果你的对象在db4o参考系l中存在Q你可以L的调用delete()操作从数据库中删除它?br />
书签计数

public int bookamrkCount(){

      
return getBookmarks().size();

}

   

private ObjectSet getBookmarks(){

      Query query 
= db().query();

      query.constrain(MapBookmark.
class);

      query.descend(
"name").orderAscending();

      
return query.execute();

}


要通过查询来进行对象计敎ͼ你只要询问查询结果的大小卛_?br />
待完?/font>

  • Z书签的查询功能(通过db4o查询Q?
  • 支持手势识别(gesture recognition)Q?a >链接Q?
  • 当前位置提示(Tweet current location)Q?a >链接Q?
  • 把跟t到的GPS位置接收到屏q上q把GPS路线存储到数据库上(以便今后查看Q?
  • 把位|发送给联系人(短消息、e-mail{)

下蝲

MapMe.Zip
YouTube上的MapMe视频
高分辨率视频(30 Mb)

h意!引用、{贴本文应注明原译者:RosenJiang 以及出处Q?/font>http://www.tkk7.com/rosen



Rosen 2007-12-13 23:44 发表评论
]]>
Z么Android掀起一场手机领域的狂风(Why Android will start the mobile Tornado)http://www.tkk7.com/rosen/archive/2007/12/02/164654.htmlRosenRosenSun, 02 Dec 2007 08:46:00 GMThttp://www.tkk7.com/rosen/archive/2007/12/02/164654.htmlhttp://www.tkk7.com/rosen/comments/164654.htmlhttp://www.tkk7.com/rosen/archive/2007/12/02/164654.html#Feedback5http://www.tkk7.com/rosen/comments/commentRss/164654.htmlhttp://www.tkk7.com/rosen/services/trackbacks/164654.html阅读全文

Rosen 2007-12-02 16:46 发表评论
]]>
实战 OpenLaszlo ?db4ohttp://www.tkk7.com/rosen/archive/2007/08/12/136191.htmlRosenRosenSun, 12 Aug 2007 08:45:00 GMThttp://www.tkk7.com/rosen/archive/2007/08/12/136191.htmlhttp://www.tkk7.com/rosen/comments/136191.htmlhttp://www.tkk7.com/rosen/archive/2007/08/12/136191.html#Feedback6http://www.tkk7.com/rosen/comments/commentRss/136191.htmlhttp://www.tkk7.com/rosen/services/trackbacks/136191.html阅读全文

Rosen 2007-08-12 16:45 发表评论
]]>
开源面向对象数据库 db4o 之旅: 深入 db4o “db4o 之旅Q三Q?/title><link>http://www.tkk7.com/rosen/archive/2006/12/30/91052.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Sat, 30 Dec 2006 11:11:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2006/12/30/91052.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/91052.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2006/12/30/91052.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/91052.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/91052.html</trackback:ping><description><![CDATA[ <p> <a name="N10082"> <span id="4ieo2so" class="atitle"> <strong> <font size="4">前言</font> </strong> </span> </a> </p> <p>在开源面向对象数据库 <a ><i><font color="#996699">db4o 之旅</font></i></a> pd文章的第 1 部分Q?a ><font color="#5c81a7">初识 db4o</font></a> 中,作者介l了 db4o 的历史和现状Q应用领域,以及?ORM {的比较Q?在第 2 部分Q?a ><font color="#996699">db4o 查询方式</font></a>? 作者介l了 db4o 的三U不同的查询方式QQBE、SODA 以及 Native QueriesQƈ分别通过q三U不同的途径实现了两个关联对象的查询?/p> <p>前面我们已经介绍了如何在 db4o 中查询以及添加对象,在本文中我们会向您介绍?db4o 中如何对对象q行更新以及删除操作?br /> </p> <p> <a name="N1009C"> <font size="4"> <strong> <span id="6g42k4w" class="atitle">更新数据</span> </strong> </font> </a> </p> <p> <b>场景一</b> </p> <p>我们来设惌L场景Q一位名叫“张三”的Z了RQƈ上好了牌照(如本pdW二部分之代码)Q而他基本信息的地址q不详细Q只写了“成都市”,在一ơ主部门检查此Z息的时候,发现了这个问题,q立即着手修攏V?/p> <p>?db4o 中,我们q样来实现对q个用户信息的修改(<a ><font color="#5c81a7">清单1</font></a>Q:</p> <p> <br /> <a name="code1"> <b>清单1. 修改地址</b> </a> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> package com; import bo.People; import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4OTest{ public static void main(String[] args){ //打开数据? ObjectContainer db = Db4o.openFile("auto.yap"); try{ ObjectSet<People> result = db.query(new Predicate<People>() { public boolean match(People people) { return people.getName().equals("张三"); } }); People people = result.next(); //修改地址 people.setAddress("成都市金牛区xxx?); db.set(people); }finally{ //关闭q接 db.close(); } } } </pre> </td> </tr> </tbody> </table> <br /> <p>修改数据是如此的单,通过 NQ 查询?People 对象Q接着修改其地址Q最后保存即可。现在我们来看看修改是否成功, 打开 ObjectManager Q如<a ><font color="#5c81a7">?1</font></a> 所C,我们可以看到数据库里的用h据已l更C?/p> <p> <br /> <a name="fig1"> <b>?. 修改地址</b> </a> <br /> <br /> <img height="388" alt="db4o31.jpg" src="http://www.tkk7.com/images/blogjava_net/rosen/db4o31.jpg" width="552" border="0" /> </p> <p>与本pd文章W二部分不同的是Q我们利?ObjectSet<People> result 来获取返回结果,而不?List<People> list。查?ObjectSet ?API 我们发现 ObjectSet 实际上承了 java.util.List ?java.util.Iterator。ؓ什么要l承两个接口Q这是由?db4o Z方便开发者而有意这栯计的Qdb4o 的设计目标就是轻量Q这Ll承方式?ObjectSet 提供了多U特性,而无需开发者在多个集合接口之间转换?/p> <p> <b>场景?/b> </p> <p>让我们考虑下面q个场景:<br />׃工作原因Q“张三”要d省会d他城市发展,他的汽R也要在那里用,Z方便Q他q是军_重新更换为本地牌照?</p> <p>q次我们几乎和场景一采用同样的代码,但结果却不同Q?a ><font color="#5c81a7">清单2</font></a>Q:</p> <p> <br /> <a name="code2"> <b>清单2. 修改地址和R牌(不成功)</b> </a> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> package com; import bo.People; import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4OTest{ public static void main(String[] args){ //打开数据? ObjectContainer db = Db4o.openFile("auto.yap"); try{ ObjectSet<People> result = db.query(new Predicate<People>() { public boolean match(People people) { return people.getName().equals("张三"); } }); People people = result.next(); //修改地址 people.setAddress("l阳市xx区xxx?); //修改车牌? people.getAutoInfoList().get(0).setLicensePlate("川B00000"); db.set(people); }finally{ //关闭q接 db.close(); } } } </pre> </td> </tr> </tbody> </table> <br /> <p>惛_应该保存成功了吧Q只是多加入了设|R牌的代码。打开 ObjectManagerQ如<a ><font color="#5c81a7">?2</font></a> 所C。很奇怪,地址保存成功了,而R牌却Ҏ没变化?/p> <p> <br /> <a name="fig2"> <b>?. 修改地址和R牌(不成功)</b> </a> <br /> <br /> <img height="391" alt="db4o32.jpg" src="http://www.tkk7.com/images/blogjava_net/rosen/db4o32.jpg" width="564" border="0" /> </p> <p>其实q也?db4o 的有意安排。设想一个复杂对象有很多成员Qƈ且这些成员又有自q成员。当更新该对象,db4o 不得不更新其所有的兌对象、关联对象的兌对象Q等{。这引起严重的性能惩罚Q而且在大部分的情况下是没有必要这L?/p> <p>db4o 引入了“更新深?update depth)”这一概念来控制被更新的对象成员树深度。默认的更新深度?1Q这意味着只有基本cd?String cd的成员变量可以被更新Q而修改对象成员将得不CQ何反映,例如本例中修?People 对象?_autoInfoList 成员?/p> <p>Z能更新成员对象,ob4o 提供?cascadeOnUpdate() ҎQ该Ҏ必须在每ơ开启数据库之前讄<a ><font color="#5c81a7">清单3</font></a>Q?/p> <p> <br /> <a name="code3"> <b>清单3. 修改地址和R牌(成功Q?/b> </a> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> package com; import bo.People; import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4OTest{ public static void main(String[] args){ //U联讄 Db4o.configure().objectClass("bo.People") .cascadeOnUpdate(true); //打开数据? ObjectContainer db = Db4o.openFile("auto.yap"); try{ ObjectSet<People> result = db.query(new Predicate<People>() { public boolean match(People people) { return people.getName().equals("张三"); } }); People people = result.next(); //修改地址 people.setAddress("l阳市xx区xxx?); //修改车牌? people.getAutoInfoList().get(0).setLicensePlate("川B00000"); db.set(people); }finally{ //关闭q接 db.close(); } } } </pre> </td> </tr> </tbody> </table> <br /> <p>q下l于如愿以偿Q如<a ><font color="#5c81a7">?3</font></a> 所C。其?db4o 为开发者想得很周到Q关键是如何用好q些Ҏ?/p> <p> <br /> <a name="fig3"> <b>?. 修改地址和R牌(成功Q?/b> </a> <br /> <br /> <img height="379" alt="db4o33.jpg" src="http://www.tkk7.com/images/blogjava_net/rosen/db4o33.jpg" width="553" border="0" /> <br /> </p> <p> <a name="N10132"> <span id="44iamug" class="atitle"> <font size="4"> <strong>删除数据</strong> </font> </span> </a> </p> <p> <b>场景?/b> </p> <p>“张三”换了工作后Q事业发展很快,准备把R卖了换新的,于是他去交管部门办理UM手箋Q删除关联的车辆信息<a ><font color="#5c81a7">清单4</font></a>Q?/p> <p> <br /> <a name="code4"> <b>清单4. 删除车辆</b> </a> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> package com; import bo.AutoInfo; import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4OTest{ public static void main(String[] args){ //打开数据? ObjectContainer db = Db4o.openFile("auto.yap"); try{ ObjectSet<AutoInfo> result = db.query(new Predicate<AutoInfo>() { public boolean match(AutoInfo ai) { //匚w姓名和R牌号 return ai.getLicensePlate().equals("川B00000") && ai.getOwnerNo().getName().equals("张三"); } }); AutoInfo ai = result.next(); //删除车辆信息 db.delete(ai); }finally{ //关闭q接 db.close(); } } } </pre> </td> </tr> </tbody> </table> <br /> <p>?a ><font color="#5c81a7">?4</font></a> 所C,所兌的R辆信息已被删除了?/p> <p> <br /> <a name="fig4"> <b>?. 删除车辆信息</b> </a> <br /> <br /> <img height="379" alt="db4o34.jpg" src="http://www.tkk7.com/images/blogjava_net/rosen/db4o34.jpg" width="553" border="0" /> </p> <p> <b>场景?/b> </p> <p>在场景三的基上修改一下,设想“张三”由于工作不,D最后维护汽车的开支都困难Q他不得不退出有车一族的行列<a ><font color="#5c81a7">清单5</font></a>Q?/p> <p> <br /> <a name="code5"> <b>清单5. 删除所有信?/b> </a> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"> package com; import bo.People; import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4OTest{ public static void main(String[] args){ //U联讄 Db4o.configure().objectClass("bo.People") .cascadeOnDelete(true); //打开数据? ObjectContainer db = Db4o.openFile("auto.yap"); try{ ObjectSet<People> result = db.query(new Predicate<People>() { public boolean match(People people) { //匚w姓名 return people.getName().equals("张三"); } }); People people = result.next(); //删除车主以及兌的R辆信? db.delete(people); }finally{ //关闭q接 db.close(); } } } </pre> </td> </tr> </tbody> </table> <br /> <p>用过 Hibernate 的开发者都知道Q它的联删除让人留下了深刻印象Q第一ơ用的时候都会ؓ之振奋。db4o 也ؓ开发者提供了U联删除Q和场景二的U联更新一P cascadeOnDelete() 是专门ؓ删除准备的,基本概念?cascadeOnUpdate() 一致。打开 ObjectManager 我们会发现数据库已经清空了,张三的购车经历到此结束?br /> </p> <p> <a name="N1017F"> <span id="6owe4yq" class="atitle"> <font size="4"> <strong>l论</strong> </font> </span> </a> </p> <p>通过本系列文章,db4o 的优势已l体现得淋漓致Q它的添加、更新、删除是如此的简单,正如 db4o 的口号那样——“仅需一行代码就能存储复杂结构对象,极大的降低了开发时间和成本Q提供高效的性能Q无需 DBA q预”?/p> <p>如本文有不详之处,大家可以参考官方的《用h南》或讉K <a ><font color="#5c81a7">db4o 官方中文论坛</font></a>Qdb4o 中文C֌正在火热成长Q?br /> </p> <p> <a name="resources"> <span id="4ko4kkc" class="atitle"> <font size="4"> <strong>参考资?/strong> </font> </span> </a> </p> <p> <b>学习</b> <br /> </p> <ul> <li>db4o <a ><font color="#996699">官方|站</font></a> ?br /><br /></li> <li> <a > <i> <font color="#996699">面向对象数据?db4o 之旅pd</font> </i> </a>Q查看此pd文章完整列表?br /><br /></li> <li> <a > <font color="#5c81a7">ODMG 官方|站</font> </a>Q了?ODMG 技术?br /><br /></li> <li> <a > <font color="#5c81a7">developerWorks Java 技术专?/font> </a>Q数癄关于 Java ~程各个斚w的文章?<br /></li> </ul> <p> <br /> <b>获得产品和技?/b> <br /> </p> <ul> <li> <a > <font color="#5c81a7">下蝲 db4o 免费?/font> </a>?br /></li> </ul> <p> <br /> <b>讨论</b> <br /> </p> <ul> <li>db4o <a ><font color="#5c81a7">开发者论?/font></a>Q讨?db4o 技术?br /><br /></li> <li> <a > <font color="#5c81a7">developerWorks Java 论坛</font> </a>Q学?Java 技术。?br />  </li> </ul> <p> <a name="author"> <span id="4e2yemu" class="atitle"> <strong> <font size="4">作者简?/font> </strong> </span> </a> </p> <p> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td colspan="3"> </td> </tr> <tr valign="top" align="left"> <td> <p> </p> </td> <td> <img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="4" /> </td> <td width="100%"> <p>Rosen Jiang 来自成都Q是 db4o ?OO 的忠?fansQ是 2005 q?db4o ?dvp 获得者之一。他正在 J2me 应用中?db4oQ你可以通过 <a href="mailto:rosener_722@hotmail.com?cc="><font color="#5c81a7">rosener_722@hotmail.com</font></a> 和他联系?/p> </td> </tr> </tbody> </table> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td colspan="3"> <img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> </td> </tr> <tr valign="top" align="left"> <td> <p> </p> </td> <td> <img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="4" /> </td> <td width="100%"> <p>Chris 来自香港Q热爱开源和 db4o。他创办了中国最火热?Java 和开源社?MatrixQhttp://www.Matrix.org.cnQ, 你可以通过 <a href="mailto:chris@Matrix.org.cn?cc="><font color="#5c81a7">chris@Matrix.org.cn</font></a> 和他联系?/p> </td> </tr> </tbody> </table> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td colspan="3"> <img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> </td> </tr> <tr valign="top" align="left"> <td> <p> </p> </td> <td> <img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="4" /> </td> <td width="100%"> <p>张黄瞩,热爱开源YӞ熟悉 Java/C/C++ ~程语言Q对数据库技术网l技术均感兴。你可以通过 <a href="mailto:zhanghuangzhu@gmail.com?cc="><font color="#5c81a7">zhanghuangzhu@gmail.com</font></a> 联系他?/p> </td> </tr> </tbody> </table> <br /> <strong> <font face="Arial" color="#ff0000">IBM DeveloperWorks(IBM DW) 版权所有!引用、{贴本文应注明本文来自 IBM DW?/font> </strong> <img src ="http://www.tkk7.com/rosen/aggbug/91052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2006-12-30 19:11 <a href="http://www.tkk7.com/rosen/archive/2006/12/30/91052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源面向对象数据库 db4o 之旅: db4o 查询方式“db4o 之旅Q二Q?http://www.tkk7.com/rosen/archive/2006/11/21/82529.htmlRosenRosenTue, 21 Nov 2006 06:21:00 GMThttp://www.tkk7.com/rosen/archive/2006/11/21/82529.htmlhttp://www.tkk7.com/rosen/comments/82529.htmlhttp://www.tkk7.com/rosen/archive/2006/11/21/82529.html#Feedback3http://www.tkk7.com/rosen/comments/commentRss/82529.htmlhttp://www.tkk7.com/rosen/services/trackbacks/82529.html 前言

?开源面向对象数据库 db4o 之旅 pd文章的第一部分Q?a >初识 db4o 中,作者介l了 db4o 的历史和现状Q应用领域,以及?ORM {的比较。在q篇文章中,作者将会介l?db4o 的安装、启动以及三U不同的查询方式QQBEQQuery by ExampleQ、SODAQSimple Object Database AccessQ?以及 NQQNative QueriesQ,q分别通过q三U不同的途径实现了两个关联对象的查询。本文还C了开发中最l常用到的几个典型功能的 db4o 实现?/p>

下蝲和安?db4o

db4o 所有最新的版本都可以直接在官方|站上下载,q入 db4o ?a target="_blank">下蝲面Q我们可以看到最新的 for Java E_版本?5.5Q包?JAR、源代码、入门文档、API {内容的完整的打包文件只?6 MBQdb4o q有一个对象数据库理工具 ObjectManagerQ目前版本是 1.8Q请在参考资源中下蝲Q?/p>

接着?Eclipse 中新?Java 目Q把 db4o 对象数据库引擎包 db4o-5.5-java5.jar 导入q项目。由?db4o 支持多种版本?JDKQ除?for JDK 5.0 ?db4o-5.5-java5.jar 外,q有 for JDK 1.1?.2-1.4 ?JAR 包,以适应多种环境。与 Hibernate、iBATIS SQL Maps 相比Qdb4o 更加自然Q无需q多地引用第三方支持库?/p>

开启数据库

db4o 怎样q行对象持久化呢Q通过览目录可以发现Q与传统?RDBMS 一Pdb4o 也有自己的数据库文g, ?db4o 中数据库文g的后~名是?.yap”。让我们先来了解一?db4o 对象数据库引擎的主要包结构:

  • com.db4o
    com.db4o 包含了?db4o 时最l常用到的功能。两个最重要的接口是 com.db4o.Db4o ?com.db4o.ObjectContainer。com.db4o.Db4o 工厂是运?db4o 的v点,q个cM的静态方法可以开启数据库文g、启动服务器或连接一个已l存在的服务器,q可以在开启数据库之前q行 db4o 环境配置。com.db4o.ObjectContainer 接口很重要,开发过E中 99% 的时间都会用到它QObjectContainer 可在单用h式下作ؓ数据库实例,也可作ؓ db4o 服务器的客户端。每?ObjectContainer 实例都有自己的事务。所有的操作都有事务保证。当打开 ObjectContainerQ就已经q入事务了,commit() ?rollback() Ӟ下一个事务立卛_动。每?ObjectContainer 实例l护它自己所理的已存储和已实例化对象,在需?ObjectContainer 的时候,它会一直保持开启状态,一旦关闭,内存中数据库所引用的对象将被丢弃?
  • com.db4o.ext
    你也许想知道Z么在 ObjectContainer 中只能看见很的ҎQ原因如下:db4o 接口提供了两个途径Q分别在 com.db4o ?com.db4o.ext 包中。这样做首先是ؓ了让开发者能快速上手;其次Z让其他品能更容易的复制基本?db4o 接口Q开发者从q一点上也能看出 db4o 是相当轻量的。每?com.db4o.ObjectContainer 对象也是 com.db4o.ext.ExtObjectContainer 对象。可以{换成 ExtObjectContainer 获得更多高Ҏ?
  • com.db4o.config
    com.db4o.config 包含了所有配|?db4o 所需的类?
  • com.db4o.query
    com.db4o.query 包包含了构造“原生查? NQQNative QueriesQ”所需?Predicate cRNQ ?db4o 最主要的查询接口?

db4o 提供两种q行模式Q分别是本地模式和服务器模式。本地模式是指直接在E序里打开 db4o 数据库文件进行操作:

ObjectContainer db = Db4o.openFile("auto.yap");

而服务器模式则是客户端通过 IP 地址、端口以及授权口令来讉K服务器:

服务器端Q?
ObjectServer server=Db4o.openServer("auto.yap",1212);
server.grantAccess("admin","123456");

客户端:
ObjectContainer db=Db4o.openClient("192.168.0.10",1212,"admin","123456");

两种方式都可以得?ObjectContainer 实例Q就目前 Java EE 应用环境来看Q服务器模式更有现实意义Q而本地模式更适合于嵌入式应用。ؓ了简化演C,本文在下面的例子都将采用本地模式?/p>

在下面的例子里,我们都会用到下面两个对象Q?People ?AutoInfo 对象?/p>

People 对象Q?/p>
清单1. People 对象
				
package bo;

public class People {

	private java.lang.Integer _id;
	private java.lang.String _name;
	private java.lang.String _address;
	private java.util.List<AutoInfo> _autoInfoList;

	public java.lang.Integer getId() {
		return _id;
	}

	public void setId(java.lang.Integer _id) {
		this._id = _id;
	}

	public java.lang.String getName() {
		return _name;
	}

	public void setName(java.lang.String _name) {
		this._name = _name;
	}

	public java.lang.String getAddress() {
		return _address;
	}

	public void setAddress(java.lang.String _address) {
		this._address = _address;
	}

	public java.util.List<AutoInfo> getAutoInfoList() {
		return this._autoInfoList;
	}

	public void addAutoInfo(AutoInfo _autoInfoList) {
		if (null == this._autoInfoList)
			this._autoInfoList = new java.util.ArrayList<AutoInfo>();
		this._autoInfoList.add(_autoInfoList);
	}

}

AutoInfo 对象Q?/p>
清单2. AutoInfo 对象
				
package bo;

public class AutoInfo{

	private java.lang.Integer _id;
	private java.lang.String _licensePlate;
	private bo.People _ownerNo;

	public java.lang.Integer getId () {
		return _id;
	}

	public void setId (java.lang.Integer _id) {
		this._id = _id;
	}

	public java.lang.String getLicensePlate () {
		return _licensePlate;
	}

	public void setLicensePlate (java.lang.String _licensePlate) {
		this._licensePlate = _licensePlate;
	}

	public bo.People getOwnerNo () {
		return this._ownerNo;
	}

	public void setOwnerNo (bo.People _ownerNo) {
		this._ownerNo = _ownerNo;
	}

}

利用 set Ҏ把新对象存入 ObjectContainerQ而对 ObjectContainer 中已有对象进?set 操作则是更新该对象。db4o 保存数据库很单,下面是一个段完整的保存对象的代码Q?/p>

AutoInfo 对象Q?/p>
清单3
				
package com;

import bo.AutoInfo;
import bo.People;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;

public class DB4OTest{
	
	public static void main(String[] args){
		//打开数据?
		ObjectContainer db = Db4o.openFile("auto.yap");
		try{
			//构?People 对象
			People peo = new People(); 
			peo.setId(1);
			peo.setAddress("成都?);
			peo.setName("张三");
			//构?AutoInfo 对象
			AutoInfo ai = new AutoInfo();
			ai.setId(1);
			ai.setLicensePlate("川A00000");
			//讄 People ?AutoInfo 的关p?
			ai.setOwnerNo(peo);
			peo.addAutoInfo(ai);
			//保存对象
			db.set(peo);
		}finally{
			//关闭q接
			db.close();
		}
	}
}

当我们运行上qC码,db4o 会自动创建“auto.yap”文件。让我们来看看到底保存成功没有,打开 ObjectManager 工具Q?font color="#996699">?1 所C?/p>
?. 对象数据库管理工?/b>
?. 对象数据库管理工? src=

“File”->“Open File”->选择刚才我们保存的“auto.yap”文Ӟ“auto.yap”文件可在项目的根目录下扑ֈQ,最新的 ObjectManager 1.8 版本为我们提供了“Read Only”方式读取数据库文gQ避?ObjectManager 占用数据库文件所D的程序异常?/p>

打开之后Q图 2 所C,刚才存贮?People 对象已经在数据库中了Qƈ且还可以很直观的看到 AutoInfo 对象也放入了 ArrayList 中。这U可视化的对象关pL利于我们Ҏ据的理解Q是传统 RDBMS 无法比拟的。有些开发者会?ObjectManager 工具略显单,q点我想随着 db4o 的不断发展会加入更多的特性。在q个工具中,我们意外的发C Java 集合对象的踪影,db4o 把与 ArrayList 有直接关pȝ所有接口和父类都保存了Q这h得更直观?/p>

在此Q我保留?_id 属性,q是因ؓ通常?Java EE 环境中,DAO W一ơ不是把整个对象都返回到表现层,而是只返回了“标题”、“发布时间”这些信息(q式的q回idQ,接着 DAO 与数据库断开Q要查看详情Q比如文章内容)需要进?findById 操作Q这?DAO 要再ơ与数据库交互,只有唯一标识W才能正地扑ֈ对象。这U?i>懒加?/i>方式也是很多书籍所推荐的?/p>

回到本文的范例程序中Q这?_id 属性可׃h工编码实现的“序列”进行赋|当然 db4o 也提供了内部标识W?Internal IDsQ图 2 中的 id=1669Q以?UUIDs?/p>
?. 对象l构
?. 对象l构 


查询数据?/font>

?RDBMS 一Pdb4o 也有自己的查询语aQ分别是 QBEQQuery by ExampleQ、NQQNative QueriesQ、SODAQSimple Object Database AccessQ,db4o 更推荐?NQ q行查询。NQ 方式提供了非常强大的查询功能Q支持原生语aQ也意味着你可以?Java 来判断该对象是否W合条gQ这是其他数据库查询语言无法比拟的。在某些情况下, db4o 核心会将 NQ 译?SODA 以获得更高的性能。下面详l介l一下这三种查询语言?/p>

QBEQQuery by ExampleQ?/font>

QBE 规范可在q里下蝲。QBE 最初由 IBM 提出Q同时业界也有许多和 QBE 兼容的接口,包括著名?Paradox。有些系l,比如微Y?AccessQ它的基于表单的查询也是受到了部?QBE 思想的启发。在 db4o 中,用户可借用 QBE 快速上手,可以很容易适应 db4o 存取数据的方式?/p>

当利?QBE ?db4o 提供模板QexampleQ对象时Qdb4o 返回所有和非默认值字D匹配的全部对象。内部是通过反射所有的字段和构造查询表辑ּQ所有非默认值字D늻合”AND”表辑ּQ来实现?/p>

例如Q利?QBE 查找到R牌号为“川A00000”的车主姓名Q这是一个联查询?/p>
清单4
				
package com;

import java.util.List;

import bo.AutoInfo;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;

public class DB4OTest{
	
	public static void main(String[] args){
		//打开数据?
		ObjectContainer db = Db4o.openFile("auto.yap");
		try{
			//构造模板对?
			AutoInfo ai = new AutoInfo();
			ai.setLicensePlate("川A00000");
			//查询对象
			List<AutoInfo> list = db.get(ai);
	    	for(int x = 0; x < list.size(); x++){
	    		System.out.println("车主姓名Q?+list.get(x).getOwnerNo().getName());
			}
		}finally{
			//关闭q接
			db.close();
		}
	}
}

但是 QBE 也有明显的限Ӟdb4o 必须反射模板QexampleQ对象的所有成员;无法执行更进一步的查询表达式(例如 AND、OR、NOT {等Q;不能U束 0Q整型)、””(I字W串Q或?nullQ对象)Q因些都被认为是不受U束的。要l过q些限制Qdb4o 提供?NQQNative QueriesQ?/p>

SODAQSimple Object Database AccessQ?/font>

SODA Q简单对象数据库讉KQ请查看官方站点Q其中一位主要维护者是 Carl RosenbergerQCarl 正是 db4o 首席架构师?/p>

SODA 是一U与数据库通讯的对?API。最l的目标是实现类型安全、对象复用、最的字符串用、与~程语言无关{特性。SODA ?db4o 最底层的查?APIQ目?SODA 中用字W串来定义字D,q样不能实现类型安全也无法在编译时查代码,而且写v来较ȝQ当然要辑ֈ设计目标q个阶段是必ȝ。大部分情况?NQQNative QueriesQ是很好的查询接口,不过遇到动态生成查询的时?SODA 大有作Z?/p>

通过 SODA 查找到R牌号为“川A00000”的车主姓名Q?/p>
清单5
				
package com;

import java.util.List;

import bo.AutoInfo;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.query.Query;

public class DB4OTest{
	
	public static void main(String[] args){
		//打开数据?
		ObjectContainer db = Db4o.openFile("auto.yap");
		try{
			//构造查询对?
			Query query=db.query();
			//讄被约束实?
			query.constrain(AutoInfo.class);
			//讄被约束实例的字段和约束条?
			query.descend("_licensePlate").constrain("川A00000");
			//查询对象
			List<AutoInfo> list = query.execute();
	    	for(int x = 0; x < list.size(); x++){
	    		System.out.println("车主姓名Q?+list.get(x).getOwnerNo().getName());
			}
		}finally{
			//关闭q接
			db.close();
		}
	}
}

通过 APIQ发?Query 实例增加?sortBy 按字D|序方法和 orderAscending正序、orderDescending 倒序排列ҎQSODA ?QBE 更进了一步?/p>

NQQNative QueriesQ?/font>

_ֽL在最后出场,NQ 才是 db4o 查询方式中最_ֽ的地方!有没有想q用你熟悉的的编E语aq行数据库查询呢Q要是这P你的查询代码是 100% 的类型安全?00% 的编译时查以?100% 的可重构Q很奇妙吧?NQ 可以做到q些?/p>

有两论文专门讲解了 NQ 的基本概念和设计思\Q分别是 《Cook/RosenbergerQ持久对象原生数据库查询语言?/font> ?《Cook/RaiQSafe Query Objects: Statically Typed Objects as Remotely Executable Queries》。作为结果集的一部分QNQ 表达式必返?true 值来标记特定实例。如果可能的?db4o 尝试优?NQ 表达式,q依赖烦引来q行表达式?/p>

通过 NQ 查找到R牌号为“川A00000”的车主姓名Q?/p>
清单6
				
package com;

import java.util.List;

import bo.AutoInfo;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.query.Predicate;

public class DB4OTest{
	
	public static void main(String[] args){
		//打开数据?
		ObjectContainer db = Db4o.openFile("auto.yap");
		try{
			List <AutoInfo> list = db.query(new Predicate<AutoInfo>() {
				public boolean match(AutoInfo ai) {
			    	//q样才是cd安全?
			        return ai.getLicensePlate().equals("川A00000");
			    }
			});
	    	for(int x = 0; x < list.size(); x++){
	    		System.out.println(list.get(x).getOwnerNo().getName());
			}
		}finally{
			//关闭q接
			db.close();
		}
	}
}

必须指出 NQ 的一个的问题是:在内部,db4o 设法?NQ 转换?SODA。但q不是所有的查询表达式都可以成功转换。有些查询表辑ּ的流向图QflowgraphQ非帔R于分析。这U情况下Qdb4o 不得不实例化一些持久对象来真实地运?NQ 表达式?/p>

正在开发中?NQ 查询优化器就可以化解q个障碍Q它分?NQ 表达式的每个部分Q以保最量的实例化对象Q以此提高性能。当Ӟ优化器的不是灵丹妙药Q关键还需要自己多优化代码?/p>

开?Java EE 目l常会用到分,怎样?NQ 实现呢?向数据库写入六条记录Q?/p>
清单7
				
package com;

import java.util.List;

import bo.AutoInfo;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.query.Predicate;

public class DB4OTest{
	
	public static void main(String[] args){
		//打开数据?
		ObjectContainer db = Db4o.openFile("auto.yap");
		try{
			List<AutoInfo> list = db.query(new Predicate<AutoInfo>() {
				public boolean match(AutoInfo ai) {
			        return true;
			    }
			});
			//记录L
			Integer count = list.size();
			//每页两条Q分三页
	    	for(int x = 0; x < 3; x++){
	    		System.out.println("W?+x+":"+list.get(x*2).getLicensePlate());
	    		System.out.println("W?+x+":"+list.get(x*2+1).getLicensePlate());
			}
		}finally{
			//关闭q接
			db.close();
		}
	}
}

我们发现Q在q行 NQ 查询时ƈ没有加入M条gQ无条gq回 trueQ,是不是相当于遍历了整个数据库Qdb4o 的设计者早想Cq个问题Q当 db.query() 执行完毕q回 list 实例的时候,db4o 只是与数据库同步取出内部 IDs 而已Qƈ没有把所有的 AutoInfo 对象全部取出Q只有在 list.get(x*2).getLicensePlate() 之后才会L?IDs 取出记录。所以不必担心性能问题?/p>

l论

db4o 为开发者提供了多种查询方式Q这些方式都很灵zR要引v大家注意的是Q灵zd带来便利的同时也对开发者自w素质提Z更高的要求,Q比如排序,既可以用 SODA 也可以用 Java 集合对象实现Q在开发过E中一定要形成某种l一的开发模式,q样 db4o 才能最高效能地为我所用?/p>

参考资?/font>

学习

获得产品和技?/b>
  • db4o 官方|站Qdb4o 最C息以?db4o 下蝲?br />
  • 下蝲 db4o 对象数据库管理工?ObjectManager 1.8 for Windows?/li>

作者简?/p>


  Rosen Jiang 来自成都Q是 db4o ?OO 的忠?fansQ是 2005 q?db4o ?dvp 获得者之一。他正在 J2me 应用中?db4oQ你可以通过 rosener_722@hotmail.com 和他联系?

  Chris 来自香港Q热爱开源和 db4o。他创办了中国最火热?Java 和开源社?MatrixQ?a >http://www.Matrix.org.cnQ, 你可以通过 chris@Matrix.org.cn 和他联系?br /> 
  张黄瞩,热爱开源YӞ熟悉 Java/C/C++ ~程语言Q对数据库技术网l技术均感兴。你可以通过 zhanghuangzhu@gmail.com 联系他?br />
IBM DeveloperWorks(IBM DW) 版权所有!引用、{贴本文应注明本文来自 IBM DW?/font>



Rosen 2006-11-21 14:21 发表评论
]]>
db4o q接?/title><link>http://www.tkk7.com/rosen/archive/2006/09/27/72314.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Wed, 27 Sep 2006 07:26:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2006/09/27/72314.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/72314.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2006/09/27/72314.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/72314.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/72314.html</trackback:ping><description><![CDATA[ <p>q几天花了点旉弄了?db4o q接池,比较单,q接池原型是论坛上面的一文章。很单,Ƣ迎拍砖?br /><br />?servlet 开始,在这里初始化q接池:</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #0000ff">package</span> <span style="COLOR: #000000"> com;<br /><br /></span> <span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000"> java.io.File;<br /></span> <span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000"> java.util.Enumeration;<br /><br /></span> <span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000"> javax.servlet.ServletConfig;<br /></span> <span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000"> javax.servlet.ServletException;<br /></span> <span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000"> javax.servlet.http.HttpServlet;<br /><br /><br /></span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000"> ConnectionPollServlet </span> <span style="COLOR: #0000ff">extends</span> <span style="COLOR: #000000"> HttpServlet {<br />    <br />    </span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">final</span> <span style="COLOR: #000000"> String XML_FILE_PROPERTY </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">xmlFile</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br />    <br />    </span> <span style="COLOR: #008000">/**</span> <span style="COLOR: #008000"> <br />     * servlet init<br />     </span> <span style="COLOR: #008000">*/</span> <span style="COLOR: #000000"> <br />    </span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> init(ServletConfig servletConfig) </span> <span style="COLOR: #0000ff">throws</span> <span style="COLOR: #000000"> ServletException{<br />        </span> <span style="COLOR: #0000ff">super</span> <span style="COLOR: #000000">.init(servletConfig);<br />        String appDir </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> servletConfig.getServletContext().getRealPath(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br />        Enumeration names </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> servletConfig.getInitParameterNames();<br />        </span> <span style="COLOR: #0000ff">while</span> <span style="COLOR: #000000">(names.hasMoreElements()){<br />            String name </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> (String) names.nextElement();<br />            String value </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> servletConfig.getInitParameter(name);<br />            </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000"> (name.equals(XML_FILE_PROPERTY)) {<br />                File file </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> File(value);<br />                </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000"> (file.isAbsolute()) {<br />                    XMLReader.configure(value);<br />                } </span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000"> {<br />                    XMLReader.configure(appDir </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> File.separator </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> value);<br />                }<br />            }<br />        }<br />    }<br /><br />    </span> <span style="COLOR: #008000">/**</span> <span style="COLOR: #008000"> <br />     * servlet destroy<br />     </span> <span style="COLOR: #008000">*/</span> <span style="COLOR: #000000"> <br />    </span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> destroy() {<br />        </span> <span style="COLOR: #0000ff">super</span> <span style="COLOR: #000000">.destroy();<br />        ConnectionPoll.destroy();<br />    }<br />}</span> </div> <br />然后?XML 解析c:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> com;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.File;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.dom4j.Document;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.dom4j.DocumentException;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.dom4j.Element;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.dom4j.io.SAXReader;<br /><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> XMLReader {<br /><br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * parse XML file<br />     * </span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000"> xmlFileName<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> configure(String xmlFileName) {<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            File file </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(xmlFileName);<br />            SAXReader reader </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SAXReader();<br />            Document doc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> reader.read(file);<br />            Element root </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> doc.getRootElement();<br /><br />            String fileName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> file.getParent()</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br />                </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">root.elementText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">fileName</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            String sport </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> root.elementText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">port</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            String sminConn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> root.elementText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">minConn</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            String sidelTime </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> root.elementText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">idelTime</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><br />            </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> port </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Integer.parseInt(sport);<br />            </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> minConn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Integer.parseInt(sminConn);<br />            </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> idelTime </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Integer.parseInt(sidelTime);<br /><br />            ConnectionPoll.init(fileName,port,minConn,idelTime);<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (DocumentException e) {<br />            e.printStackTrace();<br />        }<br />    }<br />}</span></div><br /><br />q接池类Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> com;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.concurrent.ConcurrentLinkedQueue;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.db4o.Db4o;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.db4o.ObjectContainer;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.db4o.ObjectServer;<br /><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ConnectionPoll {<br /><br />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> idelTime;<br />    <br />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> ConcurrentLinkedQueue</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ObjectContainer</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> connectionQueue;<br />    <br />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> ConnectionPoll(){<br />    }<br />    <br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * init pool<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> init(String fileName,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> port,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> minConn,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> it) {<br />        idelTime</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">it;<br />        ObjectServer objectServer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Db4o.openServer(fileName,port);<br />        connectionQueue </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ConcurrentLinkedQueue</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ObjectContainer</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">();<br />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">minConn; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br />            connectionQueue.offer(objectServer.openClient());<br />        }<br />    }<br /><br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * get connection<br />     * </span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"> ObjectContainer<br />     * </span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000"> ConnectionTimeoutException <br />     * </span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000"> InterruptedException<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000"> ObjectContainer getConnection() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> ConnectionTimeoutException{<br />        </span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000"> expiration </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.currentTimeMillis() </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> idelTime;<br />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (connectionQueue.isEmpty())<br />        {<br />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (expiration </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> System.currentTimeMillis())<br />            {<br />                </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ConnectionTimeoutException(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">connection timeout!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            }<br />        }<br />        ObjectContainer objectContainer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> connectionQueue.poll();<br />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> objectContainer;<br />        }<br /><br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * release connection<br />     * </span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"> ObjectContainer<br />     * </span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000"> InterruptedException<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> releaseConnection(ObjectContainer objectContainer) {<br />        connectionQueue.offer(objectContainer);<br />    }<br />    <br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * destroy connection<br />     *<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> destroy() {<br />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (connectionQueue.iterator().hasNext()){<br />            ObjectContainer objectContainer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> connectionQueue.poll();<br />            objectContainer.close();<br />        }<br />    }<br />}</span></div><br />时异常c:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> com;<br /><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ConnectionTimeoutException </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Exception{<br /><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ConnectionTimeoutException()<br />    {<br />    }<br /><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ConnectionTimeoutException(String s)<br />    {<br />        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">(s);<br />    }<br />}</span></div><br />XML 配置文gQ从上到下依ơ是Q数据库文g名、端口、初始连接数、等待时_<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">config</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">fileName</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">auto.yap</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">fileName</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">port</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">1010</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">port</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">minConn</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">10</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">minConn</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">idelTime</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">1000</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">idelTime</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">config</span><span style="COLOR: #0000ff">></span></div><br />web.xml 用于初始化的时候加载:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff"><!</span><span style="COLOR: #ff00ff">DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">ConnectionPoll</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">com.ConnectionPollServlet</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">xmlFile</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">WEB-INF/poolConfig.xml</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />      </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">1</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">></span></div><br /><br />数据库文件和参数配置文g都放?WEB-INF 文g夹下。这个连接池q未实现 maxConnQ最大连接数Q和对多数据库文件的支持以及日志{?br /><br /><br /><strong><font face="Arial" color="#ff0000" size="2">h意!引用、{贴本文应注明原作者:Rosen Jiang 以及出处Q?/font></strong><a href="/rosen"><font face="宋体" color="#ff0000" size="2"><strong>http://www.tkk7.com/rosen</strong></font></a><img src ="http://www.tkk7.com/rosen/aggbug/72314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2006-09-27 15:26 <a href="http://www.tkk7.com/rosen/archive/2006/09/27/72314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dRS 产品信息 V1.0Q中文版Q?/title><link>http://www.tkk7.com/rosen/archive/2006/08/09/62669.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Wed, 09 Aug 2006 15:14:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2006/08/09/62669.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/62669.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2006/08/09/62669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/62669.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/62669.html</trackback:ping><description><![CDATA[     摘要: "dRS Product Information V1.0" 中文版发布了Q请在这里下载: dRS 产品信息 V1.0 中文? ? -------------------------------------------1.0 版本 ...  <a href='http://www.tkk7.com/rosen/archive/2006/08/09/62669.html'>阅读全文</a><img src ="http://www.tkk7.com/rosen/aggbug/62669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2006-08-09 23:14 <a href="http://www.tkk7.com/rosen/archive/2006/08/09/62669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源面向对象数据库 db4o 之旅: 初识 db4o“db4o 之旅Q一Q?/title><link>http://www.tkk7.com/rosen/archive/2006/06/15/53094.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Thu, 15 Jun 2006 13:39:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2006/06/15/53094.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/53094.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2006/06/15/53094.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/53094.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/53094.html</trackback:ping><description><![CDATA[     摘要: 很多开发者对 hibernate 性能表示|疑Q下一ơ技术革C是什么呢Q——对象数据库 <br>本文?db4o 之旅pd文章的第一,介绍了面向对象数据库 db4o 的基本特性,q且与传l关pd数据库以?OR 映射技术做了比较分析,读者可以体验到 db4o 的全新的面向对象存储的理念,q且l出了性能试数据?nbsp; <a href='http://www.tkk7.com/rosen/archive/2006/06/15/53094.html'>阅读全文</a><img src ="http://www.tkk7.com/rosen/aggbug/53094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2006-06-15 21:39 <a href="http://www.tkk7.com/rosen/archive/2006/06/15/53094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>持久对象原生数据库查询语aQ中文版Q?/title><link>http://www.tkk7.com/rosen/archive/2006/02/26/32519.html</link><dc:creator>Rosen</dc:creator><author>Rosen</author><pubDate>Sun, 26 Feb 2006 12:21:00 GMT</pubDate><guid>http://www.tkk7.com/rosen/archive/2006/02/26/32519.html</guid><wfw:comment>http://www.tkk7.com/rosen/comments/32519.html</wfw:comment><comments>http://www.tkk7.com/rosen/archive/2006/02/26/32519.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/rosen/comments/commentRss/32519.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosen/services/trackbacks/32519.html</trackback:ping><description><![CDATA[     摘要: 持久对象原生数据库查询语a 设计白皮?   ...  <a href='http://www.tkk7.com/rosen/archive/2006/02/26/32519.html'>阅读全文</a><img src ="http://www.tkk7.com/rosen/aggbug/32519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosen/" target="_blank">Rosen</a> 2006-02-26 20:21 <a href="http://www.tkk7.com/rosen/archive/2006/02/26/32519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://wulegu.com" target="_blank">ŮڵƵվ</a>| <a href="http://www282pp.com" target="_blank">ۺ߹ۿ</a>| <a href="http://youtobey.com" target="_blank">߹ۿëƬ</a>| <a href="http://pyjxyey.com" target="_blank">պAVһ</a>| <a href="http://7299jj.com" target="_blank">ɫ͵͵޵һۺ</a>| <a href="http://xhm33.com" target="_blank">99ɫƷ88</a>| <a href="http://ynkmht.com" target="_blank">ۺϳ߹ۿ</a>| <a href="http://ryhjled.com" target="_blank">ҹƵ</a>| <a href="http://miyatb.com" target="_blank">պƬѿ</a>| <a href="http://htsp777.com" target="_blank">޹Ʒѹۿ</a>| <a href="http://hezuoedu.com" target="_blank">þþùƷר</a>| <a href="http://43sihu.com" target="_blank">ɫƵѹۿ</a>| <a href="http://zjjtejia.com" target="_blank">ŮƵӴȫƵѵ</a>| <a href="http://vod8090.com" target="_blank">Ʒ456߲</a>| <a href="http://0515bh.com" target="_blank">ձ߲</a>| <a href="http://350725.com" target="_blank">avպav</a>| <a href="http://xxxxyz.com" target="_blank">޹ƷSSS߹ۿAV</a>| <a href="http://gdporun.com" target="_blank">޾ƷþþþAV鶹</a>| <a href="http://ulihix.com" target="_blank">ѹۿԭվ</a>| <a href="http://www-474749.com" target="_blank">2019Ļmvѿ</a>| <a href="http://hzczj.com" target="_blank">˵ĺÿѹۿƵ</a>| <a href="http://0730jxpm.com" target="_blank">1000ƬƵѿ</a>| <a href="http://snsdtv.com" target="_blank">ƷһëƬ</a>| <a href="http://815389.com" target="_blank">һƵ</a>| <a href="http://9797ww.com" target="_blank">ձһ</a>| <a href="http://juytv.com" target="_blank">Ƶ㶮</a>| <a href="http://66661660.com" target="_blank">һѹۿƵ</a>| <a href="http://vvihh.com" target="_blank">һëƬ</a>| <a href="http://www04ggg.com" target="_blank">һҹaëƬƵ</a>| <a href="http://biarn.com" target="_blank">**ɫëƬѹۿ</a>| <a href="http://78555yy.com" target="_blank">һĻ</a>| <a href="http://w6446.com" target="_blank">һػɫѴƬƵ</a>| <a href="http://ydysmedia.com" target="_blank">һaɫƬþٸһHƬѷ</a>| <a href="http://dghxm168.com" target="_blank">avɫ㽶һ</a>| <a href="http://aqd1987.com" target="_blank">޹ľƷ</a>| <a href="http://jte-sh.com" target="_blank">޹AV߲</a>| <a href="http://liulian88.com" target="_blank">þþƷAVӰ</a>| <a href="http://wwwfafa98.com" target="_blank">aƬձþ</a>| <a href="http://815389.com" target="_blank">̱߳ˬƵ99</a>| <a href="http://nzzys.com" target="_blank">һëƬaѲɫӰ</a>| <a href="http://bixnu.com" target="_blank">ŮһһˬƵ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>