Apache Empire-db: Difference between revisions

Content deleted Content added
ZéroBot (talk | contribs)
m r2.7.1) (Robot: Adding es:Apache Empire-db
 
(29 intermediate revisions by 24 users not shown)
Line 1:
{{Short description|Open-source Java library}}
{{Unreferenced|date=May 2011}}
{{adNotability|Products|date=MayMarch 20112022}}
{{ Infobox Softwaresoftware
| name = Apache Empire-db
| logo = Apache_Empire-db_Logo.svg
| logo = [[File:Empire-db.gif|200px]]
| logo size = 300px
| screenshot =
| caption =
| developer = [[Apache Software Foundation]]
| status = incubation
| latest release version = 23.20.0
| latest release date = {{releaseStart date and age|20112022|03|11|02}}
| latest preview version =
| latest preview date =
| operating system = [[Cross-platform]]
| repo = {{URL|https://gitbox.apache.org/repos/asf?p{{=}}empire-db.git|EmpireDB Repository}}
| programming language = [[Java (programming language)|Java]]
| genre = [[Persistence Framework]]
| license = [[Apache License]] 2.0]]
| website = http://incubator.apache.org/empire-db
| website = {{URL|//empire-db.apache.org/}}
}}
'''Apache Empire-db''' is a Java library that provides a high level object -oriented API for accessing [[Relationalrelational database management system]]s (RDBMS) through [[JDBC]]. Apache Empire-db is Openopen Sourcesource and provided under the [[Apache License 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]] Empire-db does not use XML files or Java annotations to provide a mapping of plain (old) javaJava 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 literalsliteral]]s.
'''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 2.0 license from the [[Apache Software Foundation]].
 
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-Mappingmapping 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>
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 literals.
 
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.
 
== Major benefits ==
Empire-db’sdb'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’sIDE's code completion can be used to browse the data model, increases productivity and eliminates the need for other external tools or IDE-plugins.
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.
 
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’sfield'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.
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 ==
 
* 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 42 ⟶ 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 you with the data exactly as you need itneeded, 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.
 
== 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:
 
<sourcesyntaxhighlight lang="sql">
SELECT t1.EMPLOYEE_ID,
t1.LASTNAME || ', ' || t1.FIRSTNAME AS NAME,
Line 60 ⟶ 57:
AND t1.RETIRED=0
ORDER BY t1.LASTNAME, t1.FIRSTNAME
</syntaxhighlight>
</source>
 
This SQL statement can be created using Empire-db's command API using object model references like this:
 
<sourcesyntaxhighlight lang="java">
SampleDB db = getDatabase();
// Declare shortcuts (not necessary but convenient)
Line 83 ⟶ 80:
cmd.orderBy(EMP.LASTNAME);
cmd.orderBy(EMP.FIRSTNAME);
</syntaxhighlight>
</source>
 
In order to execute the query and retrieve a list of POJO's holding the query result the following code may be used:
 
<sourcesyntaxhighlight lang="java">
// Class definition for target objects
public class EmployeeInfo {
Line 93 ⟶ 90:
private String name;
private String department;
// GettterGetter's and Setters for all properties
// or a public Constructor using fields
public get...
Line 102 ⟶ 99:
DBReader reader = new DBReader();
try {
reader.open(cmd, getConnection());
List<EmployeeInfo> empList = reader.getBeanList(EmployeeInfo.class);
} finally {
reader.close()
}
</syntaxhighlight>
</source>
 
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 Openopen Sourcesource and first published though SourceForge.Netnet.
 
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 121 ⟶ 117:
In October 2008 Empire-db 2.0.4 was the first official Apache incubator release with all package names changed to begin with org.apache.empire.
 
== See also ==
{{Portal|JavaComputer programming}}
* [[Java Database Connectivity]] (JDBC)
* [[Object-relational mapping]]
* [[Hibernate (Java)|Hibernate]]
* [[iBATIS]]
* [[TopLink]]
* [[Apache Struts]]
 
==References==
{{reflist}}
 
== External links ==
* {{official website|//empire-db.apache.org/}}
*[http://incubator.apache.org/empire-db Empire-db project page at the Apache Foundation]
{{apache}}
 
[[Category:{{Apache Software Foundation|Empire-db]]}}
[[Category:Computer languages]]
 
[[esCategory:Apache Software Foundation projects|Empire-db]]
[[Category:Java (programming language) libraries]]