iBATIS

iBATIS
iBATIS
Ibatis.jpg
Entwickler Apache Software Foundation
Aktuelle Version 3.0 (Java), 1.6.2/1.9.2 (.Net)
(17. April 2010)
Aktuelle Vorabversion mybatis 3.0.1
(19. Mai 2010)
Betriebssystem plattformübergreifend
Programmier­sprache Java und .NET
Kategorie Persistenz-Framework
Lizenz Apache License 2.0
ibatis.apache.org

iBATIS (zusammengesetzt aus „internet“ und abatisenglisch für ‚Verhau‘) ist ein Open-Source-Persistenz-Framework für Java und .NET. Für Ruby und Ruby on Rails ist eine portierte Version namens RBatis verfügbar.[1]

Die Hauptaufgabe von iBATIS ist die Trennung von Datenbankzugriffscode vom restlichen Applikationscode. Dafür werden der Applikation Data-Access-Objects (kurz DAOs) zur Verfügung gestellt und die SQL-Statements in XML-Dateien, sogenannte SQL-Maps, ausgelagert. Damit wird die Zuordnung von Tabellen zu Klassen von der Geschäftslogik entkoppelt.

iBATIS ist kein Object-Relational-Mapping-Framework (kurz ORM), die Abbildung zwischen objektorientierten Klassen und relationalen Tabellen muss von den Entwicklern selbst vorgenommen werden, ebenso das Schreiben der SQL-Statements für die Abfragen. Somit ist auch die automatische Erstellung eines Datenbankschemas aus der Klassenhierarchie nicht möglich.

Inhaltsverzeichnis

Geschichte

Das iBATIS-Projekt wurde von Clinton Begin im Jahre 2001 gegründet. Das ursprüngliche Ziel des Projektes war die Entwicklung von kryptographischer Software, was auch ausschlaggebend für den Teil „batis“ im Projektnamen verantwortlich ist („batis“ steht für „abatis“ - englisch für „Verhau“, eine militärische Verteidigungsanlage). Die erste von iBATIS fertiggestellte Software war „Secrets“, ein Open-Source-Verschlüsselungs- und Signierungstool in Java.

Anfang 2002 erschien ein Microsoft-Artikel, der behauptete .NET wäre 10-mal schneller und 4-mal produktiver als J2EE. Das veranlasste das iBATIS-Projekt die Beispielapplikation „JPetStore“ (erste Version 1. Juli 2002) zu schreiben und damit die Behauptungen des Artikels zu widerlegen. Der dabei verwendete Persistenzlayer, die SQL-Maps und Data-Access-Objects, erregte das Aufsehen der Open-Source-Community. Daraus entstand das iBATIS-Framework, das einfach die Zusammenfassung der beiden Teile darstellt.[2]

Heute ist iBATIS nur mehr das Persistenzframework, weiterhin bestehend aus den beiden Hauptbestandteilen SQL-Maps und Data-Access-Objects. JPetStore fungiert dabei als das offizielle Beispiel für den typischen Gebrauch von iBATIS.[3]

Das Framework gibt es derzeit in unterschiedlichen Versionen für die Programmiersprachen Java und .NET. Für Ruby gibt es eine Portierung namens RBatis. Das jBati-Projekt, ein ORM-Mapper für JavaScript ist von iBATIS inspiriert.[4] Das Apache-Projekt iBator bietet ein Tool für iBATIS – es generiert aus Datenbanken die iBATIS-Mapping-Files.[5]

Im Laufe des Jahres 2010 zog iBATIS von der Apache Software Foundation nach Google Code um. Dieser Umzug wurde mit der Verfügbarkeit neuer Technologien im Bereich Soziale Netzwerke, Versionsverwaltung und Open Source Infrastruktur begründet.[6]. Dabei wurde auch iBATIS in mybatis umbenannt. Das Projekt steht aber weiterhin unter der Apache Lizenz.

Funktionalität

Die Hauptfunktionalität von iBATIS ist die Trennung von Datenbankzugriffscode vom restlichen Applikationscode. Die wichtigsten Komponenten dafür sind die Data-Access-Objects, über die die Applikation mit dem Persistenzlayer kommuniziert, sowie die SQL-Maps, die die Datenbankzugriffe entkoppeln.

Wie die meisten Persistenzframeworks bietet iBATIS noch eine Reihe von über die reine Persistenz hinausgehenden Funktionen. Das sind z.B. die Unterstützung für Transaktionen, sowohl lokale als auch globale (d. h. datenbankübergreifende) über JTA und diverse Performanceoptimierungen wie lazy loading, join fetching oder caching.

Beispiel

Es sei eine Tabelle KUNDE gegeben, die mit folgender SQL-Anweisung erstellt worden ist:

CREATE TABLE KUNDE (
  K_ID   INTEGER NOT NULL PRIMARY KEY, 
  K_NAME VARCHAR(128), 
  K_STR  VARCHAR(128), 
  K_ORT  VARCHAR(128), 
  K_PLZ  INTEGER)

Des Weiteren existiert folgendes POJO:

