SlideShare a Scribd company logo
DDD                        Pt.II


Building Blocks
 ~DDD                                                        ~


        (   ) - tricreo.jp / Jiemamy Project - jiemamy.org
    2011.04.09 @
•               (@daisuke_m)

• Jiemamy / java-ja
• Apache Mahout
• Java / OO / DDD
•
works
• @IT — Jiemamy
•
  • Java
  • Java
• Java: The Good Parts (           )

•                          DDD (       )
DDD
      http://d.hatena.ne.jp/daisuke-m/20110407/1302156870


• Jiemamy Project
•
•
•         DDD
•
• Jiemamy version 0.3
• baseunits library (timeandmoney)
Jiemamy
•           ER

    • Eclipse        (UI         )

    • DB          , SQL (            )

     •                      SQL…

    • XML I/O, DDD (         )
Agenda
• DDD overview
• Isolating the Domain
• Model
• LifeCycle
§0 DDD overview

• DDD
 • GoF
 • PoEAA
DDD PATTERNS
•   STRATEGY                              •   OPEN HOST SERVICE

•   COMPOSITE                             •   CORE DOMAIN

•   BOUNDED CONTEXT                       •   GENERIC SUBDOMAINS

•   CONTINUOUS INTEGRATION                •   DOMAIN VISION STATEMENT

•   CONTEXT MAP                           •   HIGHLIGHTED CORE

•   SHARED KERNEL                         •   COHESIVE MECHANISMS

•   CUSTOMER/SUPPLIER DEVELOPMENT TEAMS   •   SUGGESTED CORE

•   CONFORMIST                            •   ABSTRACT CORE

•   ANTICORRUPTION LAYER                  •   EVOLVING ORDER

•   SEPARATE WAYS                         •   SYSTEM METAPHOR

•   OPEN HOST SERVICE                     •   RESPONSIVILITY LAYERS

•   PUBLISHED LANGUAGE                    •   KNOWLEDGE LEVEL

•   INTEGRATION                           •   PLUGGABLE COMPONENT FRAMEWORK
DDD PATTERNS
•   UBIQUITOUS LANGUAGE           •   FACTRIES

•   MODEL-DRIVEN DESIGN           •   REPOSITORIES

•   HANDS-ON MODELERS             •   SPECIFICATION

•   LAYERED ARCHITECTURE          •   INTENTION-REVEALING
                                      INTERFACES
•   THE SMART UI "ANTI-PATTERN"
                                  •   SIDE-EFFECT-FREE
                                      FUNCTION
•   ENTITIES

•   VALUE OBJECTS                 •   ASSERTIONS

•   SERVICES                      •   CONCEPTUAL CONTOURS

•   MODULES                       •   STANDALONE CLASSES

•   AGGREGATES                    •   CLOSURE OF OPERATIONS
•
•
•
•(   )
•
    •
    •
Domain or Not
•
•
•        HISTORY
•
•
•
•
• UI
• DB
•
•      DB
•

•

•
•
•               →
•                →
•           ®

    •
    •
•       ®

    •
    •
•
•
•
•
•
    •
• Model Driven Design (   )


    •
Model or Not
•   LibHTTP         •   User

•   Search          •   File

•   FacebookLogin   •   String

•   Translation     •   StringBuilder

•   FoobarLogic     •   YearMonth
§1

•

•
    •
    •   UI
LAYERED
    ARCHITECTURE
•

•    ;




•
Jiemamy
      DiagramEditor
        TableView
     DbObjectEditPart            maven-jiemamy-plugin                 UI
 jiemamy eclipse plugin                           ExecuteMojo     Application


       jiemamy-diagram                JmDiagram
                                 JmNode / JmConnection

     SqlStatement        jiemamy-sql                               Domain
         Token                              JmTable / JmView
                                               JmColumn
                        jiemamy-core     JmForeignKeyConstraint

                                   woodstox
SqlExecutor / UUIDProvider
                                   XMLInputFactory                 Infrastructure
                                  XMLValidationSchema
   jiemamy-commons
                              apache commons
