2010-12-03 46 views
25

在上次我聽到很多抱怨冬眠。事實上,我也有一些與休眠有關的痛苦經歷。所以我讀了關於EbeanSienaEbean或Siena有多成熟?

兩者都有有趣的方法。不幸的是,數據庫訪問層很容易編寫,但是如果你的項目增長了,你必須處理好的數據庫表,你就知道它們是否好。所以評估這樣的工具真的很難。 Hibernate是衆所周知的,你可以確定你可以用它解決你的問題。有時你需要學習很多,但你可以解決它。

Ebean怎麼樣?有沒有真實世界的應用程序?支持哪些數據庫?它可靠嗎?

經過多次搜索,我發現有更多的ORM框架,那麼至少有一個可靠的框架?

+0

您能否添加一些關於您在使用Hibernate時遇到的問題的細節?這將有助於我們消除具有相同限制的ORM框架。 – mlschechter 2011-01-16 03:59:12

+0

好吧,Hibernate對batchjobs變得很困難,在這裏你做了很多寫操作。此外,Hibernate經常會有一些令人驚訝的效果,例如,如果您創建或更改了對象,它將自動保存。爲了說清楚,Hibernate是一個很好的可靠框架,但它很複雜和複雜。如果你是一名休眠專家,那真的很好,但除此之外,有時你可以通過試圖理解行爲來解決整個開發者日。錫耶納和Ebean承諾要模擬(這很容易證明),也是可靠的(沒有人確認)。 – niels 2011-01-16 08:54:41

回答

15

羅布(Ebean提交者)在這裏。

Ebean現在約4歲以上。我會說現在它已經相當成熟了。受支持的數據庫包括Oracle,MySql,Postgres,H2和SQL Server(以及最近的SQLite)。 Ebean正在做其他ORM不像自動提取(自動查詢調優)那樣的東西,所以我不是那種適合進入「成熟度評級」的東西。IMO的Ebean社區相對較小,儘管如此,您可能需要擊打Ebean谷歌組來吸引他們。

任何現實世界的應用程序?是的,但你最好向Ebean社區提問。當然,對於批處理(批處理大小,事務級聯持續等)以及在JPA等中沒有看到的大型查詢支持(您可能會得到與Hibernate的Sessionless支持相似的東西)有很好的支持。

希望這可能會回答你的問題的一些小部分。

乾杯,羅布。

1

我們對MyBatis有非常好的體驗,它不是ORM本身,而是另一類持久性管理器,一個SQL映射器。使用它可以從SQL語句開始,並指導如何將結果行映射到POJO。它在概念上很容易理解,並且與內部沒有太多的魔法相協調。如果您對SQL感到滿意或需要使用已建立的模式,這非常理想。

+1

是的,我知道,我之前和iBatis一起工作過,我認爲它很可靠。限制是缺少數據庫系統的抽象。如果你必須支持像Oracle這樣的多個數據庫系統,DB2,Postgres和Hibernate等Hibernate框架真的很有用。 – niels 2010-12-04 10:58:39

0

如何使用EB3,例如JBoss(www.jboss.org)?

+0

那麼我尋找一個簡單的解決方案。 JEE環境並不適合這一點。 – niels 2011-01-23 08:51:36

6

我目前是錫耶納的開發商,但自從很長時間以來一直沒有開發。讓我解釋爲什麼我成爲這個項目的開發人員? 我去了錫耶納,因爲我想用Play + GAE,錫耶納似乎是GAE DB的一個好開端,我真的很想避免JDO/JPA。 然後,我開始真正感謝錫耶納的簡單明瞭,輕鬆簡單的方法和簡單的API。它並不假裝像JDO這樣的全功能於一身的抽象層,也不像JPA那樣是最大的標準DB API。它真的讓我想到了Python/Ruby中的數據庫API,它非常符合我的觀點:我想要一個簡單的數據庫API,它可以解決絕大多數問題,當我遇到更復雜的問題時,我會使用較低層的API,但肯定不是像hibernate這樣的抽象層。

使我的代碼在GAE DB或JDBC上工作的可能性也是一個很好的方面。 Siena並沒有假裝在兩個世界中提供完全相同的東西,因爲SQL和NoSQL不是真的兼容(但是ORM既不符合SQL模型:))。 但是再一次,能夠依靠幾個DB中相同的API是非常實用的。

最後,圖書館是一個罐子,你不必檢索整個宇宙來使用它。

因此,我逐漸成爲錫耶納的提交者,因爲我想參加這個不錯的小冒險。 現在,siena團隊正在開發一個新版本,保持相同的簡單API,帶來新的有趣功能,並真正改進所有後端代碼,使其更容易擴展以獲得新的DB支持。 錫耶納是一個務實的API由用戶體驗驅動的,這就是爲什麼我喜歡它;)

帕斯卡爾

+0

感謝您分享您的體驗,即使它沒有顯示它的成熟程度。我不明白的是爲什麼我無法在GAE和JDBC之間切換?我認爲這是錫耶納的巨大好處。我的意思是,否則它看起來更聰明,使用特定的「ORM映射器」。 – niels 2011-02-06 09:02:08

1

除了Ebean和錫耶納:

你可以嘗試JIRM其重點是CRUDing不可變對象(是的,我的作者)。

還有jOOQ和Joist。

我覺得JIRM最大限度地減少了DTO的數量,因爲域對象是不可變的,不會繼承,實現和/或不「增強/檢測」。這與錫耶納和Ebean不一樣。

此外,因爲對象是不可變的,每列更新的重點更多,而不是整個對象,這使得今天的AJAX接口(與舊的POST相比,整個bean模型相比)更有意義。