DB
DB
               Jiemamy
         Jiemamy Project /




17-E-1
(2011.02.17)




                 Developers Summit 2011
•
 •       id:daisuke-m
      http://d.hatena.ne.jp/daisuke-m/




 • twitter @daisuke_m
      http://twitter.com/daisuke_m/




Java Jiemamy
            DDD                                 XML
                             Maven
    Scala


                                                Haskell   SQL
                                                             OSGi   GAE

                                                                    ER

                                      Android   Hadoop     Eclipse
• Jiemamy Project
                               Developers Summit 2011
• Jiemamy
•
•
• Jiemamy

            Developers Summit 2011
Agenda

• Jiemamy
• Jiemamy
• Jiemamy
• Jiemamy API

           Developers Summit 2011
•
•
•

•
•                            ...

•                            ...!?

    Developers Summit 2011
• Web          SVN


  DB



        DB




             Developers Summit 2011
•

•   DB




         Developers Summit 2011
• Jiemamy

•


            Developers Summit 2011
Martin Fowler

• Planning Extreme
  Programming

• Refactoring
• Pattern of Enterprise
  Application Architecture
  (PoEAA)




                  Developers Summit 2011
DB

       Evolutional Database Design
                    — Martin Fowler, 2003
http://www.objectclub.jp/community/XP-jp/xp_relate/evodb-jp



    DB


    DB




                                          Developers Summit 2011
Project
•
•
 • Jiemamy
 • maven plugin,
•                API                 β


            Developers Summit 2011
Smart
             Model


 Smart
                                   Smart
Version
Control                            Build
          Developers Summit 2011
A

    Smart Build


      Developers Summit 2011
•
•
 •                                    OS
 •
 • Java
 • DB          AP

•     (automated)                     (documented)



             Developers Summit 2011
Java                      Maven
• Apache Project
• co     pom.xml

    "mvn package"

•


             Developers Summit 2011
•
•
•                   localhost


•
• ...
        Developers Summit 2011
