Spring Roo 1.1.0.M1 [rev 3a0b8a3]で試した結果です
persistence setupコマンド
オプション
--provider [providerName]
- [providerName]にはDATANUCLEUS, ECLIPSELINK, HIBERNATE, OPENJPAのいずれかを指定する
--database [database]
--applicationId [applicationId]
- Google App Engine用のアプリケーションIDを設定する
- 未指定だと[projectName]の値を使用する
--jndiDataSource [jndiName]
- このオプションを指定しない場合
- SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xmlファイルに以下の設定が定義される
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> </bean>
-
- SRC_MAIN_RESOURCES\META-INF\spring\database.propertiesが追加される。
- このオプションを指定した場合
- SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xmlファイルに以下の設定が定義される
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/hoge"/>
-
- 後からjndiDataSourceを指定した場合、元からあるdatabase.propertiesファイルは削除されないので、手動で削除する
--databaseName [databaseName]
--userName [userName]
--password [password]
- データベース接続先の指定をする
- jndiDataSourceオプションを指定していない場合のみ有効
- src/main/resources/META-INF/spring/database.propertiesファイルに記述される
database.password = [password]
database.url = jdbc:mysql://localhost:3306/[databaseName]
database.username = [userName]
- 接続サーバ名やポートを指定するパラメータが無いので、コマンドとして不完全
- database properties setコマンドで行ったほうがわかりやすい
roo> database properties set --key database.username --value root roo> database properties set --key database.password --value root roo> database properties set --key database.url --value jdbc:mysql://192.168.1.1:3306/sandbox
使い方
roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
Created SRC_MAIN_RESOURCES\META-INF\persistence.xml Created SRC_MAIN_RESOURCES\META-INF\spring\database.properties Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml Managed ROOT\pom.xml [Added dependency org.hsqldb:hsqldb:1.8.0.10] Managed ROOT\pom.xml [Added dependency org.hibernate:hibernate-core:3.5.0-Final] Managed ROOT\pom.xml [Added dependency org.hibernate:hibernate-entitymanager:3.5.0-Final] Managed ROOT\pom.xml [Added dependency org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.0.Final] Managed ROOT\pom.xml [Added dependency org.hibernate:hibernate-validator:4.0.2.GA] Managed ROOT\pom.xml [Added dependency javax.validation:validation-api:1.0.0.GA] Managed ROOT\pom.xml [Added dependency cglib:cglib-nodep:2.2] Managed ROOT\pom.xml [Added dependency javax.transaction:jta:1.1] Managed ROOT\pom.xml [Added dependency org.springframework:spring-jdbc:${spring.version}] Managed ROOT\pom.xml [Added dependency org.springframework:spring-orm:${spring.version}] Managed ROOT\pom.xml [Added dependency commons-pool:commons-pool:1.5.4] Managed ROOT\pom.xml [Added dependency commons-dbcp:commons-dbcp:1.3] Managed ROOT\pom.xml
roo> persistence setup --provider HIBERNATE --database MYSQL --jndiDataSource jdbc/hoge
Managed SRC_MAIN_RESOURCES\META-INF\persistence.xml Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml Managed ROOT\pom.xml [Added dependency mysql:mysql-connector-java:5.1.12] Managed ROOT\pom.xml
再度実行した場合は、差分のみ変更される。
その他
- デフォルトでは、インスタンス起動時にDBのデータが消えるようになっている
- 消えないようにするには、SRC_MAIN_RESOURCES\META-INF\persistence.xmlの設定を変更する
<!-- value='create' to build a new database on each run; value='update' to modify an existing database; value='create-drop' means the same as 'create' but also drops tables when Hibernate closes; value='validate' makes no changes to the database --> <property name="hibernate.hbm2ddl.auto" value="create"/>