THE SMART UI
        "ANTI-PATTERN"
• DDD
•
  •

•          light   MDD
UI   DB




User#save(); → DB
toString() ! "<span>...</span>"
§2
•
•
•                         3

    • ENTITY (E)
    • VALUE OBJECT (VO)
    • SERVICE
•
    •
•
    • Table knows Columns / Column knows Table
    • Emp knows Dept / Dept knows Emps
class Emp {       class Dept {
  String name;      String name;
  Dept dept;        List<Emp> members;
}                 }

   Dept tech = new Dept("         ");
   Emp kato = new Emp("     ");
   kato.setDept(tech);
   tech.addMember(kato);
• Declaration & Reference
• Repository
ENTITY (E)

•
•
•        vs

•   (SE) vs   (   )
DevLOVE Beautiful Development - 第一幕 陽の巻
• 31                   32
                             31
                             (File / DB)


                             32
                            (On Memory)


•
• Serialize / Deserialize                  clone…
ENTITY
•   Table         •   Order

•   Column        •   Customer

•   ForeignKey



•   Employee

•   Department
ENTITY

•
•
• ID
• equals   hashCode ID
•      ENTITY

• ID
•
  •
  •
E
Column col = ...; // ← ENTITY
tableFoo.addColumn(col);
tableBar.addColumn(col);
// something
tableFoo.getColumn(...).setName("AAA");

tableBar
•   ID

•        (v0.2)

•
VALUE OBJECT (VO)
•

•
• new String("foo") vs new String("foo")
• man.getName(): String
• equals hashCode property
VALUE OBJECT
• Integer
• BigDecimal
• String
• Color
• Date / TimePoint
• Status (OPEN / PROGRESS / CLOSED)
VALUE OBJ.

•
•
• Immutable
  •            Flyweight
SERVICE
•                              E   VO


•       E       VO
                     Service

    •       E    VO

    •
SERVICE
•
•             (UL)

•

•        →
•                          E / VO
•       E / VO
•         E / VO
    •              Transaction Script
    •
• Infrastructure Service (      )
  • E-mail
  •
• Application Service
  •                   Excel export
  •
• Domain Service
  •
•
MODULE


•
•
Java package
•
•        1



•
MVC
• com.example.foobar •com.example.foobar
 • model              • foo
   • FooModel           • FooModel
   • BarModel           • FooView
 • view          UL     • FooController
   • FooView          • bar
   • BarView            • BarModel
 • controller           • BarView
   • FooController      • BarController
   • BarController
MVC
• com.example.foobar •com.example.foobar
 • model              • foo
   • FooModel           • FooModel
   • BarModel           • FooView
 • view          UL     • FooController
   • FooView          • bar
   • BarView            • BarModel
 • controller           • BarView
   • FooController      • BarController
   • BarController
§3 LifeCycle

•        Object

    • new GC
    • INSERT DELETE
•
§3 LifeCycle
E
•       LifeCycle   Object    LifeCycle

•                            User




• JVM
AGGREGATE


•
•               …
•
• Table
• Column                 Entity

• Column         Table

•       ObjColumn
         →    Table
FACTORY
•
•
•                     new

•   Object   Object

•
• Obj.
• Object    LifeCycle

•
  •        Object
Obj.
•
    • Obj.

    •         Obj.

•       Factory      Obj.
REPOSITORY
•
    •
    •
        •
    • Repository
• Entity      LifeCycle

• LC          Entity

•        new

  • On Memory Collection
  • Database
Repos.            Collection
•                              DB



• Repository
    Collection

• store / delete / find (resolve) ...
Declaration & Reference
CREATE TABLE FOOBAR (
     FOO INTEGER,
     BAR VARCHAR(32),              Decl. = Entity
     PRIMARY KEY (FOO),
     FOREIGN KEY (BAR)              Ref. = VO
                                      (ID)
       REFERECE BAZ (QUX)
);

         Table has-a Column(s) and ...
      PrimaryKey has-a ColumnReference
•                     /
•
    ENTITY / VO / SERVICE
•
    FACTORY / REPOSITRY
