前天完成ORM中有个小问题,我忽略了,那就是多对一,按我的立即多对一就是一对多,但在多对多的情况下就不是这样了,因为当你做链接时会发现中间的数据表会无法真正融入整个对象集合,原因就是其中有多对一的关系,而我前天自己在实施时的配置也有点问题,居然导致了错误的方法变成了正确的结果,原因在于那天数据的id正好都是1 2 3 4 5 6所以错误的表连接居然恰好变成了正确的结果,发现这个问题之后我迅速的增加了一种外联模式,终于解决了这个巨大的bug。
现在看来ORM的好处不仅是使用方便,更多的是你会对数据表的设计和范式有一个非常深刻的认识,因为在ORM下是不允许错误的数据库范式设计的,我个人体验下来,在ORM下使用,必须达到第二范式标准,如果想完全使用必须达到第三范式,更高的范式现在来看毫无必要,但在以rails为代表的orm中会出现范式越高效率越高的情况,原因就在于他对表的操作很好的把握了delay这个概念,但传统的sql希望是最简单的方法一次取得数据,所以很多老程序员对于范式均会以越低越好著称,因为在他们的理解数据表越冗余,则sql越好些,则查询效率越高,但带来的负面就是数据的不统一和系统扩展维护的复杂度,因此在这个层面上ORM是有意义的,而且绝对应该得到推荐的。
至于效率,昨天在javaeye上看到一个讨论php orm的文章,大多数人都痛骂了php下的orm实现,其实我现在的方案效率也不高,但我觉得在后台上使用尚能接受,而且在代码上确实非常干净这一点正是我想要的东西,现在对于写程序来说,数据库操作变成了配置这是一种享受,这两天应该是心情很愉悦的两天虽然,其实我设计的表由于是标准三范式查询语句极为复杂,但现在却轻松许多,感谢orm这种概念,相信在机器性能大幅提高之后依靠硬件和使用未来的对象数据库之后,orm一定能得到更多的应用。
分享到:
相关推荐
XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该...[CDATA[文本内容]]>CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。
<srvver>1.0</srvver> <srvcode>000</srvcode> <payload> <param type=XML key=data> <![CDATA[ <Response> <Execution> <Status code=0 sql_code=0 description=执行成功!/> </Execution> <ResponseContent...
<preconditions><![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库<br> (UAT数据库IP: 10.0.13.178)<br> 2.数据库脚本已下载至本地环境]]></preconditions><importance><![CDATA[2]]></importance><steps> <step>
[CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></...
[CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml...
ATTLIST 电话 类别 CDATA "移动电话"> ]> <联系人列表> <说明>&content;</说明> <联系人> <姓名>刘保文</姓名> <ID>201003101115</ID> <公司>腾飞汇通有限公司</公司> <电话 类别="移动电话">18993380967</...
[CDATA["&fromusername&"]]></ToUserName>" &_ "<FromUserName><![CDATA["&tousername&"]]></FromUserName>" &_ "<CreateTime>"&now&"</CreateTime>" &_ "<MsgType>news</MsgType>" &_ "<ArticleCount>3</...
自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为<!DOCTYPE PCAroot[ <!ELEMENT PCAroot (Province*)> <!ELEMENT Province (City*)> <!ELEMENT City (Area*)> <!ELEMENT Area (#PCDATA)> <!...
本文给大家解析使用<![CDATA[ ]]>解决xml文件不被转义的问题, 对mybatis 中的<![CDATA[ ]]>相关知识感兴趣的朋友一起看看吧
[CDATA[http://t{$serverpart}.tianditu.cn/DataServer?T=cia_w&X={$x}&Y={$y}&L={$z}]]></url> <serverParts>0 1 2 3 5 6 7</serverParts> <backgroundColor>#00000000</backgroundColor> </customMapSource> </...
[CDATA[gh_33bb5907f91e]]></ToUserName> <FromUserName><![CDATA[ojLh3jkYtiszyEY-_sM_8yrNxSc4]]></FromUserName> <CreateTime>1363231643</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><...
<Author>Microsoft Corporation</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>type</ID> <ToolTip>属性类型...
<Author>Microsoft Corporation</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>type</ID> <ToolTip>属性类型...
<description>Description goes here</description> <author>Author OfTheTemplate</author> <point name="NameOfPoint"> <text>default text here</text> <hint>hint for the user</hint> </point> <code ...
[CDATA[//><!-- var scrollPic_02 = new ScrollPic(); scrollPic_02.scrollContId = "ISL_Cont_1"; //内容容器ID scrollPic_02.arrLeftId = "LeftArr";//左箭头ID scrollPic_02.arrRightId = "RightArr"; //...
[CDATA[10]]></LoginTimeOut> <QueryTimeOut><![CDATA[3600]]></QueryTimeOut> 原始set.xml数据库连接节点缺少以上两个节点请添加,LoginTimeOut为数据库连接超时时间,单位秒,QueryTimeOut为SQL语句执行超时时间...
[CDATA[Because we can.]]> © </body></html> HERE; $html5 = new HTML5(); $dom = $html5->loadHTML($html); print "Converting to HTML 5\n"; $html5->save($dom, fopen("php://stdin", 'w'));
[CDATA[电子客票告知单(网络版)]]></UpdateAppTitle> <Help> :: 技术支持 (Jason.Song)</Help> <Server>socket.jinri.cn</Server> <Port>9789</Port> <InstallPackage>...
<sex>girl</sex><!--这个sex和teacher根元素中的sex发生命名冲突--> </student> </teacher> 2、名域的声明 (1)直接定义 xmlns:名域前缀="名域的URI"(唯一性) 类比:名字与身份证 名域的使用,名域...
android 使用saxparser 解析<![CDATA[ ]]>标签数据。 见附件实例