2014-02-11 113 views
0

我是Ruby on Rails的新手,我最近創建了一個連接到sqlite3數據庫的小型會計應用程序。Active Record vs JRuby與JDBC

目前,我仍然在發展,我可以在控制器端使用ActiveRecord的指令在數據庫上保存新數據或更新現有記錄。

但我的問題是關於JDBC使用JRuby:

我是新來的Java以及從我個人理解,JRuby是由完全的Java代碼,並正在對一個JVM上運行。並有寶石,如果它是用C寫

如果我開始使用JRuby而不是MRI這是行不通的,會是什麼區別?我仍然在使用活動記錄命令來操縱數據庫中的記錄嗎?

如果我使用JRuby和創建新的應用程序,請問JDBC適配器工作酷似像sqlite3的現有的寶石來連接應用程序到數據庫?

或者我只需要編寫JDBC適配器而不是控制器?

我有點困惑的是如何工作和一些信息,將不勝感激。先謝謝你!

編輯:

我的意思要問的是,目前我的應用程序正在Ruby on Rails和我使用的控制器命令。例如,當你正在更新現有的記錄是這樣的:

@variable = [Table_name].find(:id) 

然後

@variable.update_attributes(params[:submit]) 

此命令將更新使用回報率的紀錄,但如果在JRuby中使用Rails,這將如何工作?這是相同的語法?

+1

歡迎來到StackOverflow!如果你有兩個框架的代碼示例,你的問題將得到更多關注。我會更容易指出分歧。 – kukido

+0

哦,我還沒有開始使用JRuby,因爲我仍在研究它。我只是想知道兩者之間的區別,就像訪問數據庫時的語法一樣。它是一樣的嗎? –

+2

不知道爲什麼他們將此問題標記爲不清楚,很明顯,您感到困惑,但這並不意味着我們無法幫助您。切換到JRuby不會更改您的寶石代碼,除了缺少寶石。 Rails在JRuby上工作良好,這意味着它的整個基礎設施工作沒有任何問題:activerecord。你不應該關心數據庫適配器,我認爲現在Rails支持所有的數據庫沒有很多問題,即使在jruby上(如果沒有,只需檢查)。你可能會遇到紅寶石C寶石的問題,但在這種情況下,你根本無法使用它們(所以你不會擁有它們)。意見很短 –

回答

1

JDBC是連接到數據庫的Java API和驅動程序。

Rails使用ActiveRecord的,因爲這是應用程序和數據庫之間的ORM層。然後

的ActiveRecord將使用指定生成的SQL語句和遷移的驅動程序。

的通話將始終從應用端同樣喜歡你提到@variable = [Table_name].find(:id)

的差異會出現在日誌和產生遷移生成的SQL語句,以適應指定的數據庫驅動程序。

+0

謝謝你。 雖然我想問一下,你認爲兩者的優點和缺點是什麼? –

+0

您將根據數據庫服務器使用兩者。例如,您可能使用SQL Server的jdbc-sql-server或SQLite的jdbc/sqlite –

+0

但是仍然所有命令都在應用程序內編碼?所有這些都在控制器/模型中,而不在JDBC適配器內部? –