我一直在尋找一種替代Hibernate的各種原因。我遇到了Liquibase,我喜歡這個想法,所以我願意嘗試。 Liquibase將以獨立於SQL的方式迎合數據庫的創建/修改。我的主要問題是我的應用程序中的代碼如何執行SQL語句而不依賴於數據庫?還有其他一些項目像猶太人方言類嗎?Java SQL數據庫獨立性
感謝,
保羅
我一直在尋找一種替代Hibernate的各種原因。我遇到了Liquibase,我喜歡這個想法,所以我願意嘗試。 Liquibase將以獨立於SQL的方式迎合數據庫的創建/修改。我的主要問題是我的應用程序中的代碼如何執行SQL語句而不依賴於數據庫?還有其他一些項目像猶太人方言類嗎?Java SQL數據庫獨立性
感謝,
保羅
我的主要問題是我的代碼在我的應用程序中如何執行SQL語句而不依賴於數據庫?
那麼,真正實現這一目標的唯一方法是使用更高級別的查詢語言,而不是將SQL轉換爲數據庫特定的SQL。我們已經有一些(專有的,標準的)DSL:Toplink QL,EJB-QL,JDO QL,HQL,JPQL等等。我的建議是挑選你的毒藥(但請不要推出你自己的解決方案)。
我懷疑它 - hibernate中的方言用於將對象和HQL查詢轉換爲正確的本地查詢。
如果您想要使用普通的SQL查詢,那麼您應該將SQL查詢轉換爲.. SQL查詢。
實現數據庫獨立性的一種方法是僅使用ANSI SQL。但即使這樣也不能保證數據庫完全獨立。
我建議如果你想使用正常liquibase過程中,你可以在外面liquibase的SQL生成類與Hibernate和HQL(JPA-QL)
堅持ANSI SQL也意味着你可以做的事情非常有限,因爲有許多事情不在標準的範圍之內。 (特別是如果只支持舊版本的規格。) – 2010-03-30 19:16:41
堅持。特別是在2.0中,sql生成類已經得到了改進和抽象,但取決於您想要運行的是什麼,它可能無法滿足您的需求。由於liquibase是關於數據庫遷移的,因此大多數與數據庫無關的邏輯圍繞着DDL語句(創建表/添加列等),而不是圍繞插入/更新/刪除語句。不知道你將運行什麼類型的語句,我會假設你更關心跨數據庫插入/更新/刪除語句,在這種情況下,你會更好地服務於Hibernate/ibatis /等。
不好意思,但Liquibase似乎是數據庫的「版本控制」工具,而不是數據庫訪問庫。所以你的問題沒有意義。恕我直言。 – 2010-03-30 11:08:53
什麼部分沒有意義?我正在討論數據庫獨立性的解決方案,Liquibase是用於創建/修改或「版本控制」的。 – Paul 2010-03-30 12:13:17
稍後您將討論您的應用程序,並執行SQL語句(不是說「僅DDL」)。再比較LB和Hib。這就是所有混亂髮展的地方。 – 2010-03-30 23:17:44