Spring-On-Rails
spring-on-rails - Google Code
データベーステーブルとJavaクラスのマッピング定義(XML)を書くだけで、CRUDを行うWebアプリケーションを自動生成してくれるというもの。既存のデータベーステーブルが存在することが前提です。
内部的にはSpring/Hibernate/iBatis/Maven/Antなどを使っているそうです。
マッピングの定義はこんな感じ:
<?xml version="1.0" encoding="UTF-8"?> <map xmlns="http://www.asksunny.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.asksunny.com typeMap.xsd"> <entity javaName="Employee" tableName="Employee"> <property javaName="ssn" columnName="ssn" allowNull="false" primaryKey="true" javaType="string" sqlType="CHAR(11)"/> <property javaName="firstName" columnName="First_Name" allowNull="false" javaType="String" sqlType="VARCHAR2" length="64"/> <property javaName="lastName" columnName="Last_Name" allowNull="false" javaType="String" sqlType="VARCHAR2" length="64"/> </entity> </map>
あとはAntのタスク定義を修正して、Antでビルド->mvn jetty:runすればOK。
面白いアプローチだとは思いますが、"Rails"の冠を頂くにはまだ工夫が足りないかなぁという気がします。
特に、http://code.google.com/p/spring-on-rails/wiki/EntityMapping を見ると、XML定義ファイルの中に
<meta><![CDATA[ controllerType=multiple ormType=hibernate springVersion=2 jeeVersion=4 ]]></meta>
とか、
<methods><![CDATA[ //Addition methods to add to PoJo class. public void doSomething(){ //We have nothing to do here; } public String returnAfterMessage(){ return serverId + " >>" + serverName; } ]]></methods>
てな感じでJavaコードフラグメントが混入してるあたり、時代遅れ感が否めません。ここは素直にDSLを定義した方がいいのではないかと思います。
強いて言うなら、完全にJava/Springに閉じた世界で開発ができることがメリット、ということになるのでしょうか。