SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
DataMapper, l’ORM dans Rails 3 ?




                       DataMapper, l’ORM dans Rails 3 ?

                                   Cyril Mougel


                                   07 Mars 2009
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?




           DataMapper c’est quoi ?
      1




           Les base de DataMapper
      2




           Les plugins DataMapper
      3
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      DataMapper c’est quoi ?




              Commenc´ en F´vrier 2007
                     e     e
              Objet Relationel Model (Model Object Relationnel)
              Support´ uniquement par la communaut´
                     e                            e
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      Pourquoi DataMapper ?




              L’identity Map
              La gestion des multi-repository natif
              Lazy loading
              Eager loading
              Tout est ruby
              Modulaire
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      Identity Map




              User.first == User.first
              User.first == User.get(1)
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      Gestion des multi-repository natif




              User.all(:repository => :other)
              User.all #:repository => :default
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      Lazy Loading



 1    c l a s s Animal
 2        include DataMapper : : Resource
 3        property : id , Serial
 4        property : name , String #: l a z y => f a l s e
 5        property : notes , Text #: l a z y => t r u e
 6    end
 7
 8    animals = Animal . all        # No r e q u e s t
      animals . each do | pet |
 9                                  # SELECT i d , name FROM A n i m a l s
10      pet . notes # SELECT       n o t e s FROM A n i m a l s WHERE i d = x
11      pet . name # No more       request
12    end
DataMapper, l’ORM dans Rails 3 ?
 DataMapper c’est quoi ?



      Eager Loading



 1    zoos = Zoo . all
      zoos . each do | zoo |
 2
 3      # SELECT ’ i d ’ , ’ name ’ FROM Zoos
 4      # 1 ,3 ,5 ,6 , etc . . .
 5
        zoo . exhibits . each do | exhibit |
 6
 7        # F a i t un r e q u e t e p a r i t e r a t i o n :
 8        # S e l e c t ’ name ’ from e x h i b i t s w h e r e z o o i d IN ( 1 , 3 , 5 , 6 ,
                etc . . . )
          puts ” Zoo : #{zoo . name } , E x h i b i t : #{ e x h i b i t . name} ”
 9
10      end
11    end
DataMapper, l’ORM dans Rails 3 ?
 Les base de DataMapper




           DataMapper c’est quoi ?
      1




           Les base de DataMapper
      2




           Les plugins DataMapper
      3
