Apache Empire-db: Difference between revisions
m References |
mNo edit summary |
||
Line 20: | Line 20: | ||
}} |
}} |
||
'''Apache Empire-db''' is an |
'''Apache Empire-db''' is an Java component that provides a high level object oriented API for accessing [[Relational database management system]]s (RDBMS). Apache Empire-db is Open Source and provided under the Apache 2.0 license from the [[Apache Software Foundation]]. |
||
Compared to [[Object-relational mapping]] (ORM) or other data persistence solutions such as [[Hibernate (Java)|Hibernate]], [[iBATIS]] or [[TopLink]] it does not use XML files or Java annotations to provide a mapping of plain (old) java object (POJO's) to database tables, views and columns. Instead Empire-db uses a Java object model to |
Compared to [[Object-relational mapping]] (ORM) or other data persistence solutions such as [[Hibernate (Java)|Hibernate]], [[iBATIS]] or [[TopLink]] it does not use XML files or Java annotations to provide a mapping of plain (old) java object (POJO's) to database tables, views and columns. Instead Empire-db uses a Java object model to describe the underlying data model. |
||
Empire-db’s key strength is its API for dynamic SQL generation for arbitrary select, update, insert or delete statements, purely by using Java methods which reference the model objects. This provides type-safety and entirely eliminates the use of string literals for names or expressions in code. Additionally DBMS independence is achieved through a pluggable driver model. |
Empire-db’s key strength is its API for dynamic SQL generation for arbitrary select, update, insert or delete statements, purely by using Java methods which reference the model objects. This provides type-safety and entirely eliminates the use of string literals for names or expressions in code. Additionally DBMS independence is achieved through a pluggable driver model. |
||
Line 33: | Line 33: | ||
== Features at a glance: == |
== Features at a glance: == |
||
* RDBMS independent data model definition in Java requires no XML schemas or |
* RDBMS independent data model definition in Java requires no XML schemas or annotations to learn and easily allows user defined interceptions and extensions. |
||
* Portable record handling and command definition with support for a variety of relational databases such as Oracle, Microsoft SQL-Server, MySQL, Derby, H2 and HSQLDB (version 2.0.5) |
* Portable record handling and command definition with support for a variety of relational databases such as Oracle, Microsoft SQL-Server, MySQL, Derby, H2 and HSQLDB (as of version 2.0.5) |
||
* DDL generation for target DBMS from object definition, either for the entire database or for individual objects such as tables, views, columns and relations. |
* DDL generation for target DBMS from object definition, either for the entire database or for individual objects such as tables, views, columns and relations. |
||
* Type-safe API for dynamic SQL command generation allows dynamic building of SQL statements using API methods and object references only instead of string literals. This provides a high degree of type-safety which simplifies testing and maintenance. |
* Type-safe API for dynamic SQL command generation allows dynamic building of SQL statements using API methods and object references only instead of string literals. This provides a high degree of type-safety which simplifies testing and maintenance. |
||
Line 41: | Line 41: | ||
* Support for optimistic locking through timestamp column. |
* Support for optimistic locking through timestamp column. |
||
* No need to always work with full database entities. Build queries to provide you with the data exactly as you need it, and obtain the result for example as a list of any type of POJO with matching property setters or constructor. |
* No need to always work with full database entities. Build queries to provide you with the data exactly as you need it, and obtain the result for example as a list of any type of POJO with matching property setters or constructor. |
||
* Lightweight and passive library with zero configuration footprint allows simple integration with any architecture or framework. |
* Lightweight and passive library with zero configuration footprint that allows simple integration with any architecture or framework. |
||
Line 59: | Line 59: | ||
*[[iBATIS]] |
*[[iBATIS]] |
||
*[[TopLink]] |
*[[TopLink]] |
||
*[[ |
*[[Apache Struts]] |
||
==External links == |
==External links == |
Revision as of 13:04, 27 June 2009
This article or section is in a state of significant expansion or restructuring. You are welcome to assist in its construction by editing it as well. If this article or section has not been edited in several days, please remove this template. If you are the editor who added this template and you are actively editing, please be sure to replace this template with {{in use}} during the active editing session. Click on the link for template parameters to use.
This article was last edited by Rdoebele (talk | contribs) 15 years ago. (Update timer) |
Developer(s) | Apache Software Foundation |
---|---|
Written in | Java |
Operating system | Cross-platform |
Type | Persistence Framework |
License | Apache License 2.0 |
Website | http://incubator.apache.org/empire-db |
Apache Empire-db is an Java component that provides a high level object oriented API for accessing Relational database management systems (RDBMS). Apache Empire-db is Open Source and provided under the Apache 2.0 license from the Apache Software Foundation.
Compared to Object-relational mapping (ORM) or other data persistence solutions such as Hibernate, iBATIS or TopLink it does not use XML files or Java annotations to provide a mapping of plain (old) java object (POJO's) to database tables, views and columns. Instead Empire-db uses a Java object model to describe the underlying data model.
Empire-db’s key strength is its API for dynamic SQL generation for arbitrary select, update, insert or delete statements, purely by using Java methods which reference the model objects. This provides type-safety and entirely eliminates the use of string literals for names or expressions in code. Additionally DBMS independence is achieved through a pluggable driver model.
Using references to table and column objects significantly improves compile-time safety and thus reduces the amount of testing. As a positive side effect the IDE’s code completion can be used to browse the data model, increases productivity and eliminates the need for other external tools or IDE-plugins.
Further the object model also provides safe and easy access to meta-information of the data model such as field data type, maximum field length, whether a field is mandatory and a finite choice of options for a field’s values. Metadata is user-extensible and not limited to DBMS related metadata. Availability of meta-information encourages more generic code and eliminates redundancies throughout application layers.
Features at a glance:
- RDBMS independent data model definition in Java requires no XML schemas or annotations to learn and easily allows user defined interceptions and extensions.
- Portable record handling and command definition with support for a variety of relational databases such as Oracle, Microsoft SQL-Server, MySQL, Derby, H2 and HSQLDB (as of version 2.0.5)
- DDL generation for target DBMS from object definition, either for the entire database or for individual objects such as tables, views, columns and relations.
- Type-safe API for dynamic SQL command generation allows dynamic building of SQL statements using API methods and object references only instead of string literals. This provides a high degree of type-safety which simplifies testing and maintenance.
- Reduced amount of Java code and powerful interception of field and metadata access through dynamic beans as an alternative to POJO’s. This even supports data model changes (DDL) at runtime.
- Automatic tracking of record state and field modification (aka "dirty checking") to only insert/ update modified fields.
- Support for optimistic locking through timestamp column.
- No need to always work with full database entities. Build queries to provide you with the data exactly as you need it, and obtain the result for example as a list of any type of POJO with matching property setters or constructor.
- Lightweight and passive library with zero configuration footprint that allows simple integration with any architecture or framework.
History
Empire-db was originally developed at ESTEAM Software a German software company which used Empire-db to develop various applications for a variety of branches.
In January 2008 Empire-db was made officially Open Source and first published though SourceForge.Net. In June 2008 a proposal was submitted to the Apache Software Foundation for Empire-db to become an Apache Incubator project. In July 2008 Empire-db got accepted for incubation and all rights over the Software were transferred to the Apache Foundation.
In October 2008 Empire-db 2.0.4 was the first official Apache release with all package names changed to begin with org.apache.empire.