title: Doctrine (PHP)
text: # Doctrine (PHP)
  
  Doctrine es un mapeador objeto-relacional (ORM) escrito en PHP que proporciona una capa de persistencia para objetos PHP. Es una capa de abstracción que se sitúa justo encima de un sistema de gestión de bases de datos (SGBD).
  
  ## Demostración de uso
  
  En Doctrine 2 las entidades son objetos PHP livianos que contienen propiedades persistibles. Una propiedad persistible es una instancia variable de la entidad que es guardada y obtenida desde la base de datos por la capacidad de mapear los datos a través de Entity Manager, una implementación del patrón data mapper:
  
  Doctrine 1.x se basa en el active record pattern para trabajar con datos, en los que una clase se corresponde con una tabla de base de datos. Por ejemplo, si un programador quiere crear un nuevo objeto "Usuario" en la base de datos, no tendrá que escribir ninguna sentencia SQL, simplemente lo siguiente:
  
  ## Características
  
  Una característica de Doctrine es el bajo nivel de configuración que necesita para empezar un proyecto. Doctrine puede generar clases a partir de una base de datos existente y después el programador puede especificar relaciones y añadir funcionalidad extra a las clases autogeneradas. No es necesario generar o mantener complejos esquemas XML de base de datos como en otros frameworks.
  
  Otra característica importante de Doctrine es la posibilidad de escribir consultas de base de datos utilizando un dialecto de SQL denominado DQL (Doctrine Query Language) que está inspirado en Hibernate (Java).
  
  Otras características notables de Doctrine son:
  
  * Soporte para datos jerárquicos;
  * Soporte para hooks (métodos que pueden validar o modificar las escrituras y lecturas de la base de datos) y eventos para manejar la lógica de negocio relacionada;
  * Herencia;
  * Un framework de caché que utiliza diversos motores como memcached, SQLite o APC;
  * Transacciones ACID;
  * Diversos comportamientos del modelo (conjuntos anidados, internacionalización, log, índice de búsqueda);
  * Una función "compilar" que combina varios archivos PHP del framework en uno solo para evitar el descenso de rendimiento que provoca incluir varios archivos PHP.
  
  ## Historia
  
  El proyecto Doctrine empezó con Konsta Vesterinen, también conocido como zYne-. El 13 de abril de 2006 se hizo el primer envío al repositorio svn.
  
  ## Influencias
  
  Doctrine tiene influencias de docenas de proyectos de personas muy diferentes. Las mayores influencias son de Hibernate (el ORM de Java) y de ActiveRecord (de Ruby on Rails). Ambos tienen una implementación completa tanto en Java como en Ruby. El propósito de Doctrine es construir una solución igual de potente para PHP.
  
  ## Comunidad
  
  * Existe un canal activo de IRC en el que los usuarios y desarrolladores de Doctrine suelen entrar. El canal está en la red freenode (irc.freenode.net) y el nombre del canal es #doctrine. https://web.archive.org/web/20160821090906/http://irc.freenode.net/#doctrine
  * Lista de correo para usuarios: http://groups.google.com/group/doctrine-user
  * Lista de correo para desarrolladores: http://groups.google.com/group/doctrine-dev
  * Lista de correo de los commit: http://groups.google.com/group/doctrine-svn
  