• DDD
DevLOVE Beautiful Development - 第一幕 陽の巻

More Related Content

What's hot (10)

Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2
Henry S
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scala
tod esking
 
第二回Salesforce勉強会
第二回Salesforce勉強会第二回Salesforce勉強会
第二回Salesforce勉強会
株式会社インサイト
 
Webinar: What's new in the .NET Driver
Webinar: What's new in the .NET DriverWebinar: What's new in the .NET Driver
Webinar: What's new in the .NET Driver
MongoDB
 
UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2
Richard Schneeman
 
Avik_RailsTutorial
Avik_RailsTutorialAvik_RailsTutorial
Avik_RailsTutorial
tutorialsruby
 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance Techniques
Brett Meyer
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
guestcf600a
 
Creating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartCreating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChart
David Keener
 
โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8
kruple
 
Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2
Henry S
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scala
tod esking
 
Webinar: What's new in the .NET Driver
Webinar: What's new in the .NET DriverWebinar: What's new in the .NET Driver
Webinar: What's new in the .NET Driver
MongoDB
 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance Techniques
Brett Meyer
 
Creating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartCreating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChart
David Keener
 
โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8
kruple
 

Viewers also liked (18)

「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
Yukei Wachi
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
sleipnir002
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
増田 亨
 
مجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثانيمجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثاني
ibnrushd1434
 
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Startup Club
 
Casa administrativo
Casa   administrativoCasa   administrativo
Casa administrativo
Christiano Morais
 
【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)
久美歩 石郷
 
Terms of Reference for Selection of Auditors Audit Reports and Audit Review
Terms of Reference for Selection of Auditors Audit Reports and Audit ReviewTerms of Reference for Selection of Auditors Audit Reports and Audit Review
Terms of Reference for Selection of Auditors Audit Reports and Audit Review
IFAD International Fund for Agricultural Development
 
Opne data @ Big data & Analytics day 2016-11-15
Opne data @ Big data & Analytics day  2016-11-15Opne data @ Big data & Analytics day  2016-11-15
Opne data @ Big data & Analytics day 2016-11-15
Livar Bergheim
 
Kaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilKaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author Senthil
Senthil Kumar, PhD.
 
Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015
Juan Carlos Zúñiga Montalvo
 
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Lalvmun
 
Let's Get Physical
Let's Get PhysicalLet's Get Physical
Let's Get Physical
Joel Lord
 
O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?
Edilson Osorio Junior
 
Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)
Gian Guzman
 
What is Modernization Infographic
What is Modernization InfographicWhat is Modernization Infographic
What is Modernization Infographic
Uniface
 
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect CrimeTime Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
LeanKit
 
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
Yukei Wachi
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
sleipnir002
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
増田 亨
 
مجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثانيمجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثاني
ibnrushd1434
 
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Startup Club
 
【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)
久美歩 石郷
 
Opne data @ Big data & Analytics day 2016-11-15
Opne data @ Big data & Analytics day  2016-11-15Opne data @ Big data & Analytics day  2016-11-15
Opne data @ Big data & Analytics day 2016-11-15
Livar Bergheim
 
Kaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilKaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author Senthil
Senthil Kumar, PhD.
 
Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015
Juan Carlos Zúñiga Montalvo
 
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Lalvmun
 
Let's Get Physical
Let's Get PhysicalLet's Get Physical
Let's Get Physical
Joel Lord
 
O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?
Edilson Osorio Junior
 
Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)
Gian Guzman
 
What is Modernization Infographic
What is Modernization InfographicWhat is Modernization Infographic
What is Modernization Infographic
Uniface
 
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect CrimeTime Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
LeanKit
 

Similar to DevLOVE Beautiful Development - 第一幕 陽の巻 (20)

コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門
潤一 加藤
 
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - JiemamyDevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
都元ダイスケ Miyamoto
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
Chuong Nguyen
 
2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design
Ismael Fofonka dos Santos
 
2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design
Ismael Santos
 
