[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
$ grails create-app helloworld
$ cd helloworld
$ grails create-domain-class hello
$ vi ./grails-app/domain/helloworld/
Hello.groovy
package helloworld
class Hello {
String message
static constraints = {
}
}
$ grails create-controller hello
$ vi ./grails-app/controllers/
helloworld/HelloController.groovy
package helloworld
class HelloController {
static scaffold = Hello
}
$ grails run-app
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所

















Grailsでドメイン駆動設計を実践する時の勘所
grails {

exploded = true

plugins {

compile project(':core-domain-plugin')

compile project(':sub-domain-plugin')

}

}
includeFlat 'core-domain-plugin'

includeFlat 'sub-domain-plugin'
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
class IsbnUserType implements UserType {



@Override

int[] sqlTypes() {

return [StringType.INSTANCE.sqlType()]

}



@Override

Class returnedClass() {

return Isbn.class

}
}
package com.example.domain
class Isbn {

private String isbnCode

}
class Book {

String title

Isbn isbn

BigDecimal standardUnitPrice



static mapping = {

isbn type: IsbnUserType

}


String toString() {

title

}

}
Grailsでドメイン駆動設計を実践する時の勘所


dependencies {

compile "org.springframework.boot:spring-boot-starter-logging"

compile "org.springframework.boot:spring-boot-autoconfigure"

compile "org.grails:grails-core"

compile "org.springframework.boot:spring-boot-starter-actuator"

compile "org.springframework.boot:spring-boot-starter-tomcat"



compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1"

:

}

package com.example.domain
class Isbn {

private String isbnCode

}
package com.example.domain



import grails.validation.Validateable



class Book implements Validateable {

Long id

String title

Isbn isbn

BigDecimal standardUnitPrice
Long version



static constraints = {

}

}

package com.example.infrastructure



import com.example.domain.Book

import org.apache.ibatis.annotations.Mapper

import org.apache.ibatis.annotations.Param



@Mapper

interface BookMapper {

void register(@Param("book") Book book)

List<Book> list()

}
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.example.infrastructure.BookMapper">



<resultMap id="product" type="com.example.domain.Book">

<id property="id" column="id"/>

<result property=“isbn.isbnCode" column="isbn_code"/>

<result property="title" column=“title"/>
<result property="standardUnitPrice"
column=“standard_unit_price”/>

<result property="version" column="version"/>

</resultMap>



:

</mapper>

Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
package com.example



class BookRepositoryService {


List<Book> list() {
Book.findAll()
}
:

}
package com.example.domain



interface BookRepository {


List<Book> list()

Book get(Long id)



}
package com.example.infrastructure



import com.example.domain.Book

import com.example.domain.BookRepository

import org.springframework.stereotype.Repository



@Repository

class BookDatasource implements BookRepository {



@Override
List<Book> list() {
Book.findAll()
}

:

}
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所


Grailsでドメイン駆動設計を実践する時の勘所

More Related Content

Grailsでドメイン駆動設計を実践する時の勘所