DataMapper, l’ORM dans Rails 3 ?
 Les base de DataMapper



      Un classe Model




              H´rite seulement de Object
               e
              Include de include DataMapper::Resource
              Les propri´t´s d´clar´ dans les classes mod`les
                        ee e e                           e
DataMapper, l’ORM dans Rails 3 ?
 Les base de DataMapper




 1     class User
 2       include DataMapper :: Resource
 3
 4         property : id , Serial
 5         property : name , String
 6         property : age , Integer
 7
 8       has :n , : projects
 9       belongs_to : group
10     end
DataMapper, l’ORM dans Rails 3 ?
 Les base de DataMapper



      La recherche avec DataMapper




 1     Zoo . first (: name . eql = > ’ Galveston ’)
 2     Person . all (: age . gt = > 30)
 3     Person . all (: age . gte = > 30)
 4     Person . all (: name . not = > ’ bob ’)
 5     Person . all (: name . like = > ’S % ’ , : id = > [1 , 2 , 3 ,
           4 , 5])
 6     Person . all (: name . not = > [ ’ bob ’ , ’ rick ’ , ’ steve ’ ])
 7     Person . all (: order = > [: age . desc ])
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper




           DataMapper c’est quoi ?
      1




           Les base de DataMapper
      2




           Les plugins DataMapper
      3
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper



      dm-validations
              validates xxx
              validation dans les properties directement
 1    require ’dm−v a l i d a t i o n s ’
 2
 3     c l a s s Account
 4         include DataMapper : : Resource
 5
 6                        : name ,
          property                  String
 7                        : content , Text , : length => ( 1 0 0 . . 5 0 0 )
          property
 8                        : email , String , : nullable => f a l s e , : unique =>
          property
              true ,        : format => : email_address ,
                                           : messages => {
 9
10                                            : presence => ” n e e d e m a i l ” ,
11                                            : is_unique => ” a l r e a d y u s e d ” ,
12                                            : format => ” n o t a e m a i l ”
                                           }
13
14
15        v a l i da t e s _ l e n gt h : name , : max => 20
16
17    end
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper



      dm-migrations


 1     migration 1 , : create_orders do
 2       up do
 3         create_table ( : orders ) do
 4           column ( : id , Integer , : serial => t r u e )
 5           column ( : amount , Integer )
 6           column ( : completed , Boolean )
 7           column ( : description , String , : size => 2 5 5 )
 8           column ( : created_at , DateTime )
 9           column ( : updated_at , DateTime )
10         end
11       end
12
13      down do
14        drop_table ( : orders )
15      end
16    end
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper



      plein d’autre plugins



              dm-types
              dm-timestamp
              dm-tags
              dm-sweatshop
              dm-constraints
              dm-is-list
              etc..
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper



      Les ressources ?




              http ://datamapper.org
              http ://github.com/datamapper
              http ://groups.google.com/group/datamapper
DataMapper, l’ORM dans Rails 3 ?
 Les plugins DataMapper




                                   questions ?

Contenu connexe

En vedette

Les questions d'actualité - Metronews / LCI - Par opinionWay - février 2015
Les questions d'actualité  - Metronews / LCI - Par opinionWay - février 2015Les questions d'actualité  - Metronews / LCI - Par opinionWay - février 2015
Les questions d'actualité - Metronews / LCI - Par opinionWay - février 2015OpinionWay
 
BFSEFC - Contenu
BFSEFC - ContenuBFSEFC - Contenu
BFSEFC - ContenuMurat KILIC
 
Bac pro commerce
Bac pro commerceBac pro commerce
Bac pro commerce0596957s
 
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...Intervención de Transparencia por Colombia en Taller de capacitación sobre la...
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...TransparenciaporColombia
 
Créer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSCréer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSXWiki
 
Plaquette-master2_carrieres_juridiques_internationales_et_europennes
Plaquette-master2_carrieres_juridiques_internationales_et_europennesPlaquette-master2_carrieres_juridiques_internationales_et_europennes
Plaquette-master2_carrieres_juridiques_internationales_et_europennesMaximilien Pamart
 
La veille de Né Kid du 29.06.11 : Cannes 2011
La veille de Né Kid du 29.06.11 : Cannes 2011La veille de Né Kid du 29.06.11 : Cannes 2011
La veille de Né Kid du 29.06.11 : Cannes 2011Né Kid
 
La veille de Né Kid du 06.07.11 : la mort du pc
La veille de Né Kid du 06.07.11 : la mort du pcLa veille de Né Kid du 06.07.11 : la mort du pc
La veille de Né Kid du 06.07.11 : la mort du pcNé Kid
 
L'Observatoire du E-commerce dans le Gers - Edition 2014
L'Observatoire du E-commerce dans le Gers - Edition 2014L'Observatoire du E-commerce dans le Gers - Edition 2014
L'Observatoire du E-commerce dans le Gers - Edition 2014CCI du GERS
 

En vedette (20)

Sectores económicos
Sectores económicosSectores económicos
Sectores económicos
 
Les questions d'actualité - Metronews / LCI - Par opinionWay - février 2015
Les questions d'actualité  - Metronews / LCI - Par opinionWay - février 2015Les questions d'actualité  - Metronews / LCI - Par opinionWay - février 2015
Les questions d'actualité - Metronews / LCI - Par opinionWay - février 2015
 
Is
IsIs
Is
 
BFSEFC - Contenu
BFSEFC - ContenuBFSEFC - Contenu
BFSEFC - Contenu
 
Plan primero yacuiba
Plan primero yacuibaPlan primero yacuiba
Plan primero yacuiba
 
Navacerrada
NavacerradaNavacerrada
Navacerrada
 
Amistad
AmistadAmistad
Amistad
 
Rutas de personal social
Rutas de personal socialRutas de personal social
Rutas de personal social
 
Présentation ESS
Présentation ESSPrésentation ESS
Présentation ESS
 
Bac pro commerce
Bac pro commerceBac pro commerce
Bac pro commerce
 
Biotecnologia
BiotecnologiaBiotecnologia
Biotecnologia
 
Les réseaux sociaux ffcld ségry 2012
Les réseaux sociaux ffcld ségry 2012Les réseaux sociaux ffcld ségry 2012
Les réseaux sociaux ffcld ségry 2012
 
Medición datos nominales
Medición datos nominalesMedición datos nominales
Medición datos nominales
 
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...Intervención de Transparencia por Colombia en Taller de capacitación sobre la...
Intervención de Transparencia por Colombia en Taller de capacitación sobre la...
 
Créer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSCréer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNS
 
Plaquette-master2_carrieres_juridiques_internationales_et_europennes
Plaquette-master2_carrieres_juridiques_internationales_et_europennesPlaquette-master2_carrieres_juridiques_internationales_et_europennes
Plaquette-master2_carrieres_juridiques_internationales_et_europennes
 
Del estiercol
Del estiercolDel estiercol
Del estiercol
 
La veille de Né Kid du 29.06.11 : Cannes 2011
La veille de Né Kid du 29.06.11 : Cannes 2011La veille de Né Kid du 29.06.11 : Cannes 2011
La veille de Né Kid du 29.06.11 : Cannes 2011
 
La veille de Né Kid du 06.07.11 : la mort du pc
La veille de Né Kid du 06.07.11 : la mort du pcLa veille de Né Kid du 06.07.11 : la mort du pc
La veille de Né Kid du 06.07.11 : la mort du pc
 
L'Observatoire du E-commerce dans le Gers - Edition 2014
L'Observatoire du E-commerce dans le Gers - Edition 2014L'Observatoire du E-commerce dans le Gers - Edition 2014
L'Observatoire du E-commerce dans le Gers - Edition 2014
 

Similaire à Datamapper L Orm Dans Rails 3

Initiation Rails Rspec
Initiation Rails RspecInitiation Rails Rspec
Initiation Rails RspecCyril Mougel
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJosé Paumard
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJosé Paumard
 
Les Streams sont parmi nous
Les Streams sont parmi nousLes Streams sont parmi nous
Les Streams sont parmi nousJosé Paumard
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RLaurent Beauguitte
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
MyBatis, une alternative à JPA.
MyBatis, une alternative à JPA.MyBatis, une alternative à JPA.
MyBatis, une alternative à JPA.Kokou Gaglo
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu BriendSOAT
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Arrow Group
 
Open data & linked data
Open data & linked dataOpen data & linked data
Open data & linked dataVincentBroute
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfYounesOuladSayad1
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Pythonyboussard
 

Similaire à Datamapper L Orm Dans Rails 3 (20)

Initiation Rails Rspec
Initiation Rails RspecInitiation Rails Rspec
Initiation Rails Rspec
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Presentation Map Reduce
Presentation Map ReducePresentation Map Reduce
Presentation Map Reduce
 
Les Streams sont parmi nous
Les Streams sont parmi nousLes Streams sont parmi nous
Les Streams sont parmi nous
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec R
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
Pig
PigPig
Pig
 
MyBatis, une alternative à JPA.
MyBatis, une alternative à JPA.MyBatis, une alternative à JPA.
MyBatis, une alternative à JPA.
 
Hibernate
HibernateHibernate
Hibernate
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
 
Drools
DroolsDrools
Drools
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8
 
Open data & linked data
Open data & linked dataOpen data & linked data
Open data & linked data
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 

Plus de Cyril Mougel

Super marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbSuper marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbCyril Mougel
 
Cucumber Le Text Qui Test
Cucumber Le Text Qui TestCucumber Le Text Qui Test
Cucumber Le Text Qui TestCyril Mougel
 
Google Wave, le dernier de chez Google
Google Wave, le dernier de chez GoogleGoogle Wave, le dernier de chez Google
Google Wave, le dernier de chez GoogleCyril Mougel
 
Migration Rails 2.0 2.2
Migration Rails 2.0 2.2Migration Rails 2.0 2.2
Migration Rails 2.0 2.2Cyril Mougel
 

Plus de Cyril Mougel (6)

Errbit
ErrbitErrbit
Errbit
 
Mongoid
MongoidMongoid
Mongoid
 
Super marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbSuper marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodb
 
Cucumber Le Text Qui Test
Cucumber Le Text Qui TestCucumber Le Text Qui Test
Cucumber Le Text Qui Test
 
Google Wave, le dernier de chez Google
Google Wave, le dernier de chez GoogleGoogle Wave, le dernier de chez Google
Google Wave, le dernier de chez Google
 
Migration Rails 2.0 2.2
Migration Rails 2.0 2.2Migration Rails 2.0 2.2
Migration Rails 2.0 2.2
 

Datamapper L Orm Dans Rails 3

  • 1. DataMapper, l’ORM dans Rails 3 ? DataMapper, l’ORM dans Rails 3 ? Cyril Mougel 07 Mars 2009
  • 2. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? DataMapper c’est quoi ? 1 Les base de DataMapper 2 Les plugins DataMapper 3
  • 3. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? DataMapper c’est quoi ? Commenc´ en F´vrier 2007 e e Objet Relationel Model (Model Object Relationnel) Support´ uniquement par la communaut´ e e
  • 4. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? Pourquoi DataMapper ? L’identity Map La gestion des multi-repository natif Lazy loading Eager loading Tout est ruby Modulaire
  • 5. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? Identity Map User.first == User.first User.first == User.get(1)
  • 6. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? Gestion des multi-repository natif User.all(:repository => :other) User.all #:repository => :default
  • 7. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? Lazy Loading 1 c l a s s Animal 2 include DataMapper : : Resource 3 property : id , Serial 4 property : name , String #: l a z y => f a l s e 5 property : notes , Text #: l a z y => t r u e 6 end 7 8 animals = Animal . all # No r e q u e s t animals . each do | pet | 9 # SELECT i d , name FROM A n i m a l s 10 pet . notes # SELECT n o t e s FROM A n i m a l s WHERE i d = x 11 pet . name # No more request 12 end
  • 8. DataMapper, l’ORM dans Rails 3 ? DataMapper c’est quoi ? Eager Loading 1 zoos = Zoo . all zoos . each do | zoo | 2 3 # SELECT ’ i d ’ , ’ name ’ FROM Zoos 4 # 1 ,3 ,5 ,6 , etc . . . 5 zoo . exhibits . each do | exhibit | 6 7 # F a i t un r e q u e t e p a r i t e r a t i o n : 8 # S e l e c t ’ name ’ from e x h i b i t s w h e r e z o o i d IN ( 1 , 3 , 5 , 6 , etc . . . ) puts ” Zoo : #{zoo . name } , E x h i b i t : #{ e x h i b i t . name} ” 9 10 end 11 end
  • 9. DataMapper, l’ORM dans Rails 3 ? Les base de DataMapper DataMapper c’est quoi ? 1 Les base de DataMapper 2 Les plugins DataMapper 3
  • 10. DataMapper, l’ORM dans Rails 3 ? Les base de DataMapper Un classe Model H´rite seulement de Object e Include de include DataMapper::Resource Les propri´t´s d´clar´ dans les classes mod`les ee e e e
  • 11. DataMapper, l’ORM dans Rails 3 ? Les base de DataMapper 1 class User 2 include DataMapper :: Resource 3 4 property : id , Serial 5 property : name , String 6 property : age , Integer 7 8 has :n , : projects 9 belongs_to : group 10 end
  • 12. DataMapper, l’ORM dans Rails 3 ? Les base de DataMapper La recherche avec DataMapper 1 Zoo . first (: name . eql = > ’ Galveston ’) 2 Person . all (: age . gt = > 30) 3 Person . all (: age . gte = > 30) 4 Person . all (: name . not = > ’ bob ’) 5 Person . all (: name . like = > ’S % ’ , : id = > [1 , 2 , 3 , 4 , 5]) 6 Person . all (: name . not = > [ ’ bob ’ , ’ rick ’ , ’ steve ’ ]) 7 Person . all (: order = > [: age . desc ])
  • 13. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper DataMapper c’est quoi ? 1 Les base de DataMapper 2 Les plugins DataMapper 3
  • 14. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper dm-validations validates xxx validation dans les properties directement 1 require ’dm−v a l i d a t i o n s ’ 2 3 c l a s s Account 4 include DataMapper : : Resource 5 6 : name , property String 7 : content , Text , : length => ( 1 0 0 . . 5 0 0 ) property 8 : email , String , : nullable => f a l s e , : unique => property true , : format => : email_address , : messages => { 9 10 : presence => ” n e e d e m a i l ” , 11 : is_unique => ” a l r e a d y u s e d ” , 12 : format => ” n o t a e m a i l ” } 13 14 15 v a l i da t e s _ l e n gt h : name , : max => 20 16 17 end
  • 15. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper dm-migrations 1 migration 1 , : create_orders do 2 up do 3 create_table ( : orders ) do 4 column ( : id , Integer , : serial => t r u e ) 5 column ( : amount , Integer ) 6 column ( : completed , Boolean ) 7 column ( : description , String , : size => 2 5 5 ) 8 column ( : created_at , DateTime ) 9 column ( : updated_at , DateTime ) 10 end 11 end 12 13 down do 14 drop_table ( : orders ) 15 end 16 end
  • 16. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper plein d’autre plugins dm-types dm-timestamp dm-tags dm-sweatshop dm-constraints dm-is-list etc..
  • 17. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper Les ressources ? http ://datamapper.org http ://github.com/datamapper http ://groups.google.com/group/datamapper
  • 18. DataMapper, l’ORM dans Rails 3 ? Les plugins DataMapper questions ?