NOT automated
• DB
 CREATE TABLE T_GROUP (
                                 SQL
  ID integer NOT NULL,
  NAME varchar(32) NOT NULL DEFAULT 'default group',
  STATUS integer NOT NULL,
  CREATED_DATE DATE DEFAULT now(),
                                                       DB
  UPDATED_DATE DATE DEFAULT now(),
  DELETED_DATE DATE,
  PRIMARY KEY (ID)
 );
 CREATE TABLE T_USER (
  ID integer NOT NULL,
  NAME varchar(32) NOT NULL DEFAULT 'default user',
  STATUS integer NOT NULL,
  CREATED_DATE DATE DEFAULT now(),
                  (... ...)



                         Developers Summit 2011
•
        1


•1
         documented

• README.txt
         Developers Summit 2011
Jiemamy
• DB
• maven-jiemamy-plugin
• pom                                       DB


•                       DB

• Web                                  DB

•       Ant
              Developers Summit 2011
B
    Smart
Version Control


    Developers Summit 2011
•1                                     1

class Busyo {                             class Dept {
  String name;                              String name;
  // ...                                    // ...
}                                         }

class Emp {                               class Emp {
  String name;                              String name;
  Busyo busyo;                              Dept dept;
}                                         }


                 Developers Summit 2011
rev1000


•        revision      rev1001
    DB
                       rev1002

•
                       rev1003



•                      rev1004



                       rev1005




         Developers Summit 2011
DB
    •
 @Table("HOGE")                                @Table("FOO")
class Foo {                                   class Foo {
  // ...                                        // ...
}                                             }

 CREATE TABLE HOGE                             CREATE TABLE FOO
(                                             (
  ID integer ...                                ID integer ...
);                                            );


                     Developers Summit 2011
•

•



    Developers Summit 2011
Jiemamy
•
•                               ↓

 •
 •

       Developers Summit 2011
Developers Summit 2011
1

DB
                                         3



                                 2

DB
     (E)                     (       )   4

     (R)




           Developers Summit 2011
DB

• SQL
• DB
• ER

        Developers Summit 2011
DB
•                           rev1000

    SQL
                            rev1001



                            rev1002
    ER    (          )
                            rev1003



    …                       rev1004



    DRY                     rev1005




              Developers Summit 2011
C

    Smart Model


      Developers Summit 2011
DRY
    Don't Repeat Yourself.

•
•
•
•

         Developers Summit 2011
1                                1
  •          1



class Emp {              class Dept {
  String name;             String name;
  Dept dept;               List<Emp> members;
}                        }



                 Developers Summit 2011
2
•

Dept tech = new Dept("                    ");
Emp kato = new Emp("                ");
kato.setDept(tech);
tech.addMember(kato);


           Developers Summit 2011
Jiemamy
•      DRY           DB

•       SQL, DB                      (   )


•     XML               →SVN

 •
  •
            Developers Summit 2011
Jiemamy
•       XML

• XML
 •       SCM

• GUI   ER

•        XML
   validation

              Developers Summit 2011
Developers Summit 2011
• DRY
•
 •
 •              documented
• ER    SQL
 •
 •
          Developers Summit 2011
Jiemamy


     Developers Summit 2011
XML…
•                       XML

 •     GUI             ER


•
 • XML Schema
 • XML                                validation

             Developers Summit 2011
Jiemamy
•       ER

 • AmaterasERD, Clay, DBDesigner4,
   ERWin, SI Object Browser, JUDE...


• Jiemamy
 •
 •
            Developers Summit 2011
Demo
 Developers Summit 2011
Jiemamy API
 version 0.3


   Developers Summit 2011
Jiemamy Model                   API    β

• Jiemamy
            Java object


                                  SQL




     Java


        Developers Summit 2011
XML → Java model



•
• InputStream

           Developers Summit 2011
Java model → XML



•      context new

•      JiemamySerializer

• OutputStream
            Developers Summit 2011
Java model → SQL



• SqlExporter   new

•
• exportModel
           Developers Summit 2011
DB → Java model



• DbImporter    new

•
• importModel
           Developers Summit 2011
Javadoc


•
    API

•
          Developers Summit 2011
•
•          (ServletFilter            )

      DB           Web

 • Smart Install Update
•
 •        contribute
            Developers Summit 2011
Developers Summit 2011
Jiemamy
• Smart Build
 • Maven / Ant /
• Smart Version Control
 • SCM
 •
• Smart Model
 •
 • DB       DRY

              Developers Summit 2011
• Jiemamy
•      Jiemamy

 •
 •       v1.0



           Developers Summit 2011
Jiemamy
• v0.0 v0.1
 • v0.0.1...
          release 2007/6/21

 • v0.1.0 release 2008/2/29
 • v0.1.1 release 2008/3/20
• v0.2 release 2009/5/6
 • v0.2.0
• v0.3 release
 • v0.3.0
           Developers Summit 2011
•
•                            http://tricreo.jp/
                             info@tricreo.jp
•
• Jiemamy

            Developers Summit 2011
Any Questions?


Evolutional Database Design...

                     Developers Summit 2011

DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy

  • 1.
    DB DB Jiemamy Jiemamy Project / 17-E-1 (2011.02.17) Developers Summit 2011
  • 2.
    • • id:daisuke-m http://d.hatena.ne.jp/daisuke-m/ • twitter @daisuke_m http://twitter.com/daisuke_m/ Java Jiemamy DDD XML Maven Scala Haskell SQL OSGi GAE ER Android Hadoop Eclipse • Jiemamy Project Developers Summit 2011
  • 3.
    • Jiemamy • • • Jiemamy Developers Summit 2011
  • 4.
    Agenda • Jiemamy • Jiemamy •Jiemamy • Jiemamy API Developers Summit 2011
  • 5.
    • • • • • ... • ...!? Developers Summit 2011
  • 6.
    • Web SVN DB DB Developers Summit 2011
  • 7.
    • • DB Developers Summit 2011
  • 8.
    • Jiemamy • Developers Summit 2011
  • 9.
    Martin Fowler • PlanningExtreme Programming • Refactoring • Pattern of Enterprise Application Architecture (PoEAA) Developers Summit 2011
  • 10.
    DB Evolutional Database Design — Martin Fowler, 2003 http://www.objectclub.jp/community/XP-jp/xp_relate/evodb-jp DB DB Developers Summit 2011
  • 11.
    Project • • • Jiemamy • maven plugin, • API β Developers Summit 2011
  • 12.
    Smart Model Smart Smart Version Control Build Developers Summit 2011
  • 13.
    A Smart Build Developers Summit 2011
  • 14.
    • • • OS • • Java • DB AP • (automated) (documented) Developers Summit 2011
  • 15.
    Java Maven • Apache Project • co pom.xml "mvn package" • Developers Summit 2011
  • 16.
    • • • localhost • • ... Developers Summit 2011
  • 17.
    NOT automated • DB CREATE TABLE T_GROUP ( SQL ID integer NOT NULL, NAME varchar(32) NOT NULL DEFAULT 'default group', STATUS integer NOT NULL, CREATED_DATE DATE DEFAULT now(), DB UPDATED_DATE DATE DEFAULT now(), DELETED_DATE DATE, PRIMARY KEY (ID) ); CREATE TABLE T_USER ( ID integer NOT NULL, NAME varchar(32) NOT NULL DEFAULT 'default user', STATUS integer NOT NULL, CREATED_DATE DATE DEFAULT now(), (... ...) Developers Summit 2011
  • 18.
    1 •1 documented • README.txt Developers Summit 2011
  • 19.
    Jiemamy • DB • maven-jiemamy-plugin •pom DB • DB • Web DB • Ant Developers Summit 2011
  • 20.
    B Smart Version Control Developers Summit 2011
  • 21.
    •1 1 class Busyo { class Dept { String name; String name; // ... // ... } } class Emp { class Emp { String name; String name; Busyo busyo; Dept dept; } } Developers Summit 2011
  • 22.
    rev1000 • revision rev1001 DB rev1002 • rev1003 • rev1004 rev1005 Developers Summit 2011
  • 23.
    DB • @Table("HOGE") @Table("FOO") class Foo { class Foo { // ... // ... } } CREATE TABLE HOGE CREATE TABLE FOO ( ( ID integer ... ID integer ... ); ); Developers Summit 2011
  • 24.
    • • Developers Summit 2011
  • 25.
    Jiemamy • • ↓ • • Developers Summit 2011
  • 26.
  • 27.
    1 DB 3 2 DB (E) ( ) 4 (R) Developers Summit 2011
  • 28.
    DB • SQL • DB •ER Developers Summit 2011
  • 29.
    DB • rev1000 SQL rev1001 rev1002 ER ( ) rev1003 … rev1004 DRY rev1005 Developers Summit 2011
  • 30.
    C Smart Model Developers Summit 2011
  • 31.
    DRY Don't Repeat Yourself. • • • • Developers Summit 2011
  • 32.
    1 1 • 1 class Emp { class Dept { String name; String name; Dept dept; List<Emp> members; } } Developers Summit 2011
  • 33.
    2 • Dept tech =new Dept(" "); Emp kato = new Emp(" "); kato.setDept(tech); tech.addMember(kato); Developers Summit 2011
  • 34.
    Jiemamy • DRY DB • SQL, DB ( ) • XML →SVN • • Developers Summit 2011
  • 35.
    Jiemamy • XML • XML • SCM • GUI ER • XML validation Developers Summit 2011
  • 36.
  • 37.
    • DRY • • • documented • ER SQL • • Developers Summit 2011
  • 38.
    Jiemamy Developers Summit 2011
  • 39.
    XML… • XML • GUI ER • • XML Schema • XML validation Developers Summit 2011
  • 41.
    Jiemamy • ER • AmaterasERD, Clay, DBDesigner4, ERWin, SI Object Browser, JUDE... • Jiemamy • • Developers Summit 2011
  • 42.
  • 43.
    Jiemamy API version0.3 Developers Summit 2011
  • 44.
    Jiemamy Model API β • Jiemamy Java object SQL Java Developers Summit 2011
  • 45.
    XML → Javamodel • • InputStream Developers Summit 2011
  • 46.
    Java model →XML • context new • JiemamySerializer • OutputStream Developers Summit 2011
  • 47.
    Java model →SQL • SqlExporter new • • exportModel Developers Summit 2011
  • 48.
    DB → Javamodel • DbImporter new • • importModel Developers Summit 2011
  • 49.
    Javadoc • API • Developers Summit 2011
  • 50.
    • • (ServletFilter ) DB Web • Smart Install Update • • contribute Developers Summit 2011
  • 51.
  • 52.
    Jiemamy • Smart Build • Maven / Ant / • Smart Version Control • SCM • • Smart Model • • DB DRY Developers Summit 2011
  • 53.
    • Jiemamy • Jiemamy • • v1.0 Developers Summit 2011
  • 54.
    Jiemamy • v0.0 v0.1 • v0.0.1... release 2007/6/21 • v0.1.0 release 2008/2/29 • v0.1.1 release 2008/3/20 • v0.2 release 2009/5/6 • v0.2.0 • v0.3 release • v0.3.0 Developers Summit 2011
  • 55.
    • • http://tricreo.jp/ [email protected] • • Jiemamy Developers Summit 2011
  • 56.
    Any Questions? Evolutional DatabaseDesign... Developers Summit 2011