Object Relational Mapping with LINQ To SQL
Object Relational Mapping with LINQ To SQLObject Relational Mapping with LINQ To SQL
Object Relational Mapping with LINQ To SQL
Shahriar Hyder
 
S313431 JPA 2.0 Overview
S313431 JPA 2.0 OverviewS313431 JPA 2.0 Overview
S313431 JPA 2.0 Overview
Ludovic Champenois
 
Grails and Neo4j
Grails and Neo4jGrails and Neo4j
Grails and Neo4j
darthvader42
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
Luciano Resende
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
Alan Christensen
 
Concurrent Stream Processing
Concurrent Stream ProcessingConcurrent Stream Processing
Concurrent Stream Processing
Alex Miller
 
Understanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache DrillUnderstanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache Drill
DataWorks Summit
 
Flash Camp Chennai - Social network with ORM
Flash Camp Chennai - Social network with ORMFlash Camp Chennai - Social network with ORM
Flash Camp Chennai - Social network with ORM
RIA RUI Society
 
Stream Execution with Clojure and Fork/join
Stream Execution with Clojure and Fork/joinStream Execution with Clojure and Fork/join
Stream Execution with Clojure and Fork/join
Alex Miller
 
Overcoming The Impedance Mismatch Between Source Code And Architecture
Overcoming The Impedance Mismatch Between Source Code And ArchitectureOvercoming The Impedance Mismatch Between Source Code And Architecture
Overcoming The Impedance Mismatch Between Source Code And Architecture
Peter Friese
 
Jlook open api platform-sysdevguide
Jlook open api platform-sysdevguideJlook open api platform-sysdevguide
Jlook open api platform-sysdevguide
HongSeong Jeon
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)
Paulo Gandra de Sousa
 
PoEAA by Example
PoEAA by ExamplePoEAA by Example
PoEAA by Example
Paulo Gandra de Sousa
 
ExSchema
ExSchemaExSchema
ExSchema
jccastrejon
 
Jlook open api server platform
Jlook open api server platformJlook open api server platform
Jlook open api server platform
HongSeong Jeon
 
コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門
潤一 加藤
 
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - JiemamyDevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
都元ダイスケ Miyamoto
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
Chuong Nguyen
 
2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design2011-05-22 Domain Driven Design
2011-05-22 Domain Driven Design
Ismael Santos
 
Object Relational Mapping with LINQ To SQL
Object Relational Mapping with LINQ To SQLObject Relational Mapping with LINQ To SQL
Object Relational Mapping with LINQ To SQL
Shahriar Hyder
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
Luciano Resende
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
Alan Christensen
 
Concurrent Stream Processing
Concurrent Stream ProcessingConcurrent Stream Processing
Concurrent Stream Processing
Alex Miller
 
Understanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache DrillUnderstanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache Drill
DataWorks Summit
 
Flash Camp Chennai - Social network with ORM
Flash Camp Chennai - Social network with ORMFlash Camp Chennai - Social network with ORM
Flash Camp Chennai - Social network with ORM
RIA RUI Society
 
Stream Execution with Clojure and Fork/join
Stream Execution with Clojure and Fork/joinStream Execution with Clojure and Fork/join
Stream Execution with Clojure and Fork/join
Alex Miller
 
Overcoming The Impedance Mismatch Between Source Code And Architecture
Overcoming The Impedance Mismatch Between Source Code And ArchitectureOvercoming The Impedance Mismatch Between Source Code And Architecture
Overcoming The Impedance Mismatch Between Source Code And Architecture
Peter Friese
 
Jlook open api platform-sysdevguide
Jlook open api platform-sysdevguideJlook open api platform-sysdevguide
Jlook open api platform-sysdevguide
HongSeong Jeon
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)
Paulo Gandra de Sousa
 
Jlook open api server platform
Jlook open api server platformJlook open api server platform
Jlook open api server platform
HongSeong Jeon
 

More from 都元ダイスケ Miyamoto (20)

認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
都元ダイスケ Miyamoto
 
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
都元ダイスケ Miyamoto
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
 
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
都元ダイスケ Miyamoto
 
AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論
都元ダイスケ Miyamoto
 
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案
都元ダイスケ Miyamoto
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
都元ダイスケ Miyamoto
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
 
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
 
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
都元ダイスケ Miyamoto
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
 
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
 
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategyjava-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
都元ダイスケ Miyamoto
 
とべとべ電設部勉強会20100717 DB meets Jiemamy
とべとべ電設部勉強会20100717  DB meets Jiemamyとべとべ電設部勉強会20100717  DB meets Jiemamy
とべとべ電設部勉強会20100717 DB meets Jiemamy
都元ダイスケ Miyamoto
 
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
都元ダイスケ Miyamoto
 
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
都元ダイスケ Miyamoto
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
 
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
都元ダイスケ Miyamoto
 
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案
都元ダイスケ Miyamoto
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
都元ダイスケ Miyamoto
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
 
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
 
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
 
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategyjava-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
都元ダイスケ Miyamoto
 
とべとべ電設部勉強会20100717 DB meets Jiemamy
とべとべ電設部勉強会20100717  DB meets Jiemamyとべとべ電設部勉強会20100717  DB meets Jiemamy
とべとべ電設部勉強会20100717 DB meets Jiemamy
都元ダイスケ Miyamoto
 

Recently uploaded (20)

cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
 
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPathCommunity
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 
Reducing Bugs With Static Code Analysis php tek 2025
Reducing Bugs With Static Code Analysis php tek 2025Reducing Bugs With Static Code Analysis php tek 2025
Reducing Bugs With Static Code Analysis php tek 2025
Scott Keck-Warren
 
Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Iobit Driver Booster Pro Crack Free Download [Latest] 2025Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Mudasir
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
 
Optimize IBM i with Consulting Services Help
Optimize IBM i with Consulting Services HelpOptimize IBM i with Consulting Services Help
Optimize IBM i with Consulting Services Help
Alice Gray
 
What is DePIN? The Hottest Trend in Web3 Right Now!
What is DePIN? The Hottest Trend in Web3 Right Now!What is DePIN? The Hottest Trend in Web3 Right Now!
What is DePIN? The Hottest Trend in Web3 Right Now!
cryptouniversityoffi
 
Splunk Leadership Forum Wien - 20.05.2025
Splunk Leadership Forum Wien - 20.05.2025Splunk Leadership Forum Wien - 20.05.2025
Splunk Leadership Forum Wien - 20.05.2025
Splunk
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Lorenzo Miniero
 
A Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment GatewayA Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment Gateway
danielle hunter
 
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
 
Talk: On an adventure into the depths of Maven - Kaya Weers
Talk: On an adventure into the depths of Maven - Kaya WeersTalk: On an adventure into the depths of Maven - Kaya Weers
Talk: On an adventure into the depths of Maven - Kaya Weers
Kaya Weers
 
Content and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-TrainingContent and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-Training
Rustici Software
 
Fully Open-Source Private Clouds: Freedom, Security, and Control
Fully Open-Source Private Clouds: Freedom, Security, and ControlFully Open-Source Private Clouds: Freedom, Security, and Control
Fully Open-Source Private Clouds: Freedom, Security, and Control
ShapeBlue
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
Artificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdfArtificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdf
NufiEriKusumawati
 
cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
 
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPath Community Berlin: Studio Tips & Tricks and UiPath Insights
UiPathCommunity
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 
Reducing Bugs With Static Code Analysis php tek 2025
Reducing Bugs With Static Code Analysis php tek 2025Reducing Bugs With Static Code Analysis php tek 2025
Reducing Bugs With Static Code Analysis php tek 2025
Scott Keck-Warren
 
Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Iobit Driver Booster Pro Crack Free Download [Latest] 2025Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Iobit Driver Booster Pro Crack Free Download [Latest] 2025
Mudasir
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
 
Optimize IBM i with Consulting Services Help
Optimize IBM i with Consulting Services HelpOptimize IBM i with Consulting Services Help
Optimize IBM i with Consulting Services Help
Alice Gray
 
