From 607bcf1ca01e83679c481142f984699aa15a79da Mon Sep 17 00:00:00 2001 From: romanb Date: Wed, 27 Feb 2008 21:48:35 +0000 Subject: [PATCH] started a new introductory section for 1.0. just a draft. --- manual/docs/en.txt | 1 + .../docs/en/introduction/further-reading.txt | 7 +++ manual/docs/en/introduction/key-concepts.txt | 43 ++++++++++++++++++ .../docs/en/introduction/the-big-picture.txt | 12 +++++ .../introduction/what-it-is-and-what-not.txt | 23 ++++++++++ manual/images/doctrine-layers.jpg | Bin 0 -> 59694 bytes manual/images/relational-bounds.jpg | Bin 0 -> 40849 bytes 7 files changed, 86 insertions(+) create mode 100644 manual/docs/en/introduction/further-reading.txt create mode 100644 manual/docs/en/introduction/key-concepts.txt create mode 100644 manual/docs/en/introduction/the-big-picture.txt create mode 100644 manual/docs/en/introduction/what-it-is-and-what-not.txt create mode 100644 manual/images/doctrine-layers.jpg create mode 100644 manual/images/relational-bounds.jpg diff --git a/manual/docs/en.txt b/manual/docs/en.txt index 904a31b05..fc2e9cf1e 100644 --- a/manual/docs/en.txt +++ b/manual/docs/en.txt @@ -1,3 +1,4 @@ ++ Introduction + Getting started + Connection management + Basic schema mapping diff --git a/manual/docs/en/introduction/further-reading.txt b/manual/docs/en/introduction/further-reading.txt new file mode 100644 index 000000000..e0a6d6a94 --- /dev/null +++ b/manual/docs/en/introduction/further-reading.txt @@ -0,0 +1,7 @@ +For people new to object-relational mapping and (object-oriented) domain models we recommend the following literature: + +[http://www.martinfowler.com/books.html Patterns of Enterprise Application Architecture] +Covers a lot of the basic ORM terminology, the different approaches of modeling business logic and the patterns involved. + +[http://domaindrivendesign.org/books/#DDD Domain-Driven Design] +Though serious Domain-Driven Design is currently not possible with Doctrine, this is an excellent resource for good domain modeling, especially in complex business domains, and the terminology around domain models that is pretty widespread nowadays is explained in depth (Entities, Value Objects, Repositories, ...). diff --git a/manual/docs/en/introduction/key-concepts.txt b/manual/docs/en/introduction/key-concepts.txt new file mode 100644 index 000000000..7e727b819 --- /dev/null +++ b/manual/docs/en/introduction/key-concepts.txt @@ -0,0 +1,43 @@ +Now, let's get familar with the key concepts, tools and classes that form the backbone of the Doctrine ORM. + ++++ Doctrine Query Language +The Doctrine Query Language (DQL) is an object query language. It let's you express queries for single objects or full object graphs, using the terminology of your domain model: class names, field names, relations between classes, etc. This is a powerful tool for retrieving or even manipulating objects without breaking the separation of the domain model (field names, class names, ..) from the relational model (table names, column names, ...). +DQL looks very much like SQL and this is intended because it makes it relatively easy to grasp for people knowing SQL. There are, however, a few very important differences you should always keep in mind: + +Take this example: + +from Employee emp join emp.tasks t where emp.salary < 40000 + + +The things to notice about this query: +* We select from **classes** (Employee) +* We join along **associations** (emp.tasks) +* We can reference **fields** (emp.salary) +* There is no join condition (ON x.y = y.x). The associations between your classes and how these are expressed in the database are known to Doctrine (You need to make this mapping known to Doctrine, of course. How to do that is explained later.). + +**DQL expresses a query in the terms of your domain model (your classes, the attributes they have, the relations they have to other classes, etc.)** + +It's very important that we speak about classes, fields and associations between classes here. 'Employee' is **not** a table / table name . It may be that the name of the database table the Employee class is mapped to is indeed named Employee but you should nevertheless adhere to this differentiation of the terminology. This may sound nitpicky since, due to the ActiveRecord approach, your relational model is often very similar to your domain model but it's really important. The column names are rarely the same as the field names and as soon as inheritance is involved the relational model starts to diverge from the domain model. You can have a class Employee that is in fact mapped to several tables in the database. At this point it should be clear that talking about "selecting from the Employee table" is simply wrong then. And as Doctrine development continues there will be more features available that allow the 2 models to diverge even more. + ++++ Metadata Mapping +[todo: explain what this is and how it's done in doctrine. mention the alternative approach (code generation)] + ++++ Classes +The following is a list of the most important classes of the Doctrine ORM and their responsibilities. + +++++ Doctrine::ORM::Entity +The Entity class is the "ActiveRecord" base class. A class needs to extend this base class in order to enable Doctrine to manage it's persistence. +The Entity class provides extending classes with the usual ActiveRecord interface (save()/delete()) and a lot of other methods that are useful in the basic maintenance of the persistent state. + +++++ Doctrine::ORM::Mapper +The Mapper class is the gateway to the main mapping facilities and functionality. If you're going a straight ActiveRecord route you will never have to deal with that class. However, if you don't want to bloat your Entity classes with static finder methods, you can use custom mapper classes that act as your Entity repositories that provide an OO interface for retrieving Entities in the terms of the language of your domain. As you will see, such custom mapper classes come with a lot of functionality out of the box without any custom coding. This is because all custom mapper classes need to inherit from Doctrien::ORM::Mapper [Link to custom mapper docs here?]. + +++++ Doctrine::ORM::EntityManager +The EntityManager class does exactly what the name implies. It manages the lifecycles of all Entities used during the processing of one HTTP request. The EntityManager is the entrypoint for a lot of ORM related functionality. One exception is the usage of the ActiveRecord interface on your Entities, the EntityManager is then involved behind the scenes. One of the key features you'll most likely use the most is the creation of object queries using DQL (Doctrine's OQL implementation). +An EntityManager needs a database connection to operate on (An instance of Doctrine::DBAL::Connection). + +++++ Doctrine::ORM::Query +[coming soon] + +++++ Doctrine::ORM::ClassMetadata +[coming soon] \ No newline at end of file diff --git a/manual/docs/en/introduction/the-big-picture.txt b/manual/docs/en/introduction/the-big-picture.txt new file mode 100644 index 000000000..b7b324165 --- /dev/null +++ b/manual/docs/en/introduction/the-big-picture.txt @@ -0,0 +1,12 @@ ++++ Overview +Doctrine is a tool for object-relational mapping in PHP. It sits on top of PDO and is itself divided into two main layers, The DBAL and the ORM. See the picture below. + +[http://localhost/graphics/doctrine-layers.jpg] + +The DBAL layer completes and extends the basic database abstraction/independance that is already provided by PDO. The DBAL library can be used standalone, if all you want is a powerful database abstraction layer on top of PDO. [Link to DBAL download here]. +The ORM layer depends on the DBAL and therefore, when you load the ORM package the DBAL is already included. + ++++ The terminology used in the manual +**Entity class** : A class whose instances are persisted into a relational database (classes that inherit directly or indirectly from Doctrine::ORM::Entity). +**Entity** : An object that is an instance of an Entity class. +[More key words and short explanations] \ No newline at end of file diff --git a/manual/docs/en/introduction/what-it-is-and-what-not.txt b/manual/docs/en/introduction/what-it-is-and-what-not.txt new file mode 100644 index 000000000..ca172a8cc --- /dev/null +++ b/manual/docs/en/introduction/what-it-is-and-what-not.txt @@ -0,0 +1,23 @@ +The following section tries to explain where Doctrine stands in the world of ORM tools. + +The Doctrine ORM is mainly build around the [http://www.martinfowler.com/eaaCatalog/activeRecord.html ActiveRecord], [http://www.martinfowler.com/eaaCatalog/dataMapper.html Data Mapper] and [http://www.martinfowler.com/eaaCatalog/metadataMapping.html Metadata Mapping] patterns. The former two may sound contradictory but that has it's reasons. Doctrine started out as a plain ActiveRecord implementation. As the featureset grew larger and larger, all the main mapping work of the ORM moved to separate components, among others, the Mappers. Nevertheless, Doctrine has the ActiveRecord-style base class that must be extended by all Entity classes. + +Through extending this specific base class, all the Entity classes get the typical ActiveRecord interface (save/delete/etc.) and it allows Doctrine to easily participate in & monitor the lifecycles of your Entities. The real work, however, is mostly forwarded to other components, like the Mappers. These mappers have the typical Data Mapper interface, save(entity), delete(entity), find(id), etc. So the ActiveRecord base class enables Doctrine to manage your Entities and provides your Entities with the typical ActiveRecord interface whilst the mapping footwork is done elsewhere. As you'll see later, you have a bit of freedom in how you do things, whether you want to use the pure ActiveRecord approach or want to make use of custom Mapper classes. + +However, it's currently not possible to ditch the ActiveRecord approach completely in favor of a Data Mapper approach when using Doctrine, for the reasons described above. + +The ActiveRecord approach comes with it's typical limitations. The most obvious is the enforcement for a class to extend a specific base class in order to be persistent (an Entity). In general, the design of your domain model is pretty much restricted by the design of your relational model. There is an exception though. When dealing with inheritance structures, Doctrine provides some sophisticated mapping strategies which allow your domain model to diverge a bit from the relational model and therefore give you a bit more freedom. Doctrine is in a continous development process and we always try to add new features that provide more freedom in the modeling of the domain. However, as long as Doctrine remains mainly an ActiveRecord approach, there will always be a pretty large, (forced) similarity of these two models. +The current situation is depicted in the following picture. + +[http://localhost/graphics/relational-bounds.jpg] + +As you see in the picture, the domain model can't drift far away from the bounds of the relational model. + +After mentioning these drawbacks, it's time to mention some advantages of the ActiveRecord approach. Apart from the (arguably slightly) simpler programming model, it turns out that the strong similarity of the relational model and the (OO) domain model also has an advantage: It makes it relatively easy to provide powerful generation tools, that can create a basic domain model out of an existing relational schema. And as the domain model can't drift far from the relational model due to the reasons above, such generation and synchronization tools can easily be used throughout the development process. Such tools are one of Doctrine's strengths. + +We think that these limitations of the ActiveRecord approach are not that much of a problem for the majority of web applications because the complexity of the business domains is often moderate, but we also admit that the ActiveRecord approach is certainly not suited for complex business logic (which is often approached using Domain-Driven Design) as it simply puts too many restrictions and has too much influence on your domain model. + +Doctrine is a great tool to drive the persistence of simple or moderately complex domain models(1) and you may even find that it's a good choice for complex domain models if you consider the trade-off between making your domain model more database-centric and implementing all the mapping on your own (because at the time of this writing we are not aware of any powerful ORM tools for PHP that are not based on an ActiveRecord approach). +1) Note that complexity != size. A domain model can be pretty large without being complex and vice versa. Obviously, larger domain models have a greater probability of being complex. + +Now you already know a lot about what Doctrine is and what it is not. If you would like to dive in now and get started right away, jump straight to the next chapter "Getting Started". \ No newline at end of file diff --git a/manual/images/doctrine-layers.jpg b/manual/images/doctrine-layers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44c6cf0a08288147ad66b22dfc666e37a7c51186 GIT binary patch literal 59694 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 Je#Do_{{v0xxsLz< literal 0 HcmV?d00001 diff --git a/manual/images/relational-bounds.jpg b/manual/images/relational-bounds.jpg new file mode 100644 index 0000000000000000000000000000000000000000..73fb4bd3e5072ca8e535ac611d225d990a0af163 GIT binary patch literal 40849 zcmeFa2_RKp*D!vrd7h~xWGwT=HD$=`lFW06>zcV-WXKTBWQb6RGLH$B63LXJQWS-f zF+`bX?tkB_@i#rs_rCA{{hsIfeuuNq+H0@9_u6Z(v&VJz#l69OfEaYOkXjIohzQ~U ze-LhvYFabM%^8C9^&ue$f+!$z7!yPcAQLya$`VJ^J zZ@eFpl#q~9kdRc6l;MWUC`iaCNJ~Hv@io{F-mVdSOP`4K8u2$6`V8{IUt}=iue4-8 zmjlN6qZ}}S@8tj`AcB2M111LK^ObkX>h0tp9qiQ52 z_Zgxi_#mef_?Wmp=oCalK|w)DK|@JN!$?g<&B#hmLqpHHlbM;7nRzE84dMFw*!KL^ zh0#(|)6&s0(9tol(9zMc;2k=a?I?`@Oai!v5F-Vo4P7IK@jyh3Fk(g+?j0y96|Nbk z0=OiF5iY7YEti}zFQqtI{m+IvFi6%3HvnW3VTXyA10gWV6C(Xtj zf0-SfW<%(?s#8r}0mJiJf|qhn-%4(NHL{R*yXE!hqPg?2Gb#CZ9(9i`$!c4;1fEST zsBZ1~xXcI<5dm&V2t1LKks=5z?1eLt01kY4m`NogFS6h{XfS>`BgN-9h>c2AH(^Ej zNzd|=;Ta$oKs0s&CUSN-X`0FSqldn;@aG%|{$K&u3(*i0@??ZmpheR}B>#S?YOez* ze>X*4|3s6=J&R4HL&I+|#uLt6w&>=ekc+h{GS{BnW4*l<_dMg%)MFe(Z2M~K^pUo; zx85@9JAFhKrke})=XLg&e~NAFsP^)@ki$&hSw8*NtmaEq$iP$U8oor6XYn`qKhu`v zjiyF*g<-r~yIW=2>!#1jb}zWUv)#S9l^5}>$iKcU)g^$;p|5K?ue#=?Sxv%AGk@EO z5u!(HfnOf>~Gm(#}knT;@aJxbCS$fr57suLqm`CYnC5B^6^1~eZh40 zvwEkT*Xx+BF!=zR*oFP;nr9~ltShlqvkKwbhaSX8p6thPPFnA_k@N^G9P9qlDfz6t ze4-0ewGeY1$*)+rHl27h^J0>Xjeam&Dx%r*PE6$|^l{;LlioLqJp&6SEHHh-fSLM& zkOwt(V{7FTfw$up+HL5>iP|O~dw4C8^<2ahZg}eMo(wCHdXdvp&^=&boTwXYvsE+F z&HiX1BQhYn$#QSYHJO^qqJTJ*N@L|0-A7UjmsdGERy0xKpKMp|S+QhZ@hiUG68rcv zDz0zOq{^F*W^p~JzE8Gm2D;^)Q?^XV{iC}V-w!7|qDxBj2+qF?rL(Wcge@bUq0NkL zZk6I7i^bF}H1+j~E9PVV{fF+CER;RYzVBIL?~&PE_joNINU!9K8kJ&%RNd8p#4$LYnWLH-*Osw!z$ zt|Z?sbIUH6W)yQvD*aUKkZg&v8Gm)`T)(vw4%*+lDaakZw+#nf<%*xNcsI8-=sYD8 z6=9j%8uo%;uIYvyo#w$xUR#bs@HmHaarB1D1Es9g(^{?Tk+1dLtFP%CezAdFWWuiOEi6Jk9)aj_WY((SOMRQ?z^`? z`<=WH?l*itQ0zSRE$?D_{V*2}GBpou9&Lp0@t1rvb2VM@=7YT-cGEkfE^EJi^TN_* znwE^aqWANbF==W5MB8nITu`O+r}uurIkAj`8Y5m`KWKVQWHvoyh-;93{ZT7<>RTLi zU4g$&GxGU@@b2q**Y2?IzTdmnv@~sWe11Pv&z>MlCOu8wKb)(+9FFNU<>n`DU{0;x zvC_0PdxX>8W$V<0bO1x2Wv`G=K(5jWTF!SDmZHX{QA_4&k3QDa#bxK;dDz>O2CW$i zZ+uai5*g>DJgE0>Yxzg~x0_k%%;Q;g^{afX$+DA^h}tLkwnMoNfHntM2gRH?alZSb@-9- z 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 literal 0 HcmV?d00001