31
Doctrine 2 Juozas Kaziukėnas www.juokaz.com / [email protected] / @juokaz

Juozas Kaziukėnas / [email protected] / @juokaz

Embed Size (px)

Citation preview

Page 1: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 2Juozas Kaziukėnas

www.juokaz.com / [email protected] / @juokaz

Page 2: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Juozas Kaziukėnas, Lithuanian You can call me Joe 2 years in Edinburgh, UK Studying in University of Edinburgh Software developer, consultant and evangelist Open source developer for Zend Framework,

Doctrine… More info in www.juokaz.com and twitter @juokaz

Who am I?

Page 3: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine users? Propel users? (you will be converted!) Interested in DB’s and PHP? Interested in PHP news?

Who are you?

Page 4: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine is ORM tool for PHP

Inspired by Hibernate, ActiveRecord etc.

Page 5: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 1.X

Page 6: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Slow High memory usage (cyclic references) Magic! (eg. Behaviors) Hard to execute raw SQL Still the best ORM for PHP available today

Doctrine 1.X

Page 7: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

ActiveRecord

Root of all problems!

Page 8: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

ActiveRecord

Page 9: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Stable Works Makes development fast, clean and

consistent Used in production

Still the best ORM for PHP available today

Page 10: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 2

Page 11: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 2 is completely

different

Page 12: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Everything you can do in Doctrine 1 you can do in Doctrine

2, just in a different way.

Page 13: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Rewritten from scratch (almost) PHP 5.3 Decoupled components Simplified API

◦ “Complexified” internals?.. Performance

◦ New hydration◦ Less magic◦ Overall cleanup

What’s new?

Page 14: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 2 Architecture:Based on JSR-317 a.k.a. JPA v2.0

Page 15: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

[Common, DBAL, ORM, ODM]

Page 16: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Caching Events Annotations Class loaders … more

Common

Page 17: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Annotations

Page 18: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Can be used without ORM Abstraction for MySQL, PgSQL, Oracle,

Microsoft SQL, DB2 etc. PHP types mapping to DB types Extendable … more

DBAL

Page 19: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Connection

Page 20: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Actual ORM component Uses Common and DBAL No more ActiveRecord Entities

◦ Metadata mapping Entity manager Query language

◦ Faster, cleaner, clever, extendable◦ No forcing

ORM

Page 21: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Entity

Page 22: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

EntityManager

Page 23: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Querying

Page 24: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

ODM? Hell yeah NoSQL!!!

MongoDB, CauchDB

Page 25: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Abstracts NoSQL databases Similar Metadata configuration A lot of functionality from ORM also

available in ODM◦ Querying◦ EntityManager -> DocumentManager

ODM

Page 26: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

ODM Querying

Page 27: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Much more!

Page 28: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Migrating from Doctrine 1 to Doctrine 2 Can be tricky Migrating:

◦ … models is easy◦ … application code can require some major

refactoring Do it only if it’s worth it

Migration

Page 29: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Doctrine 2 will be released soon Most of the functionality is there Used in production “The library” for PHP 5.3 Symfony, Zend Framework etc.

Finishing

Page 30: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Questions?

Page 31: Juozas Kaziukėnas  / juozas@juokaz.com / @juokaz

Juozas Kaziukėnas www.juokaz.com [email protected] twitter: @juokaz

Rate talk at http://joind.in/2105

* Illustrations from http://images.google.com

Thanks!!!