Jump to content

Apache Empire-db: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Rdoebele (talk | contribs)
m References
Rdoebele (talk | contribs)
mNo edit summary
Line 20: Line 20:
}}
}}


'''Apache Empire-db''' is an lightweight 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]].
'''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 develop and describe the underlying data model.
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 Annotations to learn and allows user defined interception and extensions.
* 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]]
*[[EclipseLink]]
*[[Apache Struts]]


==External links ==
==External links ==

Revision as of 13:04, 27 June 2009


Apache Empire-db
Developer(s)Apache Software Foundation
Written inJava
Operating systemCross-platform
TypePersistence Framework
LicenseApache License 2.0
Websitehttp://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.

See also