Adv

10/11/2008

LINQ and Hibernate

LINQ 其實有好多野都可以做但都未做得到呢........ IQueryable Provider 未齊人
AD / FileSystem / WMI / LDAP / network / parallel /  WS / MQ .....etc
其實LINQ最方便係佢可以好簡單地convert data from sql to xml, or from sql to json, or from json to xml, or vice verse.

以前要寫好長好長的codes, 三兩句用LINQ就攪掂了……
做左programming咁耐, 有時真係lazy打咁多字.

同埋, 佢本身個類似ORM的tools, 感覺上, 比Hibernate果D好好多……. 我諗主要個原因係, VS managed 左XML generation果part, 而且有IDE 幫手可以好快咁define association between entities, 呢個我覺得令到佢比hibernate方便………

Commented by PakPak

試想想..... NTFS 之類又 hardlink, softlink 又 junction point.......
from x in C:
depth 5
where filename.endsWith(*.txt)
distinct file.FileRef
select new{file.FullPath, file.mimeType};
之類會好有用; 至少一定好過 Unix 個 `find` syntax

我都有走去問佢可唔可以做到 Runtime LINQ compiler...........可惜佢答你可以自己寫: 目前沒有
也就是不可放入 config file, 也不能做到互動式.....

其實 Hibernate 性質又有D唔同

Hibernate 真係 O/R Mapping
我咁睇: ORM 係令到你可以 Presistent 一個 Object 入 RDBMS 而唔係 Object-DB
如果你所有野都係由 object 出發, 唔無視 database design/how it works 就好有用
What you have is a object which presistented to database, and you decide what is an "Object"

而其他 mapping tools, 根本上能只算係
SQL builder / result mapping
如果你有 "query database" 或者 "update table" 之類想法, Hibernate 可以話係完全唔合適

LINQ to SQL 事實上係都係 SQL builder  + result mapping
無 relation, 無 lazy loading, 無 transaction,
What you have is a copy of the data, then you decide how to use "DATA", not "Object"

其實唔同文化理念造就出分別
例如 Java vs C# 咁,

Sun 一直都想 minimum 整套 JDK, bytecode, Java Syntax ;唔想包太多 utility /common class 入去
=> 結果差唔多個個 project 都走去用 apache-common; JRE 都慢慢被迫加入更多新功能而變得更大, 最後唯有放棄 minimum 想法而轉用 Consumer JRE 路線(居然還未放棄 Applet market...)
佢想保持自己 Stupid Simple; 因為原本無想過 Java 會是主力....I was only want to sell more hardware

而且 Java commutity 一直有反動力........sun 根本無咁多 resource 去 sell / press 同埋 bugfix
你見其實重有唔少 1.3 年代的 Feature/bugfix request 到重係 pending, won't fix, reconized, will fix in JDK7
MS 一直都不停咁 extends 個 IDE, 大量 template, toolkit, framework, 改善 C#; 總知有用就加入去
=> VS 巨大化, 怪物化; 精通使用 VS.NET 甚至比精通 Photoshop 或者寫 code 本身更難.

佢根本唔怕 installation package 太大, 或者太多野而更多 bugfix (因為根本無 Java 個 "cross-platform" 理念)
想做到嘅係吸引更多 developer, 做一樣野可以有三種選擇
佢想令到 Development Stupid Simple

也就是很多 Programmer 討厭的 VB 式 drag-n-drop 寫 code 方式.........
但事實上,手動改很多事情的空間不少(只要你知道)

你提是你能不能找得對的文件/問對人
和 Java 有點不同, 他們不是每一件事都 open to public.......

Sun 是想改變 stupid programmer (They should know what they are doing. It is powerful, but take are it yourself)
MS 則是接愛 stupid programmer (They can code in VS, even they should know. Whatever, it works),

2 則留言:

Pakpak 說...

LINQ to SQL 有relation ga... (如果我無get錯你想講的野的話)....

晌IDE, 你可以right click on the class then add "association"...... 又或者, 你自己改佢個xml file加上去都得

至於transaction, 都有的, 你要自己initialize一個TransactionScope的object..........
http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic20

而lazy loading........ 某程度上都係有的
http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic11 <--- look for deferred loading

Dennis 的無差別 Blog» Blog Archive - » LINQ and Hibernate 2 說...

[...] Commented by PakPak [...]