1
0
mirror of synced 2024-12-13 22:56:04 +03:00
doctrine2/manual/features.php
2006-12-03 23:41:38 +00:00

98 lines
3.6 KiB
PHP

<?php
include("top.php");
?>
<table width="100%" cellspacing=0 cellpadding=0>
<tr>
<td width=50>
<td>
<td align="left" valign="top">
<table width="100%" cellspacing=1 cellpadding=1>
<tr>
<td bgcolor="white">
<img src="images/logo.jpg" align="left"><b class="title">Doctrine - PHP Data Persistence and ORM Tool</b>
<hr>
</td>
</tr>
<tr>
<td>
<ul>
<b class='title'>GENERAL FEATURES</b>
<ul>
<li \> Fully object-oriented following best practices and design patterns
<li \>Multiple databases
<li \>Database connection pooling with connection-record -registry
<li \>Runtime configuration (no XML needed!)
<li \>Very modular structure (only uses the needed features)
<li \>The runtime components can be compiled into a single file
<li \>Leveled configuration (attributes can be set at global, connection and table levels)
</ul>
<br \>
<b class='title'>DATABASE ABSTRACTION</b>
<ul>
<li \>A DSN (data source name) or array format for specifying database servers
<li \>Datatype abstraction and on demand datatype conversion
<li \>supports PDO
<li \>Database query profiling
<li \>Query caching
<li \>Sequence / autoincrement emulation
<li \>Replace emulation
<li \>RDBMS management methods (creating, dropping, altering)
<li \>SQL function call abstraction
<li \>SQL expression abstraction
<li \>Pattern matching abstraction
<li \>Portable error codes
<li \>Nested transactions
<li \>Transaction isolation abstraction
<li \>Transaction savepoint abstraction
<li \>Index/Unique Key/Primary Key support
<li \>Ability to read the information schema
<li \>Reverse engineering schemas from an existing database
<li \>LIMIT / OFFSET emulation
</ul>
<br \>
<b class='title'>OBJECT RELATIONAL MAPPING</b>
<ul>
<b class='title'>General features</b>
<li \>Validators
<li \>Transactional errorStack for easy retrieval of all errors
<li \>EventListeners
<li \>UnitOfWork pattern (easy saving of all pending objects)
<li \>Uses ActiveRecord pattern
<li \>State-wise records and transactions
<li \>Importing existing database schemas to Doctrine ActiveRecord objects
<li \>Exporting Doctrine ActiveRecords to database (= automatic table creation)
<br \><br \>
<b class='title'>Mapping</b>
<li \>Composite, Natural, Autoincremented and Sequential identifiers
<li \>PHP Array / Object data types for columns (automatic serialization/unserialization)
<li \>Gzip datatype for all databases
<li \>Emulated enum datatype for all databases
<li \>Datatype abstraction
<li \>Column aggregation inheritance
<li \>One-class-one-table inheritance as well as One-table
<li \>One-to-many, many-to-one, one-to-one and many-to-many relations
<li \>Self-referencing relations even for association table relations
<li \>Relation aliases
<br \><br \>
<b class='title'>Object population</b>
<li \>DQL (Doctrine Query Language), an EJB 3 spec compliant OQL
<li \><b>The limit-subquery-algorithm</b>
<li \>OO-style query API for both DQL and raw SQL
<li \>Object population from database views
<li \>Object population through raw SQL
<br \><br \>
<b class='title'>Transactions and locking</b>
<li \>Pessimistic offline locking
<li \>Savepoints, transaction isolation levels and nested transactions
<li \>Transactional query optimization (gathering of DELETE statements)
</ul>
</ul>
</td>
</tr>
</tr>
</table>