What is DePIN? The Hottest Trend in Web3 Right Now!
What is DePIN? The Hottest Trend in Web3 Right Now!What is DePIN? The Hottest Trend in Web3 Right Now!
What is DePIN? The Hottest Trend in Web3 Right Now!
cryptouniversityoffi
 
Splunk Leadership Forum Wien - 20.05.2025
Splunk Leadership Forum Wien - 20.05.2025Splunk Leadership Forum Wien - 20.05.2025
Splunk Leadership Forum Wien - 20.05.2025
Splunk
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Lorenzo Miniero
 
A Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment GatewayA Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment Gateway
danielle hunter
 
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
 
Talk: On an adventure into the depths of Maven - Kaya Weers
Talk: On an adventure into the depths of Maven - Kaya WeersTalk: On an adventure into the depths of Maven - Kaya Weers
Talk: On an adventure into the depths of Maven - Kaya Weers
Kaya Weers
 
Content and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-TrainingContent and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-Training
Rustici Software
 
Fully Open-Source Private Clouds: Freedom, Security, and Control
Fully Open-Source Private Clouds: Freedom, Security, and ControlFully Open-Source Private Clouds: Freedom, Security, and Control
Fully Open-Source Private Clouds: Freedom, Security, and Control
ShapeBlue
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
Artificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdfArtificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdf
NufiEriKusumawati
 

