2012-01-18 41 views
2

我使用jQuery + Spring + Hibernate堆棧了很多。通常我會發現自己開發複雜的接口並將它們整合到完整的堆棧中,但有時我只需製作簡單的接口即可在簡單的數據庫表上執行CRUD操作。以表格方式開發這些CRUD界面通常會變成一個重複的機械工作,並且可以通過腳本輕鬆生成。理想情況下,我希望爲腳本提供表名,並且它應該生成從Hibernate實體到前端控制器(包括JSP)的每個必需類。爲重複任務生成代碼的腳本

因此,這裏是我的問題:

  1. 這是個好主意,在這種情況下寫劇本?它會涉及太多的複雜性(顯然我沒有看到太多,但可能是我錯過了一些觀點)?
  2. 應該用什麼語言編寫這樣的腳本? (Java看起來太重了,我想動態語言應該更好套房)

P.S.我知道Spring Roo做了逆向工程,但是我發現了一些瓶頸。

回答

1

基於Lisp的語言是這類代碼生成的非常受歡迎的選擇,因爲它們是動態的,遵循「代碼是數據」的原則的homoiconic語言。

因此,根據特定模板生成代碼以完成任務通常並不困難 - 您只需編寫一個擴展爲您需要的任何代碼的宏。宏只是一個常規函數,除了它在編譯時運行(以生成所需的代碼)而不是運行時,所以您甚至不必學習不同的宏語言。

對於基於Java的堆棧,我強烈建議看看Clojure,這是代碼生成和JVM上的「膠合代碼」的巨大語言。

這裏的那種數據DSL的,你可以使用Clojure創建的例子:Korma

(defdb prod (postgres {:db "korma" 
         :username "db" 
         :password "dbpass"})) 

(defentity address) 
(defentity user 
    (has-many address)) 

(select user 
    (with address) 
    (fields :firstName :lastName :address.state) 
    (where {:email "[email protected]"})) 

正如你所看到的,一個相當簡單的DSL可以用於腳本非常複雜的數據庫交互。所有必要的樣板代碼都會在幕後爲您生成:您只需關注業務邏輯。

+0

感謝響應,我會嘗試的Clojure。 – craftsman 2012-01-18 09:11:02