package beispiel;
 
public class Kunde {
  private int id;
  private String name;
  private String ort;
  private String strasse;
  private int plz;
 
  //Getter- und Setter-Methoden folgen 
}

Um eine Abfrage ausführen zu können, muss eine XML-Deskriptordatei vorhanden sein:

  <select id="getKunde" parameterClass="java.lang.Integer" resultClass="beispiel.Kunde">
    SELECT K_ID AS id,
      K_NAME AS name,
      K_STR AS strasse,
      K_ORT AS ort,
      K_PLZ AS plz
    FROM KUNDE
    WHERE K_ID = #value#
  </select>

Die Angabe #value# bezieht sich auf den Integer-Wert, der bei der Abfrage mitgegeben werden muss. Als Parameter kann auch ein Objekt oder eine Map verwendet werden, wobei deren Attribute durch die #-Notation genauso eingebunden werden können.

Die Abfrage wird in Java wie folgt geschrieben:

  SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsReader("path-to-my-sqlMapConfig.xml"));
  Kunde kunde = (Kunde) sqlMap.queryForObject("getKunde", 1);
  System.out.println(kunde);

Ohne IBATIS müsste man um funktional dasselbe zu bewirken in Java den folgenden Code schreiben:

   Connection conn = null;
   PreparedStatement ps = null;
   ResultSet rs = null;
   String sql = "SELECT K_ID AS id, K_NAME AS name, K_STR AS strasse, K_ORT AS ort, K_PLZ AS plz FROM KUNDE WHERE K_ID = ?";
   Kunde kunde;
   conn = dataSource.getConnection();
   ps = conn.preparedStatement(sql);
   ps.setInt(1, id);
   rs = ps.executeQuery(); 
   rs.next();
   kunde = new Kunde();
   kunde.setId(rs.getInt("id"));
   kunde.setName(rs.getString("name"));
   kunde.setStrasse(rs.getString("strasse"));
   kunde.setOrt(rs.getString("ort"));
   kunde.setPlz(rs.getString("plz"));
   rs.close();
   conn.close();
   System.out.println(kunde);

Dieser Code wäre nicht nur wesentlich länger, komplexer, fehleranfälliger und schlechter wartbar, sondern wäre auch weniger performant, da hier noch keine der bei IBATIS eingebauten Performanceoptimierungen, wie beispielsweise connection pooling, realisiert wurden.

Siehe auch

Literatur

Weblinks

Einzelnachweise

  1. RDoc Dokumentation für RBatis
  2. Clinton Begin – Implementing the Microsoft® .NET Pet Shop using Java (PDF)
  3. iBATIS Geschichte auf der iBATIS-Website
  4. JBati Homepage
  5. Ibator Seite auf der iBATIS Site
  6. Ankündigung zum Umstieg auf Google Code auf der iBATIS Homepage

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • iBATIS — Desarrollador Apache Software Foundation http://ibatis.apache.org Información general Última versión estable 2.3.4 …   Wikipedia Español

  • IBATIS — Saltar a navegación, búsqueda iBATIS es un framework (método de trabajo) de código abierto basado en capas desarrollado por Apache Software Foundation, que se ocupa de la capa de Persistencia (se sitúa entre la lógica de Negocio y la capa de la… …   Wikipedia Español

  • IBATIS — est un framework Apache de persistance qui permet de mettre en correspondance des requêtes SQL et des instances d objet. Sommaire 1 Principe 2 Association entre objets et relations 3 …   Wikipédia en Français

  • IBatis — est un framework Apache de persistance qui permet de mettre en correspondance des requêtes SQL et des instances d objet. Sommaire 1 Principe 2 Association entre objets et relations 3 …   Wikipédia en Français

  • iBATIS — est un framework Apache de persistance qui permet de mettre en correspondance des requêtes SQL et des instances d objet. Le 21 mai 2010 l équipe de développement a décidé de se déplacer de l Apache Software Foundation vers Google Code en… …   Wikipédia en Français

  • IBATIS — Infobox Software name = Apache iBATIS caption = developer = Apache Software Foundation latest release version = latest release date = latest preview version = latest preview date = operating system = Cross platform programming language = Java… …   Wikipedia

  • MyBatis — Desarrollador El equipo MyBatis http://www.mybatis.org Información general Última versión estable 3.0.6 9 de octubre de 2011; …   Wikipedia Español

  • MyBatis — Developer(s) The MyBatis team Stable release 3.0.6 / October 9, 2011; 18 days ago (2011 10 09) Development status Active Written in …   Wikipedia

  • Mapping objet-relationnel — Un mapping objet relationnel (en anglais object relational mapping ou ORM) est une technique de programmation informatique qui crée l illusion d une base de données orientée objet à partir d une base de données relationnelle en définissant des… …   Wikipédia en Français

  • Spring Framework — Infobox Software name = Spring Framework caption = developer = [http://www.springsource.com SpringSource] latest release version = 2.5.5 latest release date = release date|2008|06|23 latest preview version = latest preview date = operating system …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”