竟 然64個annotation,沒有分類,放在同一個package下,同一個package(javax.persistance)還有其他java文 件,共有88個java文件。不看內(nèi)容本身,單從表面,都覺得這是混亂不堪的事情。這是那個豬頭的杰作?glassfish上下載的源碼中,這些java 文件似乎都沒有author,估計也不好意思把名字放出來見人吧!

          ------

          覺得對象關(guān)系存儲方面一直沒有突破,也沒有好的產(chǎn)品出來,其中一個原因,就是從沒有過優(yōu)秀的工程師投身過這個領(lǐng)域。關(guān)系數(shù)據(jù)庫為什么能夠一直堅守領(lǐng)地,成為絕大多數(shù)商業(yè)應(yīng)用的基石,其中一個原因就是有過大量的精英投身于此,包括兩個圖靈獎獲得者。

          關(guān) 系數(shù)據(jù)庫,為了描述關(guān)系,創(chuàng)造一門SQL語言,將關(guān)系一些操作,例如投影(select)、選擇(where)、分組(group by)等等,抽象得形象易懂,功能強大。對于數(shù)據(jù)的操作,SQL語言是最強大,也是最方便的,也是最易于使用的。一些非程序員的IT從業(yè)人員,非計算機專 業(yè)的人員都能夠熟練掌握SQL。

          OO和Relational都是偉大的技術(shù),從計算機最高榮譽獎可以看出這兩個技術(shù)的偉大。OO的圖靈獎獲得者是三個,Relational的圖靈獎獲得者是兩個。

          面向?qū)ο蠹夹g(shù)自1967年simula引進以來,所想披靡,93年-98年從C++開始流行,然后到Java,成為主流編程技術(shù)。Relational沒有OO那么輝煌,但是在數(shù)據(jù)存儲方面的地位固如磐石,長期占據(jù)絕對的地位。

          曾 經(jīng)OO技術(shù)涉足于數(shù)據(jù)存儲領(lǐng)域,但終究沒有成功。面向?qū)ο髷?shù)據(jù)庫的變現(xiàn)總是差強人意,面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù),總是不如使用關(guān)系那么方便,那么靈活,那么 易于使用,那么好的性能。于是人們在數(shù)據(jù)存儲和處理方面,不在青睞面向?qū)ο蠹夹g(shù),而是仍然使用關(guān)系方式,使用SQL語言,使用關(guān)系運算操作數(shù)據(jù)。面向?qū)ο? 數(shù)據(jù)庫成了曇花一現(xiàn)的東西,并且可能永遠都不會再流行了。

          OO成了主流編程技術(shù),Relational占據(jù)了絕對的數(shù)據(jù)存儲地位,這兩大技術(shù)需要交互,需要橋接,這需要OR-Mapping。Relational雖然好,但我們也要與時俱進,所以也需要OR-Mapping。

          但 是,做OR-Mapping時,不積極吸取relational方式對數(shù)據(jù)處理的靈活性、方便性、簡單性,而只強調(diào)Relational和對象之間的的 Mapping,試圖以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù),這是錯誤的方向。以前的EJB、現(xiàn)在Hibernate、JPA都犯了同樣的錯誤,試圖以更面向?qū)ο蟮姆? 式操作數(shù)據(jù),從而導(dǎo)致復(fù)雜混亂的模型,這也是JPA的現(xiàn)狀吧。例如user.getGroup(),目前的ORM試圖以純OO的方式操作數(shù)據(jù),所引起的 LazyLoad、n+1等問題,使得事情變得復(fù)雜而且混亂不堪。

          一些開發(fā)人員,去學(xué)習(xí)Hibernate,不學(xué)習(xí)SQL,有人提倡,只需要了解面向?qū)ο缶幊碳夹g(shù),不需要了解關(guān)系技術(shù),亦屬于本末倒置。需求人員都會用的SQL語言,對數(shù)據(jù)操作最方便最簡單最強大的SQL語言,竟然成了令人生畏的紙老虎,可笑啊。

          -------------

          以下是過去的一些業(yè)界浮躁不理智:

          1、面向?qū)ο髷?shù)據(jù)庫。曾被熱衷而吹捧,面向?qū)ο髷?shù)據(jù)庫的變現(xiàn)總是差強人意,面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù),總是不如使用關(guān)系那么方便,那么靈活,那么易于使用,那么好的性能。于是人們在數(shù)據(jù)存儲和處 理方面,不在青睞面向?qū)ο蠹夹g(shù),而是仍然使用關(guān)系方式,使用SQL語言,使用關(guān)系運算操作數(shù)據(jù)。面向?qū)ο髷?shù)據(jù)庫成了曇花一現(xiàn)的東西,并且可能永遠都不會再 流行了。

          2、 JDO投票鬧劇。2004-2005年,JDO的JSR在JCP投票被否決的,無聊者在Java社區(qū)以及媒體發(fā)起鬧事,陰謀論其為政治謀殺,幾大公司是的 迫于形象,重新投票使得JDO被通過,但JDO這種靜態(tài)AOP叫雕蟲小計式技術(shù),不單開發(fā)過程不方便,而且會使得"enhance"之后的代碼不可調(diào)試。 這完全是對開發(fā)者不友好的技術(shù),沒有前途的技術(shù),竟然會有人為它在JCP投票不通過鳴不平。這件事情使得我更堅信一點,不要相信那些技術(shù)編輯的判斷力。

          3、 AOP。也是最近這幾年流行的一個名詞了。起了一個和OOP相似的名字,但是和偉大的OOP相比,它完全不算是什么。AOP只是一種很小很小的技巧而已, 靜態(tài)的AOP是黑客式的插入代碼,會導(dǎo)致代碼不可調(diào)試,動態(tài)的AOP能力有限,AOP最常被引用例子“日志AOP”是不合適,有用的日志通常是精心設(shè)計 的,AOP方式的日志在生產(chǎn)環(huán)境中基本上是不可用。OO這么多年,這么為偉大,人們總是希望自己能做點什么和偉大的OO相比,于是命名為AOP,這是一個 可笑的名字,前些年還有人談?wù)撁嫦驅(qū)ο蟮奈磥硎敲嫦蚴聦?,也是同樣的可笑。AOP有價值,但它是一種小技巧,和名字不般配。

          --------------

          目前在流行,但是可能是不理智的技術(shù):

          1、hibernate之類的ORM,試圖以面向?qū)ο蠓绞讲僮鲾?shù)據(jù),和面向?qū)ο髷?shù)據(jù)庫一樣,重蹈覆轍。
          2、Ruby,一個小腳本語言,只是因為動態(tài)類型、mixin之類的功能,還沒有被證明有生產(chǎn)力,有效益可用的腳本語言,就被媒體吹到天上去。Ruby有價值,但是最終結(jié)果會離大家的期待相差甚遠。
          posted on 2008-02-02 02:56 溫少的日志 閱讀(5268) 評論(19)  編輯  收藏
          Comments
          • # re: JPA這個爛東西
            RoBeRt
            Posted @ 2008-02-02 04:28
            看你對hibernate都不了解
            更被說ruby了 可笑  回復(fù)  更多評論   
          • # re: JPA這個爛東西[未登錄]
            qqinxl
            Posted @ 2008-02-02 08:19
            Ruby,一個小腳本語言,只是因為動態(tài)類型、mixin之類的功能...
            --------------------------------------------------
            這就是你的觀點?
            嚴(yán)謹一點吧。
              回復(fù)  更多評論   
          • # re: JPA這個爛東西
            再見理想
            Posted @ 2008-02-02 09:05
            看你初學(xué),不說你了。以后這種無知文章不要亂發(fā)表,很黃,很暴力啊  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            GaoYP
            Posted @ 2008-02-02 09:27
            非常同意作者對ORM的觀點。.NET下的Linq在錯誤的方向上走的更遠。用Hibernate或JPA進行復(fù)雜的查詢和自殺相差無幾。我覺的可行的方法是,用Hibernate或JPA作數(shù)據(jù)的增刪改操作,用iBatis作查詢。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            dennis
            Posted @ 2008-02-02 09:39
            不了解的東西不要開口
            AOP不能用于生產(chǎn)環(huán)境?spring的事務(wù)處理就是用AOP實現(xiàn)的,那么世界上這么多在跑的應(yīng)用都是玩具咯?對于ruby和hibernate的評價就不多說了,不了解的東西不要開口。
            作者是中了OO的毒了  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            searchfull
            Posted @ 2008-02-02 09:47
            溫少好像沒用過hibernate和AOP。
            ORM和關(guān)系數(shù)據(jù)庫不是矛盾競爭的關(guān)系,是合作的關(guān)系。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            dennis
            Posted @ 2008-02-02 09:48
            sorry,看錯了,作者是認為AOP式日志是個不恰當(dāng)?shù)睦樱@點我贊成,不過對于AOP技術(shù)只是“小技巧”的評價絕不敢茍同。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            楊一
            Posted @ 2008-02-02 10:33
            技術(shù)場景不同,歸根結(jié)底,IT是服務(wù)于業(yè)務(wù)的,當(dāng)然也有用于純計算的,不過市場份額不大。對我們沒有用的東西不一定對別人也沒有用。
            比如說,有人對數(shù)據(jù)庫操作性能要求很高,關(guān)系很復(fù)雜,數(shù)據(jù)量很大。那么他可能考慮不用Hibernate而直接用JDBC或其他更底層的方式。就好象操作系統(tǒng)的內(nèi)核為了效率要使用一部分匯編一樣。但是更多的情況可能不是如此。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            BeanSoft
            Posted @ 2008-02-02 10:52
            框架看多了 也會審美疲勞的。。。呵呵,不管啥技術(shù),能給老總帶來¥就是好技術(shù)。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            Mikecool
            Posted @ 2008-02-02 10:58
            幼稚,Glassfish的JPA包算是JSR規(guī)范的reference package,當(dāng)然沒有author

            別的都不說你了,還是老老實實去寫兩個框架再來評價別人的東西  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            keith
            Posted @ 2008-02-02 18:19
            表一棒把人打死,技術(shù)本身就它的有優(yōu)點和缺點的  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            flybean
            Posted @ 2008-02-03 08:54
            1)關(guān)系型數(shù)據(jù)庫模式的提出和 SQL 語言的發(fā)明:

            1970 年 IBM 研究中心的 E.F.Codd 博士提出了關(guān)系型的數(shù)據(jù)庫模式,奠定了關(guān)系型數(shù)據(jù)庫日后發(fā)展的理論基礎(chǔ),并為此于 1981 年榮獲計算機科學(xué)界的最高榮譽獎 ACM 圖靈獎。1973年 IBM 研究中心開始了一個大的關(guān)系型數(shù)據(jù)庫系統(tǒng)研究項目 System R,探討并驗證在多用戶與大量數(shù)據(jù)下關(guān)系型數(shù)據(jù)庫的實際可行性。在 D.Chamberlin 博士的領(lǐng)導(dǎo)下System R的一個研究小組發(fā)明了一套比關(guān)系微積分與關(guān)系代數(shù)更適合最終用戶使用的非程序化查詢語言 SQL [Chamberlin74,76,80]。從此,基于 SQL 的關(guān)系型數(shù)據(jù)庫逐漸成為了數(shù)據(jù)庫管理系統(tǒng)的主流。目前所有的關(guān)系型數(shù)據(jù)庫廠家的產(chǎn)品都遵循這一標(biāo)準(zhǔn)。由于 System R 與SQL 對關(guān)系型數(shù)據(jù)庫管理系統(tǒng)結(jié)構(gòu)的貢獻,其主要設(shè)計人員于 1988 年獲得了計算機領(lǐng)域中崇高的實用軟件系統(tǒng)獎。

            2)分布式數(shù)據(jù)庫概念及對面向?qū)ο蟮闹С郑?br>
            80年代初期至中期,IBM艾瑪?shù)茄芯恐行牡难芯咳藛T通過System R*研究項目[Lindsay84]探討分布式數(shù)據(jù)庫的實現(xiàn)技術(shù),其研究成果為日后的分布式關(guān)系型數(shù)據(jù)庫架構(gòu)標(biāo)準(zhǔn)DRDA(Distributed Relational Database Architecture)以及建立數(shù)據(jù)倉庫常用到的數(shù)據(jù)復(fù)制等機制提供了技術(shù)來源。

            1984 到 1992 年,IBM艾瑪?shù)茄芯恐行拈_始了一項名為 Starburst 的大型研究計劃[Haas90,Lohman91],旨在建立新一代的、具延伸性的關(guān)系型數(shù)據(jù)庫原型。所謂延伸性是指數(shù)據(jù)庫各子系統(tǒng)實現(xiàn)開放性,使用戶能夠很容易地把新功能加注到一個 SQL 關(guān)系型數(shù)據(jù)庫里,以便支持新的應(yīng)用。通過把類似面向?qū)ο蟮某橄髷?shù)據(jù)類型(Abstract Data Type)與繼承性(Inheritance)融入 SQL 語言及關(guān)系型數(shù)據(jù)庫核心的做法,Starburst容許系統(tǒng)內(nèi)部與外部的功能被延伸。與此同時 Starburst 研究人員在查詢改寫優(yōu)化處理(query rewrite optimization),特別是索引結(jié)構(gòu)(specialized indices),日志預(yù)寫恢復(fù)技術(shù)(recovery method based on write-ahead logging),主動數(shù)據(jù)庫技術(shù)(active database)等方面皆有創(chuàng)新的貢獻。Starburst 的研究項目產(chǎn)生了大量的修正基本數(shù)據(jù)庫結(jié)構(gòu)的文獻與專利。如同 System R 推動了 SQL 關(guān)系型數(shù)據(jù)庫的商業(yè)化一般,Starburst提供了新一代商用對象關(guān)系型數(shù)據(jù)庫(Object-relational Database)寶貴的經(jīng)驗與技術(shù)來源。

            DB2 在面向?qū)ο髷?shù)據(jù)庫技術(shù)上的發(fā)展目標(biāo)是對象關(guān)系型數(shù)據(jù)庫,它是以關(guān)系型數(shù)據(jù)庫的架構(gòu)為基礎(chǔ),加入面向?qū)ο蟮墓δ堋_@有別于所謂的 OO Database,OO Database 不是關(guān)系型數(shù)據(jù)庫,而是以對象為目的所建立的一種新數(shù)據(jù)結(jié)構(gòu)?,F(xiàn)在計算機科學(xué)界以及數(shù)據(jù)庫工業(yè)在面向?qū)ο蟮淖呦蚍矫?,是以這種對象關(guān)系型數(shù)據(jù)庫為主流。DB2 面向?qū)ο蟮募夹g(shù)及其實施領(lǐng)先群雄。當(dāng)其它數(shù)據(jù)庫公司還在探討面向?qū)ο蠹夹g(shù)融入數(shù)據(jù)庫的可能性時,IBM就已在1995 年推出這些最先進的東西。它在新的數(shù)據(jù)庫國際標(biāo)準(zhǔn)(SQL3)的研討和形成上,也一直處于領(lǐng)導(dǎo)者地位,它完善的 OO 結(jié)構(gòu)已經(jīng)存在于產(chǎn)品內(nèi)核里。IBM 正以滾雪球的驚人速度在開發(fā)其他更先進的功能,例如對復(fù)雜數(shù)據(jù)的更深層次優(yōu)化,抽象數(shù)據(jù)類型(Abstract Data Type)等等。

            對象數(shù)據(jù)庫DB4O應(yīng)用也比較廣泛,雖然目前主要集中在嵌入式應(yīng)用中.隨著技術(shù)的發(fā)展,理論的發(fā)展(關(guān)系型數(shù)據(jù)庫理論自其出現(xiàn)以來這么多年已經(jīng)很成熟\穩(wěn)定),不排除對象數(shù)據(jù)庫大放異彩的一天.

            不可否認,ORM在增刪改的操作上的確可以簡化開發(fā)量,但對于查詢,尤其是復(fù)雜查詢,還是得通過SQL來完成,并征對不同的數(shù)據(jù)庫進行優(yōu)化.
              回復(fù)  更多評論   
          • # re: JPA這個爛東西
            杭州青鳥
            Posted @ 2008-02-03 12:11
            O/R Mapping是一個偉大的技術(shù),它使程序員可以將大部分精力放在業(yè)務(wù)邏輯上,而不會為數(shù)據(jù)庫這端的編程有后顧之憂。但是任何技術(shù)都不是銀彈,可以解決一切問題,hibernate也留了sql query的口子,博主完全可以施展自己在SQL上的超深造詣,何必為了一點的不方便而大放厥詞呢?照博主這么說,中國也不要改革開放了,大家一起窮死算了。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            太陽里的雪
            Posted @ 2008-02-03 15:38
            orm肯定不適合那些大型網(wǎng)站,如到時候的分庫分表等,顯得無能為力。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            海邊沫沫
            Posted @ 2008-02-03 18:14
            @太陽里的雪
            誰說的?
            至于分庫分表,關(guān)鍵在于設(shè)計,和使不使用Hibernate沒有關(guān)系。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            香草的天空
            Posted @ 2008-02-12 12:50
            樓主我看是把理論和實現(xiàn)混淆了。
            一個東西,理論可能很先進,但是實現(xiàn)起來會有這樣那樣的問題。
            不過實現(xiàn)的不好不代表這個理論就廢掉了。

            現(xiàn)在潮流的大方向是簡單化,傻瓜化,提高生產(chǎn)性,降低技術(shù)難度。所以hibernate,aop,包括Linq應(yīng)運而生,這是需求的產(chǎn)物。在大規(guī)模開發(fā)中,從資金,時間都不可能要求coder們都有很高手的水平,犧牲一定的性能提高開發(fā)效率是大勢所趨?;蛟S再過10年,就不需要你寫什么SQL了,在ER圖里拖拖拉拉就可以生成SQL,和現(xiàn)在做網(wǎng)頁一樣。呵呵。

            hibernate我也看過它的一點源代碼。hibernate的優(yōu)點我看主要是輕量級的封裝,它里面的設(shè)計也很好,我看起來很輕松。至于HQL,把數(shù)據(jù)庫關(guān)聯(lián)的部分再抽象出來,思路正確,但也不是多復(fù)雜的東西。
            對被EJB2.1折磨過的我來說,這樣一個簡單易用易于二次開發(fā)的框架,的確是很滿意了。

            其實hibernate和SQL倒沒什么對立,只不過把SQL封裝了一下。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            香草的天空
            Posted @ 2008-02-12 13:00
            AOP素個好東西,現(xiàn)在的實現(xiàn)上的問題只是因為sun不肯自己去寫一個改bytecode的API而已。
            OpenSource里面的東西沒有經(jīng)過嚴(yán)謹?shù)臏y試自然會有這樣那樣的問題。
            不過估計sun最后自己會拿一個版本去改個官方的實現(xiàn)。
            至于在大項目中的應(yīng)用,2005年一個上千人月的項目中就用了。

            AOP也不是OO的競爭伙伴,而是彌補OO的不足。


            現(xiàn)在的框架我覺得也不需要全理解,搞得很高手,很有技巧,因為這種東西一方面還在完善中,一方面新陳代謝很快。應(yīng)該去理解它的思想,知道他應(yīng)該干什么,怎么去做?;揪蛪蛄?。  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            83xia
            Posted @ 2008-02-17 12:42
            有意思哦  回復(fù)  更多評論   
          • # re: JPA這個爛東西
            垃圾
            Posted @ 2009-02-27 12:05
            我只能說你是井底之蛙!  回復(fù)  更多評論   

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 葫芦岛市| 临城县| 高密市| 开远市| 镇雄县| 湘潭县| 卢龙县| 绍兴县| 南郑县| 陆良县| 萝北县| 岱山县| 晋城| 乌兰察布市| 社会| 容城县| 阳城县| 航空| 腾冲县| 剑河县| 信阳市| 灌云县| 满洲里市| 弋阳县| 清徐县| 汉沽区| 亚东县| 唐河县| 吐鲁番市| 修武县| 察雅县| 黑河市| 榕江县| 保亭| 通许县| 太白县| 布尔津县| 福鼎市| 菏泽市| 广汉市| 陆良县|