DevLOVE Beautiful Development - 第一幕 陽の巻

  • 1. DDD Pt.II Building Blocks ~DDD ~ ( ) - tricreo.jp / Jiemamy Project - jiemamy.org 2011.04.09 @
  • 2. (@daisuke_m) • Jiemamy / java-ja • Apache Mahout • Java / OO / DDD •
  • 3. works • @IT — Jiemamy • • Java • Java • Java: The Good Parts ( ) • DDD ( )
  • 4. DDD http://d.hatena.ne.jp/daisuke-m/20110407/1302156870 • Jiemamy Project • • • DDD • • Jiemamy version 0.3 • baseunits library (timeandmoney)
  • 5. Jiemamy • ER • Eclipse (UI ) • DB , SQL ( ) • SQL… • XML I/O, DDD ( )
  • 6. Agenda • DDD overview • Isolating the Domain • Model • LifeCycle
  • 7. §0 DDD overview • DDD • GoF • PoEAA
  • 8. DDD PATTERNS • STRATEGY • OPEN HOST SERVICE • COMPOSITE • CORE DOMAIN • BOUNDED CONTEXT • GENERIC SUBDOMAINS • CONTINUOUS INTEGRATION • DOMAIN VISION STATEMENT • CONTEXT MAP • HIGHLIGHTED CORE • SHARED KERNEL • COHESIVE MECHANISMS • CUSTOMER/SUPPLIER DEVELOPMENT TEAMS • SUGGESTED CORE • CONFORMIST • ABSTRACT CORE • ANTICORRUPTION LAYER • EVOLVING ORDER • SEPARATE WAYS • SYSTEM METAPHOR • OPEN HOST SERVICE • RESPONSIVILITY LAYERS • PUBLISHED LANGUAGE • KNOWLEDGE LEVEL • INTEGRATION • PLUGGABLE COMPONENT FRAMEWORK
  • 9. DDD PATTERNS • UBIQUITOUS LANGUAGE • FACTRIES • MODEL-DRIVEN DESIGN • REPOSITORIES • HANDS-ON MODELERS • SPECIFICATION • LAYERED ARCHITECTURE • INTENTION-REVEALING INTERFACES • THE SMART UI "ANTI-PATTERN" • SIDE-EFFECT-FREE FUNCTION • ENTITIES • VALUE OBJECTS • ASSERTIONS • SERVICES • CONCEPTUAL CONTOURS • MODULES • STANDALONE CLASSES • AGGREGATES • CLOSURE OF OPERATIONS
  • 11. • •
  • 12. Domain or Not • • • HISTORY • • • •
  • 15. → • → • ® • • • ® • •
  • 17. • • • • Model Driven Design ( ) •
  • 18. Model or Not • LibHTTP • User • Search • File • FacebookLogin • String • Translation • StringBuilder • FoobarLogic • YearMonth
  • 19. §1 • • • • UI
  • 20. LAYERED ARCHITECTURE • • ; •
  • 21. Jiemamy DiagramEditor TableView DbObjectEditPart maven-jiemamy-plugin UI jiemamy eclipse plugin ExecuteMojo Application jiemamy-diagram JmDiagram JmNode / JmConnection SqlStatement jiemamy-sql Domain Token JmTable / JmView JmColumn jiemamy-core JmForeignKeyConstraint woodstox SqlExecutor / UUIDProvider XMLInputFactory Infrastructure XMLValidationSchema jiemamy-commons apache commons
  • 22. THE SMART UI "ANTI-PATTERN" • DDD • • • light MDD
  • 23. UI DB User#save(); → DB toString() ! "<span>...</span>"
  • 24. §2 • • • 3 • ENTITY (E) • VALUE OBJECT (VO) • SERVICE
  • 25. • • • Table knows Columns / Column knows Table • Emp knows Dept / Dept knows Emps
  • 26. class Emp { class Dept { String name; String name; Dept dept; List<Emp> members; } } Dept tech = new Dept(" "); Emp kato = new Emp(" "); kato.setDept(tech); tech.addMember(kato);
  • 27. • Declaration & Reference • Repository
  • 28. ENTITY (E) • • • vs • (SE) vs ( )
  • 30. • 31 32 31 (File / DB) 32 (On Memory) • • Serialize / Deserialize clone…
  • 31. ENTITY • Table • Order • Column • Customer • ForeignKey • Employee • Department
  • 33. ENTITY • ID • • •
  • 34. E Column col = ...; // ← ENTITY tableFoo.addColumn(col); tableBar.addColumn(col); // something tableFoo.getColumn(...).setName("AAA"); tableBar
  • 35. ID • (v0.2) •
  • 36. VALUE OBJECT (VO) • • • new String("foo") vs new String("foo") • man.getName(): String • equals hashCode property
  • 37. VALUE OBJECT • Integer • BigDecimal • String • Color • Date / TimePoint • Status (OPEN / PROGRESS / CLOSED)
  • 39. SERVICE • E VO • E VO Service • E VO •
  • 40. SERVICE • • (UL) • • →
  • 41. E / VO • E / VO • E / VO • Transaction Script •
  • 42. • Infrastructure Service ( ) • E-mail • • Application Service • Excel export • • Domain Service • •
  • 45. MVC • com.example.foobar •com.example.foobar • model • foo • FooModel • FooModel • BarModel • FooView • view UL • FooController • FooView • bar • BarView • BarModel • controller • BarView • FooController • BarController • BarController
  • 46. MVC • com.example.foobar •com.example.foobar • model • foo • FooModel • FooModel • BarModel • FooView • view UL • FooController • FooView • bar • BarView • BarModel • controller • BarView • FooController • BarController • BarController
  • 47. §3 LifeCycle • Object • new GC • INSERT DELETE •
  • 49. E • LifeCycle Object LifeCycle • User • JVM
  • 51. • • Table • Column Entity • Column Table • ObjColumn → Table
  • 52. FACTORY • • • new • Object Object •
  • 53. • Obj. • Object LifeCycle • • Object
  • 54. Obj. • • Obj. • Obj. • Factory Obj.
  • 55. REPOSITORY • • • • • Repository
  • 56. • Entity LifeCycle • LC Entity • new • On Memory Collection • Database
  • 57. Repos. Collection • DB • Repository Collection • store / delete / find (resolve) ...
  • 58. Declaration & Reference CREATE TABLE FOOBAR ( FOO INTEGER, BAR VARCHAR(32), Decl. = Entity PRIMARY KEY (FOO), FOREIGN KEY (BAR) Ref. = VO (ID) REFERECE BAZ (QUX) ); Table has-a Column(s) and ... PrimaryKey has-a ColumnReference
  • 59. / • ENTITY / VO / SERVICE • FACTORY / REPOSITRY • DDD