Content deleted Content added
m Navbox was moved in September 2018, replaced: {{apache}} → {{Apache Software Foundation}} |
removed Category:Java (programming language); added Category:Java (programming language) libraries using HotCat |
||
(14 intermediate revisions by 11 users not shown) | |||
Line 1:
{{Short description|Open-source Java library}}
{{Notability|Products|date=March 2022}}
{{
| name
| logo
| logo size
| screenshot =
| ▲| developer = [[Apache Software Foundation]]
▲| latest release version = 2.4.3
▲| latest release date = {{release date|2014|08|20}}
| latest preview version =
| latest preview date
| operating system
| repo = {{URL|https://gitbox.apache.org/repos/asf?p{{=}}empire-db.git|EmpireDB Repository}}
| programming language
| genre
| license
| website
}}
'''Apache Empire-db''' is a Java library that provides a high level object-oriented API for accessing [[relational database management system]]s (RDBMS) through [[JDBC]]. Apache Empire-db is open source and provided under the [[Apache License 2.0]] from the [[Apache Software Foundation]].
Compared to [[Object-relational mapping]] (ORM) or other data persistence solutions such as [[Hibernate (Java)|Hibernate]], [[iBATIS]] or [[TopLink]] Empire-db 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 and an API that works almost solely with object references rather than [[string literal]]s.
Empire-db's aim is to provide better software quality and improved maintainability through increased compile-time safety and reduced redundancy of metadata. Additionally applications may benefit from better performance due to full control over [[SQL]] statements and their execution by the developer compared to most OR-mapping solutions.<ref>{{Cite web |title=Apache Empire-db |url=https://empire-db.apache.org/pages/home.html |access-date=2022-03-21 |website=empire-db.apache.org}}</ref>
== Major benefits ==
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 almost 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
== Features at a glance ==
* Data model definition through a Java object model omits the need to learn XML schemas or annotations and easily allows user interceptions and extensions.
* Portable RDBMS independent record handling and command definition with support for a variety of relational databases such as [[Oracle Database|Oracle]], [[Microsoft SQL Server]], [[MySQL]], [[Apache Derby|Derby]], [[H2 (DBMS)|H2]] and [[HSQLDB]] (as of version 2.0.5)
Line 43 ⟶ 40:
* 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
* Lightweight and passive library with zero configuration footprint that allows simple integration with any architecture or framework.
== Example ==
As an example consider a database with two tables called ''Employees'' and ''Departments'' for which a list of employees in a particular format, with certain constraints and a given order should be retrieved.
The corresponding Oracle syntax SQL statement is assumed to be as follows:
<
SELECT t1.EMPLOYEE_ID,
t1.LASTNAME || ', ' || t1.FIRSTNAME AS NAME,
Line 61 ⟶ 57:
AND t1.RETIRED=0
ORDER BY t1.LASTNAME, t1.FIRSTNAME
</syntaxhighlight>
This SQL statement can be created using Empire-db's command API using object model references like this:
<
SampleDB db = getDatabase();
// Declare shortcuts (not necessary but convenient)
Line 84 ⟶ 80:
cmd.orderBy(EMP.LASTNAME);
cmd.orderBy(EMP.FIRSTNAME);
</syntaxhighlight>
In order to execute the query and retrieve a list of POJO's holding the query result the following code may be used:
<
// Class definition for target objects
public class EmployeeInfo {
Line 108 ⟶ 104:
reader.close()
}
</syntaxhighlight>
Empire-db also supports field access through object references or obtaining query results as XML.
== History ==
Empire-db was originally developed at ESTEAM Software a German software development company which used Empire-db to develop various applications for a variety of different branches.
In January 2008 Empire-db was made officially open
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.
Line 123 ⟶ 118:
== See also ==
{{Portal|
* [[Java Database Connectivity]] (JDBC)
* [[Object-relational mapping]]
Line 130 ⟶ 125:
* [[TopLink]]
* [[Apache Struts]]
==References==
{{reflist}}
== External links ==
* {{official website|//empire-db.apache.org/}}
{{Apache Software Foundation}}
[[Category:Apache Software Foundation projects|Empire-db]]
[[Category:Java (programming language) libraries]]
|