我使用jQuery + Spring + Hibernate堆栈很多。通常我发现自己开发复杂的接口并将它们一直集成到完整的堆栈,但有时我只需要创建简单的接口,允许在简单的数据库表上进行CRUD操作。逐个开发这些CRUD接口通常会成为一个重复的机械工作,也可以通过脚本轻松生成。理想情况下,我想给脚本提供表名,它应该生成从Hibernate实体到前端控制器(包括JSP)的所有必要类。
所以这是我的问题:
P.S。我知道Spring Roo做了逆向工程,但我发现了几个瓶颈。
答案 0 :(得分:1)
基于Lisp的语言是这种代码生成的非常流行的选择,因为它们是动态的homoiconic语言,遵循“代码就是数据”的原则。
因此,根据特定模板生成代码来完成任务通常并不困难 - 您只需编写一个扩展为您需要的代码的宏。宏只是一个常规函数,但它在编译时运行(生成所需的代码)而不是在运行时运行,因此您甚至不必学习不同的宏语言。
对于基于Java的堆栈,我强烈建议您查看Clojure,这对于代码生成和JVM上的“粘合代码”来说是一个很好的语言。
以下是您可以使用Clojure创建的数据DSL类型示例: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 "korma@sqlkorma.com"}))
正如您所看到的,可以使用相当简单的DSL编写相当复杂的数据库交互脚本。在幕后为您生成所有必需的样板代码:您只需要关注业务逻辑。
答案 1 :(得分:1)
代码生成器是重复性任务的良好解决方案。 生成代码时,Java不会太重。
您应该尝试使用此工具:https://sites.google.com/site/telosystools/ (免费/开源“数据库优先”代码生成器)
CRUD屏幕世代的教程:https://sites.google.com/site/telosystutorial/