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

          ------

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

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

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

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

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

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

          但 是,做OR-Mapping時(shí),不積極吸取relational方式對數(shù)據(jù)處理的靈活性、方便性、簡單性,而只強(qiáng)調(diào)Relational和對象之間的的 Mapping,試圖以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù),這是錯(cuò)誤的方向。以前的EJB、現(xiàn)在Hibernate、JPA都犯了同樣的錯(cuò)誤,試圖以更面向?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ù),亦屬于本末倒置。需求人員都會(huì)用的SQL語言,對數(shù)據(jù)操作最方便最簡單最強(qiáng)大的SQL語言,竟然成了令人生畏的紙老虎,可笑啊。

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

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

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

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

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

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

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

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

            別的都不說你了,還是老老實(shí)實(shí)去寫兩個(gè)框架再來評價(jià)別人的東西  回復(fù)  更多評論   
          • # re: JPA這個(gè)爛東西
            keith
            Posted @ 2008-02-02 18:19
            表一棒把人打死,技術(shù)本身就它的有優(yōu)點(diǎn)和缺點(diǎn)的  回復(fù)  更多評論   
          • # re: JPA這個(gè)爛東西
            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 年榮獲計(jì)算機(jī)科學(xué)界的最高榮譽(yù)獎(jiǎng) ACM 圖靈獎(jiǎng)。1973年 IBM 研究中心開始了一個(gè)大的關(guān)系型數(shù)據(jù)庫系統(tǒng)研究項(xiàng)目 System R,探討并驗(yàn)證在多用戶與大量數(shù)據(jù)下關(guān)系型數(shù)據(jù)庫的實(shí)際可行性。在 D.Chamberlin 博士的領(lǐng)導(dǎo)下System R的一個(gè)研究小組發(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)的貢獻(xiàn),其主要設(shè)計(jì)人員于 1988 年獲得了計(jì)算機(jī)領(lǐng)域中崇高的實(shí)用軟件系統(tǒng)獎(jiǎng)。

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

            1984 到 1992 年,IBM艾瑪?shù)茄芯恐行拈_始了一項(xiàng)名為 Starburst 的大型研究計(jì)劃[Haas90,Lohman91],旨在建立新一代的、具延伸性的關(guān)系型數(shù)據(jù)庫原型。所謂延伸性是指數(shù)據(jù)庫各子系統(tǒng)實(shí)現(xiàn)開放性,使用戶能夠很容易地把新功能加注到一個(gè) SQL 關(guān)系型數(shù)據(jù)庫里,以便支持新的應(yīng)用。通過把類似面向?qū)ο蟮某橄髷?shù)據(jù)類型(Abstract Data Type)與繼承性(Inheritance)融入 SQL 語言及關(guān)系型數(shù)據(jù)庫核心的做法,Starburst容許系統(tǒng)內(nèi)部與外部的功能被延伸。與此同時(shí) Starburst 研究人員在查詢改寫優(yōu)化處理(query rewrite optimization),特別是索引結(jié)構(gòu)(specialized indices),日志預(yù)寫恢復(fù)技術(shù)(recovery method based on write-ahead logging),主動(dòng)數(shù)據(jù)庫技術(shù)(active database)等方面皆有創(chuàng)新的貢獻(xiàn)。Starburst 的研究項(xiàng)目產(chǎn)生了大量的修正基本數(shù)據(jù)庫結(jié)構(gòu)的文獻(xiàn)與專利。如同 System R 推動(dòng)了 SQL 關(guān)系型數(shù)據(jù)庫的商業(yè)化一般,Starburst提供了新一代商用對象關(guān)系型數(shù)據(jù)庫(Object-relational Database)寶貴的經(jīng)驗(yàn)與技術(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)在計(jì)算機(jī)科學(xué)界以及數(shù)據(jù)庫工業(yè)在面向?qū)ο蟮淖呦蚍矫?,是以這種對象關(guān)系型數(shù)據(jù)庫為主流。DB2 面向?qū)ο蟮募夹g(shù)及其實(shí)施領(lǐng)先群雄。當(dāng)其它數(shù)據(jù)庫公司還在探討面向?qū)ο蠹夹g(shù)融入數(shù)據(jù)庫的可能性時(shí),IBM就已在1995 年推出這些最先進(jìn)的東西。它在新的數(shù)據(jù)庫國際標(biāo)準(zhǔn)(SQL3)的研討和形成上,也一直處于領(lǐng)導(dǎo)者地位,它完善的 OO 結(jié)構(gòu)已經(jīng)存在于產(chǎn)品內(nèi)核里。IBM 正以滾雪球的驚人速度在開發(fā)其他更先進(jìn)的功能,例如對復(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ù)庫大放異彩的一天.

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

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

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

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

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


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

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


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 石泉县| 天全县| 开化县| 延长县| 鹤庆县| 象州县| 乳源| 安图县| 拉萨市| 孟连| 定襄县| 双鸭山市| 徐水县| 朝阳市| 靖安县| 廉江市| 昭平县| 海南省| 宁陵县| 彭泽县| 广宗县| 洪洞县| 灵台县| 小金县| 同江市| 吴旗县| 中牟县| 乾安县| 且末县| 漳州市| 吐鲁番市| 永修县| 旅游| 龙泉市| 西林县| 会泽县| 乌鲁木齐市| 沂水县| 晋宁县| 丽江市| 开阳县|