What makes Doctrine is the best ORM?
What is ORM? ORM stands for the object-relational mapping. ORM is a programming technique used to convert the data between incompatible type system in an object-oriented programming language.
It created the “virtual object database” that can be used within the programming languages. There are many ORM’s available in the market in each technology in which some famous ORM are ActiveJPA, ActiveRecord (AR in Yii Framework) Ebean, Database objects, CakePHP, Propel and the best one Doctrine. But why Doctrine ORM is so famous and best, what is the reason behind this we will look on this below but we will learn first what is Doctrine? Doctrine is a set of PHP libraries which primarily focus on providing persistence services and related functionality.
Doctrine 2.x (Data mapping using Entity Manager):
$student = new Student(); $student->fname = "rajeev"; $student->lname = "sharma"; $entityManager->persist($student); $entityManager->flush(); echo "The student with id $student->id has been saved.";
Doctrine 1.x (Active Record pattern):
$student = new Student(); $student->name = "rajeev"; $student->password = "Sharma"; $student->save(); echo "The student with id $student->id has been saved.";
1. Logical domain keeps separate from the presentational logic:
The main is the software industry is how you co-relate your logical and how that logical part full-fill the presentation part for the user.
In many ORM if you will use then you will find that there are strict rule of that, that you have to use particular way only for the particular presentation but in Doctrine both the things are kept separated you can make your full logical first and then you decide what the view or in presentation you want or vice-versa.
2. Easily enforcement of Business rules:
Each application has some business logic that on which terms and conditions application should be work according to the requirements.
So, same there is also with the Doctrine the business rules consist of rules and processes around how the application should work. Knowing when and where to put the business rules little bit a tricky.
This business logic should be kept in the controller. Normally you will see the logic like this in the controller:
public function ezeelive() { $ezee = User::find(Input::get('userid'); $ezee2 = ezee2::find(Input::get('ezee2id'); if($ezee2->users->contains($ezee) { $ezee2->posts()->save(Post::create(Input::all())); } return $ezee2; }
You can enforce the business logic like this
public function addPost(Post $abc) { if($this->isMemberOf($abc->user)) { $this->xyz[] = $abc; } }
This is a easiest way to use the business logic in ORM which the only Doctrine have none other.
3. Doctrine behavior support:
All behaviors supported in Doctrine ORM are well supported by the ORM designers. You have to just write the definition once in a code and everywhere you can refer to the same again and again.
You can also configure the behavior of these function by going into the config file and do changes as per your convenience.
By using ORM design you can create the behaviors in a minute. You have to select the options according to the value and that will be assigned to your definition behavior it’s so easy in the Doctrine that easily defined behaviors get assigned to the project.
4. Inheritance:
Inheritance is again the great feature implemented in this ORM. With ORM design you will not get any problem in implementing the inheritance. ORM designers wizard gives easy and great way to do so.
5. MVC framework:
You can use Doctrine ORM with any MVC framework for the project use. In ORM designers there is an explicit support for the 2 most used MVC frameworks that are Symfony and Zend framework.
Use of any other MVC framework is also very east in the Doctrine you have to just choose the option “without MVC” at the start of your project.
The feature of Doctrine ORM 2.5 :
- Doctrine 2.5 require minimum PHP 5.4 and dropping support for PHP 5.3
- PostLoad events now triggered after associations are loaded
- Embeddable Objects supports creating multiple PHP objects from one database table.
- Second-Level-Cache: objects cache in Memcache, Redis, Riak, MongoDB etc.
- Support for ManyToMany associations
- Add new contains() expression criteria : For like SQL condition
- Allow configuring Index flags
In the Last Word:
After looking at these major advancements and features in the Doctrine ORM we can say that Doctrine is the best ORM system available till now with the MVC framework that can be implemented with any technology.
By taking these reasons in the mind we will suggest you use Doctrine ORM only for the exchange of data between the incompatible system and language.
Leave a Reply