JavaのDBアクセスフレームワーク「Doma2」にSpringBootと連携し自動で設定してくれる「doma-spring-boot-starter」が追加されました。
今までは独自にDoma用のクラスを作成し連携していましたが、それをする必要がなくなり導入と設定が楽になりました。
「doma-spring-boot-starter」の適用概略
1.build.gradleに「https://oss.sonatype.org/content/repositories/snapshots」のリポジトリを追加する
2.build.gradleに「org.seasar.doma.boot:doma-spring-boot-starter」の依存を追加する
3.application.propertiesに必要であればdoma用の設定を追加する
「doma-spring-boot-starter」を使うことでdoma設定クラスが不要になります。
application.properties
にdoma.naming
を追加することで、@Entity
のNamingType
の定義が不要になります。
サンプルコード
build.gradle
repositories { mavenCentral() // 追記 maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } dependencies { // 追記 compile('org.seasar.doma.boot:doma-spring-boot-starter:1.0.2') // 削除 //compile('org.seasar.doma:doma:2.6.2') }
src/main/resources/application.properties
# DB spring.datasource.url=jdbc:oracle:thin:@localhost:1521:test_db spring.datasource.username=test spring.datasource.password=test spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver # DOMA doma.dialect=ORACLE doma.naming=SNAKE_LOWER_CASE
src/main/java/com.example.dao.EmpDao
package com.example.dao; import java.util.List; import org.seasar.doma.Dao; import org.seasar.doma.Select; import org.seasar.doma.boot.ConfigAutowireable; import com.example.entity.Emp; @ConfigAutowireable @Dao public interface EmpDao { @Select List<Emp> findAll(); }
src/main/java/com.example.entity.Emp
package com.example.entity; import java.util.Date; import org.seasar.doma.Entity; import org.seasar.doma.Id; // application.propertiesの「doma.naming」で指定済みなので不要 //@Entity(naming = NamingType.SNAKE_LOWER_CASE) @Entity public class Emp { @Id public String empNo; public String empNm; }
src/main/java/com.example.web.TestController
package com.example.web; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.example.dao.EmpDao; import com.example.entity.Emp; @Controller public class TestController { @Autowired private EmpDao empDao; @RequestMapping("/test") public String index() { List<Emp> list = empDao.findAll(); for (Emp emp : list) { System.out.println(emp.empNo); } return "test/test"; }