Article View: pl.comp.lang.ruby
Article #506Re: pan od Hibernate chyba nie lubi Ruby
From: climbus
Date: Sat, 26 May 2007 18:59
Date: Sat, 26 May 2007 18:59
104 lines
5972 bytes
5972 bytes
> Masz na myśli HQL? Wiele osób go krytykuje. Wiele osób krytykuje Railsa > Po pierwsze, trzeba się uczyć > kolejnego języka, który ani nie jest łatwy ani aż tak elastyczny jak byś > myślał. Rozumiem, że łatwiej nauczyć się kilku dialektów SQL'a. > Po drugie, SQL jest znacznie łatwiejszy do testowania i > optymalizacji od HQL'a. W czym jest łatwiejszy do testowania? Część optymalizacji myślę (akurat nie jestem pewien) robi Hibernate znając specyfikę danego dialektu, zna specyfikę silnika. > Wiadomo, że pewne optymalizacje są specyficzne dla > danego silnika. Tak samo inne cechy. Podałem ci w drugim poście przykład > stworzenia pól sortujących się wg reguł języka polskiego i hiszpańskiego. > Jestem ciekaw jak to zaimplementujesz w HQL aby działało też z PostgreSQL. Co ma tworzenie tabel z hql? W Hibernate jest dodatkowe narzędzie do tworzenia tabel ale to jest tylko pomocnik. Mapuje się raczej stworzone tabele. W tej skali projektach raczej od tworzenia tabel, testowania i optymalizacji są całkiem inne działy. > > Jak jeszcze masz złudzenia co do tego, że Hibernate nie jest niezależny od > silnika, to proszę abyś wyraził obiektowo, bez uciekania się do > nieprzenośnej konstrukcji SQL taką kwerendę (tu dla odmiany wziąłem > przykład dla PostgreSQL, z artykułu http://www.throwingbeans.org/postgresql_and_xml.html) > > SELECT > article_id, xpath_string(article_xml,'/beatles/@id') AS beatle_id > FROM > t_articles > WHERE > xpath_bool(article_xml,'/beatles/beatle[@alive="yes"]'); > Zawsze można znaleźć jakieś konstrukcje lub ficzery, które nie są przenośne, lecz nie w tym rzecz. Jeżeli masz projekt, który wiesz na jakim silniku będzie chodził i używał elementów danego silnika, które nie są dostępne pod innymi silnikami to spokojnie możesz używać native sqla. Tylko w takim przypadku gdzie ta moc ROR? Hibernate daje możliwość mapowania poszczególnych zapytać na dowolne obiekty. RoR też ma coś podobnego ale dużo bardziej prostego. > Gdyby Hibernate był faktycznie zapewniał takie uniwersalne, niezależne od > bazy mapowanie obiektowe, to by ludzie nie wymyślali projektu iBATIS, > ktory dla odmiany opiera się na czystym SQL zapakowanym me metody > obiektowe. > Z tego co mi sie wydaje to iBatis jest starszy niż Hibernate. Więc jak czysty SQL jest taki super to poco ludzie tworzyli Hibernate. Z drugiej strony jeżeli ActiveRecord jest taki super to poco powstał "iBATIS for Ruby"? Twoje teoria runęła. >> Wg mnie w ActiveRecord za dużo jest native sql'a i trzeba uważać na >> konstrukcje aby były zgodne z różnymi dialektami. > Podaj lepiej jakiś przykład, bo nie wiem co masz na myśli. Całe "conditions" to zwykły SQL. Przy bardziej skomplikowanych zapytaniach i warunkach robi się bałagan. Hibernate ma "criteria" które można łatwo dodawać a wszystko jest parsowane pod względem typów. > Po pierwsze, ten facet nie rozumie, że RoR nie został zaprojektowany aby > konkurować z wielkimi, korporacyjnymi rozwiązaniami operującymi na > skompplikowanych strukturach tabel. A jakie środowisko krzyczało, że jest Java killerem. Że Java umiera. Więc jak Java umiera a Rails nie został zaprojektowany do skomplikowanych systemów to co ma być zamiast Javy? A tak na serio. Rails jest prostym frameworkiem do prostych systemów i ma prostego i łatwego do nauki ORM'a. Hibernate jest skomplikowanym ORM'em, trudnym do nauki ale też ma o wiele wiele większe możliwości. Oczywiście też używają innych wzorców projektowych (Rails - Active record, Hibernate - Data Mapper). Myślę, ze gościa poruszyła pewność ludzi od Railsa, ze ich framework jest tak wielki że ho, ho a to cała drewniana Java idzie w odstawkę. Brakuje w tym środowisku (Rails) trochę skromności i szacunku dla większych i starszych. Środowisko Javy docenia powiew nowych pomysłów i przyspieszyli prace nad połączeniem języków dynamicznych z Javą. Uznane frameworki takie jak Spring wdrażają u siebie takie pomysły jak "konwencja nad konfiguracją". Ale wszystko odbywa się raczej po cichu. A to, że wszystko idzie w stronę ORM'a jest raczej pewne. Pokaż mi współczesny i sprawdzony frameowk, który nie stawia ORM'a na pierwszym miejscu. Muszę dodać, ze sam miałem i mam wątpliwości co do wyższości ORM'a nad nativ SQL'em (za dużo pythonowwego SQLObejct) ale się powoli ich pozbywam (SQLAlchemy, ActiveRecord). -- Climbus http://blog.netstation.pl/
Technical Details
Message-ID:
<1180205941.382620.319120@g4g2000hsf.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!g4g2000hsf.googlegroups.com!not-for-mailReferences:
<3618738.44hQT616bV@zatoichi.homeunix.org> <1ti80tgrvy0t0.1ff5yvkmiwj4e$.dlg@40tude.net> <1180096994.130151.266350@q69g2000hsb.googlegroups.com> <op.tsvy8psmyvsyti@administrators-computer.local>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!g4g2000hsf.googlegroups.com!not-for-mail From: climbus <climbus@gmail.com> Newsgroups: pl.comp.lang.ruby Subject: Re: pan od Hibernate chyba nie lubi Ruby Date: 26 May 2007 11:59:01 -0700 Organization: http://groups.google.com Lines: 122 Message-ID: <1180205941.382620.319120@g4g2000hsf.googlegroups.com> References: <3618738.44hQT616bV@zatoichi.homeunix.org> <1ti80tgrvy0t0.1ff5yvkmiwj4e$.dlg@40tude.net> <1180096994.130151.266350@q69g2000hsb.googlegroups.com> <op.tsvy8psmyvsyti@administrators-computer.local> NNTP-Posting-Host: 88.156.65.8 Mime-Version: 1.0 X-Trace: posting.google.com 1180205954 19062 127.0.0.1 (26 May 2007 18:59:14 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sat, 26 May 2007 18:59:14 +0000 (UTC) In-Reply-To: <op.tsvy8psmyvsyti@administrators-computer.local> User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: g4g2000hsf.googlegroups.com; posting-host=88.156.65.8; posting-account=NnX8LQ0AAAAmPIhsTkw5CCUmCFVF5kgb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit