what is doctrine orm and should i use it? - phpne

37

Upload: juozas-kaziukenas

Post on 18-Nov-2014

6.604 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: What is Doctrine ORM and should i use it? - PHPNE
Page 2: What is Doctrine ORM and should i use it? - PHPNE

Juozas Kaziukėnas, Lithuanian

You can call me Joe

3 years in Edinburgh, UK

CEO of Web Species Ltd

Occasional open source developer

Conferences speaker

More info in http://juokaz.com and twitter @juokaz

Page 3: What is Doctrine ORM and should i use it? - PHPNE
Page 4: What is Doctrine ORM and should i use it? - PHPNE

Object-relational mapping in computer software is a programming technique for

converting data between incompatible type

systems in object-oriented programming

languages. This creates, in effect, a "virtual

object database" that can be used from

within the programming language.

Page 5: What is Doctrine ORM and should i use it? - PHPNE

Usually maps data from database to objects › Database row === entity instance

› Table === entity specification

Objects are awesome, things you learned in OOP 101

Also map relations

Handle types conversions

Data handling functionality on top

Additional functions

Part of good design › Part of Domain model

Page 6: What is Doctrine ORM and should i use it? - PHPNE
Page 7: What is Doctrine ORM and should i use it? - PHPNE

“Ask someone to use mysql_query

nowadays and you might get punched in

a face.

Twice.

Because they would also need to use mysql_real_escape_string.”

From “The new era of PHP frameworks”

Page 8: What is Doctrine ORM and should i use it? - PHPNE

SQL everywhere

“old-style” PHP

Hard to understand

No migrations possible

Not OOP › At least not for database interactions

Much more

Page 9: What is Doctrine ORM and should i use it? - PHPNE
Page 10: What is Doctrine ORM and should i use it? - PHPNE

Don’t work in all cases

› If you are building a Facebook+

Adds overhead

› Impossible to avoid

Requires very good OOP understanding

Some people just hate them

› Read this “ORM is an anti-pattern”

Page 11: What is Doctrine ORM and should i use it? - PHPNE
Page 12: What is Doctrine ORM and should i use it? - PHPNE

If you are tired of SQL queries

If you need to bootstrap something

quickly

If you like working with objects

For business logic-heavy applications

Page 13: What is Doctrine ORM and should i use it? - PHPNE
Page 14: What is Doctrine ORM and should i use it? - PHPNE

Propel › Started: August 2003

› Based on Apache Torgue

Doctrine › Started: April 2006

› Doctrine 2:

Started: early 2008

Released: December 22, 2010

A bunch of others I’m not old enough to have used or are really bad

Page 15: What is Doctrine ORM and should i use it? - PHPNE

We are going to talk about Doctrine

Page 16: What is Doctrine ORM and should i use it? - PHPNE
Page 17: What is Doctrine ORM and should i use it? - PHPNE
Page 18: What is Doctrine ORM and should i use it? - PHPNE

Slow

ActiveRecord

High memory usage (cyclic references)

Magic! (eg. Behaviors)

Hard to execute raw SQL

Still the best ORM for PHP available

yesterday

› Popular among Symfony users

Page 19: What is Doctrine ORM and should i use it? - PHPNE
Page 20: What is Doctrine ORM and should i use it? - PHPNE

Doctrine 2 is going to blow you away

No more ActiveRecord

› $record->save();

No more Behaviours

No more slowness

Page 21: What is Doctrine ORM and should i use it? - PHPNE

PHP 5.3

Based on JSR-317 a.k.a. JPA v2.0

EntityManager

DataMapper Plain PHP objects

Components › Common

› DBAL

› ORM

› ODM

Optimizations Performance

Page 22: What is Doctrine ORM and should i use it? - PHPNE
Page 23: What is Doctrine ORM and should i use it? - PHPNE

Connection

Page 24: What is Doctrine ORM and should i use it? - PHPNE

Annotations

Page 25: What is Doctrine ORM and should i use it? - PHPNE
Page 26: What is Doctrine ORM and should i use it? - PHPNE

EntityManager

Page 27: What is Doctrine ORM and should i use it? - PHPNE

Querying

Page 28: What is Doctrine ORM and should i use it? - PHPNE
Page 29: What is Doctrine ORM and should i use it? - PHPNE

Start with CLI

Ready to use with Symfony2

Should be ready with ZF2

Quite a learning curve

› It’s worth it

Supports most of the RDBMS and

MongoDB, CouchDB

Page 30: What is Doctrine ORM and should i use it? - PHPNE

I used it for…

E-commerce systems

Backend systems for MongoDB

databases

Prototyping data structure

Page 31: What is Doctrine ORM and should i use it? - PHPNE
Page 32: What is Doctrine ORM and should i use it? - PHPNE

Less than you think it is

Still more than Facebook would allow

› Are you building the next Facebook?

Much faster and leaner than Doctrine 1

Clever transaction handling

› Doctrine is more clever than you

› Might be faster than calling mysql_query

Page 33: What is Doctrine ORM and should i use it? - PHPNE
Page 34: What is Doctrine ORM and should i use it? - PHPNE

Start with DBAL first

Might be tricky to integrate with ORM

Depends on how good your code is

Remember: requires PHP 5.3

Uses PSR-0 class layout, easily

autoload’able

Page 35: What is Doctrine ORM and should i use it? - PHPNE
Page 36: What is Doctrine ORM and should i use it? - PHPNE

Doctrine 2 rocks

Growing more and more popular

Super easy to use with Symfony2

Simplifies things

Depends on your use-case if you’d want

to use it

Throw away that Propel code