3 Hibernate ein einfaches Beispiel
|
|
- Heidi Pohl
- vor 8 Jahren
- Abrufe
Transkript
1 35 In diesem Kapitel steigen wir anhand eines kleinen Beispiels in das Thema Hibernate ein. Als Beispiel verwenden wir einen elektronischen Terminkalender, mit dem persönliche und Gruppentermine verwaltet werden können. Wir konzentrieren uns (natürlich) auf die Fachlogik und Datenhaltung und betrachten die Benutzungsoberfläche allenfalls am Rande. Als Datenbank verwenden wir in diesem Kapitel die H2. H2 lässt sich ganz einfach installieren und konfigurieren. Außerdem erlaubt sie den Betrieb der Datenbank im Hauptspeicher (In-Memory-DB) ohne Sicherung auf der Festplatte. Sie ist daher zum Testen und Ausprobieren sehr gut geeignet. 3.1 Installation von Hibernate und H2 Hibernate ist ein Open-Source-Produkt. Es kann also ohne Zahlungsverpflichtungen verwendet werden. Außerdem ist der Quellcode öffentlich. Das ist insbesondere dann sehr nützlich, wenn man der genauen Funktionsweise von Hibernate auf den Grund gehen will oder muss. Hibernate kann von der Hibernate-Homepage heruntergeladen werden. Hier sind immer mehrere Versionen verfügbar ältere, aktuelle und solche, die zurzeit noch entwickelt werden. Wir verwenden in diesem Buch Hibernate 3 und laden deshalb das aktuelle Hibernate-Release der Version 3 oder höher herunter. Hibernate wird in einem gepackten Format angeboten (zip oder tar.gz sind verfügbar). Diese Archive enthalten neben den für die Entwicklung mit Hibernate benötigten Bibliotheken im Java-typischen JAR-Format auch den Quellcode und die Dokumentation zu Hibernate. Wir entpacken Hibernate in ein eigenes Verzeichnis z.b. c:\programme\hibernate, um es nicht mit unseren jeweiligen Projekten zu vermischen. Hibernate
2 36 Verzeichnisstruktur der Hibernate-Installation Hiernach sind folgende Unterverzeichnisse im Zielverzeichnis zu finden Verzeichnisse in der Hibernate-Installation Verzeichnis bin doc eg etc grammar lib src test Inhalt Enthält Startskripte für die Hibernate-Werkzeuge zum Exportieren und Aktualisieren von Datenbankschemata. Enthält die Dokumentation zu Hibernate. Hier befinden sich die API-Dokumentation im JavaDoc-HTML-Format und die offizielle Hibernate-Referenz im HTML- und PDF-Format. Enthält ein einfaches Beispiel zur Verwendung von Hibernate. Enthält Beispiele zur Konfiguration verschiedener Datenbanken in Hibernate, zum Deployment von Hibernate in JBoss und zum Konfigurieren der unterstützten Caches in Hibernate. Enthält Grammatiken im ANTLR a -Format, welche die Hibernate Query Language (kurz HQL; siehe hierzu Kapitel 7), SQL und die Transformation von HQL zu SQL beschreiben. Enthält eine Reihe von Bibliotheken für den Einsatz von Hibernate in verschiedenen Kontexten. Wir werden jeweils einen Teil dieser Bibliotheken verwenden und immer explizit machen, welche dieser Bibliotheken für das Nachvollziehen der einzelnen Beispiele notwendig sind. Enthält den Hibernate-Quellcode. Der Quellcode ist interessant bei der Fehlersuche und erleichtert die Arbeit mit dem Rahmenwerk in einer Entwicklungsumgebung, da diese dann zu den Signaturen der Methoden auch die Namen der Parameter anzeigen kann. Außerdem ist der Quellcode interessant, wenn wir herausfinden wollen, wie bestimmte Aspekte von Hibernate implementiert sind. Enthält die JUnit b -Testklassen für Hibernate. Die Testklassen eines Rahmenwerkes können häufig aufzeigen, wie die Entwickler sich dessen Verwendung vorgestellt haben. a. ANTLR (kurz für Another Tool for Language Recognition) ist ein Werkzeug zum Erzeugen von Parsern. Für die Verwendung von Hibernate und somit auch für die Lektüre dieses Buches ist ein vertieftes Verständnis dieses Gebiets nicht notwendig. b. JUnit ist eine Bibliothek, welche die Entwicklung automatisch ablaufender Tests unterstützt. Für eine Einführung ins Testen mit JUnit empfehlen wir das Buch»Software-Tests mit JUnit«von Johannes Link (siehe [Link05]). H2 Hibernate kann mit allen gängigen Datenbanken verwendet werden (MySQL, Postgres, Oracle und DB2 seien hier als Beispiele genannt). In den Beispielen für dieses Buch verwenden wir die H2 1, die von heruntergeladen werden kann. Die H2 ist eine einfache, in Java implementierte Datenbank. Sie eignet sich sehr gut zum Entwickeln von Prototypen, da ihre Konfiguration unkompliziert ist und sie schnell gestartet und gestoppt werden kann. Auch die
3 3.2 Vorbereitung der Entwicklungsumgebung 37 H2 sollte in einem eigenen Verzeichnis z.b. c:\programme\h2 installiert werden. Das H2-Archiv enthält folgende Verzeichnisse: Verzeichnisse in der H2-Installation Verzeichnis bin docs odbc Inhalt Enthält das h2.jar, das die Datenbank und den JDBC-Treiber enthält. Außerdem ist hier ein Startskript zm Ausführen der H2 unter Windows enthalten. Enthält die API-Dokumentation im JavaDoc-HTML-Format und das H2-Handbuch im PDF- und HTML-Format. Enthält ODBC-Treiber für die H2. Diese sind für uns irrelevant. src Enthält den Quellcode der H2. Verzeichnisstruktur der H2-Installation 3.2 Vorbereitung der Entwicklungsumgebung In diesem Abschnitt zeigen wir, wie die Entwicklungsumgebung für die Entwicklung einer Hibernate-Anwendung vorbereitet werden soll. Wir gehen davon aus, dass der Leser weiß, wie ein Projekt in seiner Entwicklungsumgebung angelegt wird Die Auswahl der richtigen Bibliotheken Die Masse der Bibliotheken, die mit Hibernate geliefert werden, ist auf den ersten Blick überwältigend. Man könnte einfach alle mitgelieferten Bibliotheken in das Projekt einbinden. Das verlangsamt die Entwicklungsumgebung aber nur unnötig und vergrößert den Umfang des auszuliefernden Installationspakets. Letzteres stört spätestens, wenn die Anwendung in den Produktivbetrieb geht. Wir werden im Verlauf dieses Buches verschiedene Varianten unseres Terminplaner-Beispiels entwickeln, die zum Teil unterschiedliche Bibliotheken benötigen. Wir werden dann jeweils klarmachen, welche Bibliotheken erforderlich sind. Für den Einstieg benötigen wir die folgenden Bibliotheken: 1. In der ersten Auflage dieses Buches verwendeten wir die HSQLDB. Die H2 ist zur HSQLDB ähnlich, bietet jedoch einige zusätzliche Features. Bei der Verwendung der HSQLDB mit Hibernate kann es vorkommen, dass Daten nach dem Beenden der Anwendung nicht gesichert werden. Dieses Problem tritt mit der H2 nicht auf.
4 38 Benötigte Bibliotheken für das erste Beispiel JAR-Datei a Beschreibung h2.jar Die H2. Dieses JAR befindet sich in der H2- Installation. hibernate3.jar cglib-x.jar asm.jar, asm-attrs.jar ehcache-x.jar commons-logging-x.jar jta.jar log4j-x.jar commons-collections-x.jar jdbc2_0-sdtext.jar antlr-x.jar dom4j-x.jar, xml-apis.jar, xerces-x.jar Diese Bibliothek enthält alle Hibernate-Klassen. Im Gegensatz zu anderen OR-Mapping-Lösungen wie zum Beispiel JDO verändert Hibernate nicht den Quelltext oder die kompilierten Klassen, sondern erzeugt zur Laufzeit dynamische Proxys. Diese Proxys werden mit der CGLib erzeugt. Bibliothek zum Verändern des Bytecodes von Klassen. Diese Bibliothek wird von der CGLib verwendet. Hibernate verwendet einen Caching-Mechanismus für bereits in einer Session bekannte persistente Objekte. Hibernate kann mit mehreren Caching-Bibliotheken zusammenarbeiten. EHCache ist eine davon. Ein Wrapper um Log4J und andere Logging- Lösungen unter Java, der von EHCache verwendet wird. Die Standard-Java-Transaktions-API wird von Hibernate intern zum Verwalten von Transaktionen verwendet. Hibernate verwendet Log4J für alle Debug- und Fehlermeldungen. Eine Bibliothek mit zusätzlichen Collection- Klassen. Erweiterungen zu JDBC2, die von Hibernate vewendet werden. ANTLR wird von Hibernate zum Parsen von HQL-Ausdrücken verwendet. Einige XML-Bibliotheken, die von Hibernate zum Lesen der Konfigurations- und Mapping- Dateien verwendet werden. Wird Hibernate mit dem JDK 5.0 oder einer neueren Version verwendet, so ist nur das dom4j-x.jar notwendig. Die anderen beiden sind bereits in den neueren Versionen des JDKs enthalten.
5 3.2 Vorbereitung der Entwicklungsumgebung 39 Benötigte Bibliotheken für das erste Beispiel JAR-Datei a Beschreibung junit.jar Wir werden Unit-Tests schreiben. Dafür benötigen wir JUnit, das von der JUnit-Website ( heruntergeladen werden kann. Einige Entwicklungsumgebungen wie zum Beispiel Eclipse bieten an, JUnit in das Projekt einzubinden, sobald die erste Testklasse geschrieben wird. Hier muss JUnit dann nicht extra heruntergeladen werden. a. Das X in einigen JAR-Namen steht für die Versionsnummer der jeweiligen Bibliothek. Diese ändert sich für einige Bibliotheken von einer Hibernate-Version zur nächsten Installation der Plugins für den Zugriff auf die Datenbank Bei der Arbeit mit einer Datenbank ist es manchmal notwendig, sich deren aktuellen Inhalt anzusehen. Bei der Verwendung einer OR-Mapping-Lösung ist das sogar noch wichtiger, als wenn die Datenbank direkt über JDBC verwendet wird. Häufig kann man nur aus den tatsächlichen Tabellen und ihren Inhalten erschließen, warum etwas nicht oder nicht so wie erwartet funktioniert. Es gibt viele alleinstehende Werkzeuge zum Arbeiten mit Datenbanken. Die H2 selbst wird mit einer H2-Console ausgeliefert. Komfortabler und schneller ist der Zugriff auf die Datenbank, wenn dieses Werkzeug in die Entwicklungsumgebung integriert ist. Für die Entwicklungsumgebung IntelliJIDEA ist das SQLQuery- Plugin ein solches integriertes Werkzeug, das sich mit der Datenbank verbindet und das Ausführen von SQL-Befehlen auf dieser Datenbank erlaubt. SQLQuery kann über den in IDEA integrierten Plugin-Manager installiert werden. Nach der Installation muss dem SQLQuery-Plugin der H2-Treiber bekannt gemacht werden. Dazu öffnet man das Tool-Window»SQL«und klickt auf das Werkzeug-Icon. In dem erscheinenden Fenster muss nun unter dem Reiter»Miscellaneous«über den Knopf»Add Jar/Directory«das h2.jar in die Liste der JDBC-Treiber aufgenommen werden. Für Eclipse gibt es mehrere dem SQLQuery entsprechende Plugins. Wir empfehlen den SQLExplorer, der den ausgereiftesten Eindruck macht. Dieses Plugin muss von der SQLExplorer-Website ( heruntergeladen und manuell in das Eclipse-Hauptverzeichnis entpackt werden. In der Eclipse Konfiguration (Preferences im Menü Window) steht nun ein neuer Knoten»SQL Explorer«im Baum der Konfigurationsbereiche zur Verfügung. Für uns ist jetzt der Subknoten»JDBC Drivers«Direkte Sicht auf die Datenbank SQLQuery für IntelliJ IDEA SQLExplorer für Eclipse
6 40 interessant. Hier ist eine Liste von vorkonfigurierten Treibern zu sehen. Da der SQLExplorer nur die Konfiguration der Treiber ohne die dafür benötigten Treiber enthält, ist jede dieser Konfigurationen als fehlerhaft markiert. Sie muss um den jeweiligen Treiber ergänzt werden. Für die H2 ist hier noch keine Vorkonfigurierung zu sehen. Wir müssen sie also anlegen. Dazu muss auf den Knopf»Add«neben der Treiberliste geklickt werden. In dem nun erscheinenden Fenster (siehe Abb. 3 1) muss zunächst ein Name für die Konfiguration vergeben und eine Beispiel-URL für den Zugriff auf die Datenbank angegeben werden. Danch muss unter dem Reiter»Extra Class Path«durch einen Klick auf»add«das JAR in den Classpath der Konfiguration eingefügt werden. Über einen Klick auf»list Drivers«wird SQLExplorer angewiesen, nach allen JDBC-Treibern in dem JAR zu suchen. Ein Klick auf»ok«schließt die Konfiguration ab. Abb. 3 1 Konfiguration eines Treibers für SQLExplorer Soll eine der bereits vorbereiteten Konfigurationen verwendet werden zum Beispiel»MySQL Driver«, muss dieser in der Liste markiert und durch einen Klick auf den Knopf»Edit«für die Bearbeitung geöffnet werden. Hier muss dann wie bei der Konfiguration der H2 auf dem Reiter»Extra Class Path«das JAR mit dem entsprechenden Treiber angegeben werden.
7 3.3 Ein erstes Beispiel mit Hibernate Ein erstes Beispiel mit Hibernate Nachdem die Entwicklungsumgebung eingerichtet ist, wollen wir unsere ersten Schritte mit Hibernate wagen. Wir beginnen mit einer zentralen Klasse für unseren Terminplaner dem Termin. package net.sf.hibernatesample.einfach; import java.util.date; public class Termin { private long _id; private String _titel; private String _beschreibung; private String _ort; private Date _zeitpunkt; public String gettitel () { return _titel; public void settitel (String titel) { _titel = titel; Die Klasse Termin folgt in ihrem Aufbau der JavaBeans-Spezifikation. Zu jedem Attribut 2 gibt es eine Setter genannte Methode, mit der das Attribut gesetzt werden kann, und eine andere, Getter genannte, mit der es gelesen werden kann. Setter beginnen immer mit dem Präfix»set«und Getter mit dem Präfix»get«oder für boolesche Attribute»is«. Dem Präfix folgt immer der Name des Attributs, womit der Name des Setters bzw. Getters auch vollständig ist. In der oben gezeigten gekürzten Version der Termin-Klasse sind exemplarisch ein Getter und ein Setter für das Attribut titel zu sehen. Der JavaBeans-Attributname hier»titel«muss dabei nicht unbedingt mit dem Namen des zugehörigen Attributs in der Klasse übereinstimmen. Er leitet sich alleine aus der Benennung der Zugriffsmethoden ab. Klassen, deren Exemplare mit Hibernate persistent gemacht werden sollen, müssen den beschriebenen Aspekt der JavaBeans-Spezifikation erfüllen. Die Zugriffsmethoden müssen jedoch nicht public sein. Hibernate wird sie auch dann verwenden können, wenn sie private sind. Termin.java (gekürzte Version) JavaBeans-Attribute Code-Konventionen 2. Wir benennen die Attribute einer Klasse nicht nach den von Sun festgelegten Code-Konventionen, sondern lassen Attributnamen immer mit einem Unterstrich anfangen. Das erleichtert die Unterscheidung zwischen Attributen und lokalen Variablen beim Lesen und Bearbeiten des Codes.
8 42 Achtung Auch wenn es Hibernate beim Setzen und Lesen der Attribute nicht stört, wenn die Methoden private sind, sollte auf private Methoden verzichtet werden. In einigen Situationen erzeugt Hibernate Proxys um die Geschäftsobjekte. Diese sind wichtig für Hibernates Nachlademechanismus. Bei der Erzeugung eines Proxys wird dynamisch eine Subklasse der Klasse des Geschäftsobjektes erzeugt und jede überschreibbare Methode überschrieben. Hibernate kann dann darauf reagieren, wenn zum ersten Mal auf ein Objekt zugegriffen wird, und erst dann das Objekt aus der Datenbank laden. private Methoden und Methoden, die final sind, können nicht überschrieben werden. Wird eine solche Methode von außerhalb des Geschäftsobjektes aufgerufen, bekommt es der Proxy nicht mit, und Hibernate lädt das Objekt nicht nach. private Methoden werden zum Beispiel häufig verwendet, um einen Kopier-Konstruktor zu schreiben, der eine Kopie des übergebenen Objektes erzeugt. Da Objekte der gleichen Klasse auf private Methoden des jeweils anderen zugreifen können, ist also ein Zugriff auf private Methoden von außen möglich und sorgt in diesem Fall für schwer auffindbare Fehler Konfiguration Bevor wir mit dem Programmieren des Hibernate-spezifischen Teils unseres Beispiels beginnen, müssen wir einige Konfigurationsdateien erstellen, die zur Laufzeit gelesen werden, und Hibernate zum Beispiel mitteilen, wie eine Klasse auf Datenbanktabellen abzubilden ist. Die Mapping-Datei Zu jeder persistierbaren Klasse muss es eine Hibernate-Mapping- Beschreibung geben. Es hat sich eingebürgert, für jede dieser Klassen eine eigene Mapping-Datei mit der Endung»hbm.xml«zu erstellen, die im gleichen Package platziert wird wie die Klasse selbst. Für die Termin-Klasse sieht eine mögliche Beschreibung wie folgt aus: Termin.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <hibernate-mapping package="net.sf.hibernatesample.einfach"> <class name="termin"> <id name="id"> <generator class="native"/> </id>
9 3.3 Ein erstes Beispiel mit Hibernate 43 <property name="titel"/> <property name="beschreibung"/> <property name="zeitpunkt"/> <property name="ort"/> </class> </hibernate-mapping> Im Vorspann der Datei wird definiert, in welcher DTD das Format der Datei beschrieben ist. Wenn ein XML-Editor verwendet wird, ist das Erstellen der Datei sehr einfach, weil der Editor über die DTD eine Autovervollständigungsfunktionalität anbieten kann. Im Tag hibernate-mapping wird das OR-Mapping für das angegebene Package definiert. Es ist also möglich, in einer Mapping-Datei das Mapping für alle persistierbaren Klassen eines Packages festzulegen. Ebenso ist es möglich, das Mapping eines Packages in beliebig viele Dateien aufzuteilen. Über das class-tag wird das Mapping für eine Klasse definiert. Die property-tags definieren, welche Attribute der Klasse persistent sein sollen. In der hier verwendeten einfachen Form gibt es für jedes Attribut ein property-tag, das den JavaBeans-Attributnamen in seinem name-attribut angibt. Hibernate ermittelt bei dieser Variante selbst den Typ des Attributs und wählt eigenständig den Namen der Datenbank- Tabellenspalte für das Attribut. Das id-tag ist ein spezielles property-tag. Es definiert, dass das Attribut id persistent sein soll und dass es außerdem der Primärschlüssel für die entsprechenden Datensätze in der Datenbank sein soll. In Hibernate gibt es mehrere verfügbare Strategien für das Erzeugen von IDs, und eigene können ebenfalls implementiert werden. Die Variante native ist die einfachste Variante. Hibernate wählt bei dieser Einstellung selbst eine ID-Erzeugungsstrategie, die den Fähigkeiten der Datenbank entspricht. Mapping einer Klasse Primärschlüssel Konfiguration von Hibernate Damit haben wir unsere erste persistierbare Klasse geschrieben und Hibernate verraten, wie ihre Exemplare persistiert werden sollen. Hibernate weiß jetzt aber noch nicht, welche Datenbank verwendet werden soll, und ebenso wenig ist Hibernate bekannt, wo die Mapping-Datei liegt. Die Mapping-Datei wird zwar für gewöhnlich in das Package der Klasse platziert, aber das ist kein Muss, und Hibernate macht hier keine Annahmen.
10 44 Hier kommt die Hibernate-Konfiguration ins Spiel: <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " 3.0.dtd"> <hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.h2dialect </property> <property name="connection.driver_class"> org.h2.driver </property> <property name="connection.username"> sa </property> <property name="connection.password"> </property> <property name="connection.url"> jdbc:h2:file:db/termine </property> <mapping resource= "net/sf/hibernatesample/einfach/termin.hbm.xml" /> </session-factory> </hibernate-configuration> SQL-Dialekt Ort der Mapping-Dateien Die hier gezeigte Konfiguration legt fest, dass der H2-SQL-Dialekt verwendet werden soll. Zwar ist SQL standardisiert, aber jeder Datenbankhersteller reichert das von seiner Datenbank verstandene SQL um eigene Erweiterungen an. An Stellen, wo die SQL-Spezifikation nicht eindeutig ist und Freiräume für eigene Interpretationen bietet, kann sich die Reaktion zweier Datenbanken auf denselben SQL-Befehl unterscheiden. Außerdem gibt es für viele Datenbanken bewährte Arten, etwas zu erledigen, die zu einer performanteren Ausführung führen. Hibernate lässt sich durch die Auswahl eines speziellen Dialekts auf eine Datenbank optimieren. Mit dem Tag mapping wird angegeben, wo Hibernate eine Mapping-Datei findet. Für jede im System existierende Mapping-Datei muss es ein solches Tag geben. Das Attribut resource gibt den Ort der Mapping-Datei über einen zum Classpath relativen Pfad an. Es ist also praktisch auch möglich, die Mapping-Dateien außerhalb der Packages an einem anderen im Classpath eingebundenen Ort zu halten. Der Rest der Konfiguration beschreibt den zu verwendenden Treiber, den Benutzer und die einzusetzende Datenbank.
11 3.3 Ein erstes Beispiel mit Hibernate 45 Wie»scott«und»tiger«bei Oracle sind»sa«und»«bei der H2 der Default-Benutzer und sein Passwort. Tipp Der für uns interessantere Teil der Datenbankkonfiguration ist»connection.url«. Die H2 kann auf drei Arten gestartet werden: Server: Der gängige Modus, der auch von anderen Datenbanken her bekannt ist. Der Datenbankserver wird explizit gestartet und horcht auf einem Port auf Anfragen. Embedded: Der H2-Treiber startet die Datenbank eigenständig beim ersten SQL-Befehl, der eingeht. Es handelt sich dann um eine In-Process-Datenbank, die in derselben VM läuft wie der Aufrufer und die von außen nicht ansprechbar ist. In-Memory: Eine andere In-Process-Variante, bei der die Datenbank nur im Hauptspeicher erzeugt und verändert wird. Sobald die VM beendet ist, sind auch alle Daten verloren, die in der Datenbank abgelegt wurden. Dieser Modus ist vor allem für Tests sinnvoll. Wir werden die H2 zunächst nur in den beiden In-Process-Varianten verwenden, da das Starten und Stoppen praktisch von selbst geht und somit kein Verwaltungsaufwand anfällt. Die in der Konfiguration angegebene connection.url gibt eine Embedded-Datenbank an. Bei einer Embedded-Datenbank muss nur angegeben werden, in welchem Verzeichnis die Datenbank liegen und welchen Namen sie haben soll. Wir verwenden das Verzeichnis db, das sich im Projektverzeichnis befindet, und die Datenbank nennen wir termine. Es ist sinnvoll, für die Datenbank ein eigenes Verzeichnis zu wählen, da diese aus mehreren Dateien besteht und somit die Vermischung mit anderen Projektdateien verhindert wird. Wir platzieren die Konfigurationsdatei im Hauptverzeichnis des Quellcodes einer Anwendung. Beim Kompilieren der Anwendung wird die Konfigurationsdatei von der Entwicklungsumgebung in das Verzeichnis mit den class-dateien kopiert und ist dann auf der obersten Ebene des Classpaths verfügbar, wo sie von Hibernate gesucht und gefunden wird. Drei Arten, die H2 zu starten Konfiguration einer Embedded-H2 Platzierung der Konfigurationsdatei Log4J-Konfiguration Hibernate verwendet für Debug- und für alle anderen Meldungen log4j. Damit diese Meldungen auf der Konsole zu sehen sind, muss log4j entsprechend konfiguriert werden.
12 46 log4j sucht beim Starten nach einer Datei log4j.properties auf der obersten Ebene des Classpaths. Wir erstellen die folgende Datei also auch im Hauptverzeichnis des Quellcodes. log4j.rootlogger=debug, A1 log4j.appender.a1=org.apache.log4j.consoleappender log4j.appender.a1.layout=org.apache.log4j.patternlayout log4j.appender.a1.layout.conversionpattern=\ %-4r [%t] %-5p %c %x - %m%n Achtung Wenn die Zeichenketten nach den Gleichheitszeichen in derselben Zeile stehen wie die Gleichheitszeichen, muss das»\«, das sich hinter diesen befindet, entfernt werden Das Beispiel eine Testklasse für die Grundoperationen von Hibernate Nun ist es Zeit, den ersten Code zu schreiben, der Hibernate aktiv benutzt. Wir werden eine JUnit-Testklasse schreiben, die einige Grundoperationen bei der Arbeit mit Datenbanken testet. Diese Operationen werden häufig unter dem Kürzel»CRUD«für»Create«,»Read«,»Update«und»Delete«zusammengefasst. setup Vorbereitung von Hibernate und Datenbank für den Test Am Anfang gibt es für jede Anwendung, die Hibernate verwendet, einige Schritte, die durchlaufen werden müssen. Dazu gehört zum Beispiel das Konfigurieren von Hibernate. Diese Schritte fassen wir in der setup-methode der Testklasse zusammen. private static final String ORT = "Hamburg"; private static final String BESCHREIBUNG = "termin"; private static final String TITEL = "titel"; private static final Date ZEIT_PUNKT = new Date(System.currentTimeMillis() ); protected void setup () throws Exception { super.setup(); Configuration configuration = new Configuration().configure(); SchemaExport export = new SchemaExport(configuration); export.create(false, true); _sessionfactory = configuration.buildsessionfactory(); _id = erzeugetermin(titel,beschreibung, ORT, ZEIT_PUNKT);
13 3.3 Ein erstes Beispiel mit Hibernate 47 Zuerst wird eine Hibernate-Konfiguration erzeugt und mit dem Inhalt der Konfigurationsdatei gefüllt. Hibernate sucht die Konfigurationsdatei auf der obersten Ebene des Classpaths. Es genügt nicht, die Configuration zu erzeugen. Sie muss explizit mit configure() gefüllt werden. configure() darf nur genau einmal aufgerufen werden. Wird configure() mehr als einmal aufgerufen, liest Hibernate die Konfigurationsdatei erneut ein. Dabei werden auch alle Mappings neu eingelesen, was dazu führt, dass Hibernate sich über doppelte Mappings beklagt. Achtung Der SchemaExport erzeugt die Tabellenstruktur in der Datenbank. Ein praktischer Nebeneffekt für das Testen ist, dass davor die Datenbank gelöscht wird. Man muss hier also nicht selbst dafür sorgen, dass jeder Test eine saubere Datenbank vorfindet. In den log4j-debug-meldungen gibt Hibernate aus, wie es die Tabelle erzeugt. Erzeugung des Datenbankschemas create table Termin ( id bigint generated by default as identity (start with 1), titel varchar(255), beschreibung varchar(255), zeitpunkt timestamp, ort varchar(255), primary key (id) ) Die id wird also von der Datenbank generiert und ist als primary key eingetragen, zeitpunkt wurde richtig auf timestamp und nicht date abgebildet, was den Uhrzeitanteil am Date-Objekt erhält. Die Strings wurden pauschal auf varchar(255) abgebildet. Hier wird man bei einer späteren Optimierung für titel und ort wahrscheinlich kleinere varchars nehmen, während 255 Zeichen für eine Beschreibung zu knapp bemessen sein könnten. Unser erstes Mapping der Termin-Klasse lässt vieles offen, und Hibernate füllt die Lücken mit brauchbaren Werten. Das nächste Kapitel wird sich näher damit befassen, wie Mappings genauer spezifiziert werden können. Zum Abschluss lässt setup die Configuration eine SessionFactory erzeugen. Die SessionFactory wird als Fabrik für die im Folgenden benötigten Sessions verwendet. Zuletzt wird ein Termin erzeugt.
14 48 Erzeugung eines persistenten Objektes Die Erzeugung eines Termins ist in eine eigene Methode ausgelagert, die in den Tests verwendet werden kann, wenn ein neuer Termin benötigt wird. private long erzeugetermin (String titel, String beschreibung, String ort, Date zeitpunkt) { Termin termin = new Termin(); termin.settitel(titel); termin.setbeschreibung(beschreibung); termin.setort(ort); termin.setzeitpunkt(zeitpunkt); Session session = null; Transaction transaction = null; try { session = _sessionfactory.opensession(); transaction = session.begintransaction(); session.save(termin); transaction.commit(); catch (HibernateException e) { if (transaction!= null) { transaction.rollback(); throw e; finally { if (session!= null) { session.close(); return termin.getid(); Bezug von der Hibernate- Session und -Transaktion zu SQL Das Anlegen des Termins selbst ist unspektakulär und funktioniert so, wie man es von allen anderen Java-Objekten her auch kennt. Der spannendere Bereich fängt mit dem Öffnen der Hibernate-Session an. Hierzu wird die SessionFactory verwendet, die wir im setup erzeugt haben. An der Session wird dann eine Hibernate-Transaktion begonnen. Eine Hibernate-Transaktion ist eng mit der dahinter liegenden Datenbanktransaktion gekoppelt und funktioniert prinzipiell genauso. Was bei einer Datenbanktransaktion und der Verwendung von SQL ein INSERT wäre, ist hier das session.save(). Eine Hibernate-Transaktion wird im Erfolgsfall wie eine Datenbanktransaktion mit commit() abgeschlossen beziehungsweise mit rollback() rückgängig gemacht, wenn Probleme aufgetreten sind.
15 3.3 Ein erstes Beispiel mit Hibernate 49 Wir schließen die Session nach der Erzeugung eines jeden Termins. Das ist jedoch keine Notwendigkeit, und häufig werden in realen Anwendungen mehrere Transaktionen mit derselben Session durchgeführt. Wird eine Session über mehrere Transaktionen verwendet, so kommt der Cache der Session zum Einsatz. Das ist aus Performance- Gründen sinnvoll. Bei unseren Tests ist der Cache jedoch teilweise nachteilig und kann dazu führen, dass Tests in einer Gruppe (Test- Suite) erfolgreich durchlaufen, die einzeln also mit unterschiedlichen Sessions nicht durchlaufen. Wir schließen die Session, um sicher zu sein, dass ein erzeugter Termin beim nächsten Laden wirklich aus der Datenbank und nicht aus dem Cache geladen wird. Caching in einer Hibernate-Session Laden eines persistenten Objektes Nun wollen wir überprüfen, ob es funktioniert, einen zuvor in der Datenbank gespeicherten Termin dort wieder herauszuladen. public void testload () { Session session = null; try { session = _sessionfactory.opensession(); Termin termin = (Termin) session.load(termin.class, _id); assertequals(zeit_punkt, termin.getzeitpunkt()); assertequals(titel, termin.gettitel()); assertequals(beschreibung, termin.getbeschreibung()); assertequals(ort, termin.getort()); finally { if (session!= null && session.isconnected()) { session.close(); Der Termin wurde bereits im setup(), das vor jeder Testmethode ausgeführt wird, erzeugt. Hier bleibt uns also nur übrig, den zuvor erzeugten Termin zu laden, was über den Aufruf der Methode load() bewerkstelligt wird. Diese Methode bekommt die Klasse des Objekts, das geladen werden soll, und seine ID übergeben. Das Autoboxing 3 -Feature des JDK 5.0 erlaubt uns, die ID hier einfach hinzuschreiben. Die ID wird von der VM automatisch in einen Long-Wrapper verpackt und an die Methode übergeben. Um diesen Code im JDK 1.4 oder einer älteren Version kompilieren zu können, muss man diese Umverpackung explizit vornehmen. Der Test überprüft hierauf, ob der geladene Termin die richtigen Attribute enthält.
16 50 Überprüfung der Datenbank Vorgehen beim SQLQuery-Plugin Nach diesem Test bietet sich eine gute Gelegenheit an, mit einem der beiden Plugins auf die Datenbank zu sehen und zu überprüfen, dass die Datenbank wirklich den Termin enthält. Im SQLQuery-Plugin klickt man auf das Werkzeug-Symbol auf der rechten Seite und erzeugt unter dem Reiter»Connections«eine neue Verbindung. Als Treibertyp nehmen wir»other Driver«, weil es keine spezielle Konfiguration für die H2 gibt. Für Class geben wir»org.h2.driver«und für URL die URL unserer Datenbank ein, also zum Beispiel jdbc:h2:file://g:/projekte/hibernate/db/termine (Abb. 3 2 zeigt die Konfiguration des Plugins). Abb. 3 2 Konfiguration von SQL-Query 3. In Java wird zwischen Werten primitiver Typen wie int und float und Objekten unterschieden. Diese Unterscheidung ist hinderlich, wenn man diese Werte an Stellen verwenden will, wo nur Objekte zulässig sind zum Beispiel als Elemente einer ArrayList. Für diese Situationen enthält Java Klassen, welche die primitiven Typen kapseln (z.b. Integer für int, Float für float). Es hat sich jedoch als sehr lästig herausgestellt, die Konvertierung von einem Wert zum entsprechenden Objekt und wieder zurück immer selbst vornehmen zu müssen. Das Autoboxing genannte Feature des JDK 5 macht diese Konvertierung nun selbstständig, sobald ein Wert an einer Stelle verwendet wird, an der ein Objekt erwartet wird. Auch umgekehrt kann ein Objekt von zum Beispiel Integer einer int-variablen zugewiesen werden. Autoboxing übernimmt automatisch die Konvertierung.
17 3.3 Ein erstes Beispiel mit Hibernate 51 Im oberen Teil des Plugin-Bereichs können SQL-Befehle eingegeben und über einen Klick auf das grüne Icon ausgeführt werden. Der untere Bereich zeigt das Ergebnis der ausgeführten Befehle. Abbildung 3 3 zeigt das Plugin nach der Ausführung einer SQL- Anfrage. Abb. 3 3 SQL-Query in Aktion In der SQLExplorer-Perspektive gibt es oben links eine View»Connections«, in der alle dem Plugin bekannten Datenbanken aufgelistet sind. Zurzeit kennt das Plugin keine Datenbanken. Um unsere H2-Termindatenbank anzumelden, klicken wir mit der rechten Maustaste in dieses View und wählen»new Connection Profile«aus dem erscheinenden Menü aus. In dem nun sichtbaren Fenster wählen wir in der Driver-Combobox unseren zuvor konfigurierten H2-Treiber aus. Im URL-Feld geben wir wie schon für SQLQuery die URL der Datenbank ein (siehe Abb. 3 4). Hiernach muss durch einen Doppelklick auf den Datenbanknamen in der Liste eine Verbindung mit der Datenbank erzeugt werden. Nun können wir auf die Datenbank mit der rechten Maustaste klicken und in dem erscheinenden Kontextmenü»New Vorgehen beim SQLExplorer Abb. 3 4 Anmelden einer Datenbank im SQLExplorer
18 52 SQL Editor«auswählen. Das öffnet einen Editor, in dem SQL-Befehle eingegeben werden können. Ein Klick auf das schwarze Läufer-Icon führt diese Befehle aus (siehe Abb. 3 5). Abb. 3 5 Ergebnis der Anfrage Anzeigen aller Termine Wir sehen uns zunächst an, welche Termine in der Datenbank vorhanden sind. select * from termin Wie erwartet, enthält die Datenbank einen Termin. Abbildung 3 5 zeigt das Ergebnis dieser Anfrage im SQLExplorer. Das Ausführen dieses Befehls führt zur Anzeige aller Daten in der Tabelle der Termine. Diese Tabelle enthält jetzt einen Datensatz. Tipp In der ersten Auflage dieses Buches haben wir an dieser Stelle erklärt, dass die HSQLDB mit dem shutdown-befehl vor dem Starten eines neuen Tests geschlossen werden muss. Das ist mit der H2 nicht mehr notwendig, weil diese sich automatisch beendet, sobald keine aktive Verbindung mehr besteht. Umschalten der H2 in den In-Memory-Modus Für die automatisch ablaufenden Tests benötigen wir eigentlich keine Datenbank, die hinterher noch persistent sein muss. Die In-Memory- Variante der H2 eignet sich viel besser für Tests. Sie wird nicht auf die Festplatte gespeichert, und die Datenbankzugriffe werden viel schneller ausgeführt als auf einer persistenten Datenbank. Wir wollen aber nicht immer die Konfigurationsdatei anpassen, wenn wir Tests laufen lassen. Ein Feature, das uns hier gelegen kommt, ist die Möglichkeit, die Einstellungen in der Hibernate-Configuration im Programm zu
19 3.3 Ein erstes Beispiel mit Hibernate 53 ergänzen oder zu überschreiben. In der setup()-methode können wir vor dem Erzeugen des SchemaExports Folgendes einfügen: configuration.setproperty( "hibernate.connection.url", "jdbc:h2:mem:termine;db_close_delay=-1"); Dies ersetzt in der Configuration die URL der Datenbank mit einer URL für eine In-Memory-H2, die erzeugt wird, sobald der H2-Treiber den ersten Befehl ausführt. Bei dieser Angabe der Property muss»hibernate.«als Präfix angegeben werden. Bei der Konfigurationsdatei kann dieses Präfix entfallen, weil vom Kontext her klar ist, dass es sich um eine Hibernate-Property handelt. Der Zusatz DB_CLOSE_DELAY=-1 ist notwendig, weil die H2 die Datenbank schließt, sobald keine aktive Verbindung mehr besteht. Das hat bei einer In-Memory-Datenbank den Effekt, dass es beim nächsten Starten der Datenbank keine Tabellen mehr gibt. Die Tabellen, die im setup unseres Tests erzeugt werden, würden dann beim Ausführen der Tests nicht mehr zur Verfügung stehen. -1 gibt hier an, dass die Datenbank bis zum Beenden der Java-VM offen bleiben soll. Wird hier eine positive Zahl angegeben, wartet die H2 noch die entsprechende Anzahl von Millisekunden, bis sie geschlossen wird. Das ist jedoch für Tests mit In-Memory-Datenbanken zu unsicher. Wenn zwischen zwei Datenbankverbindungen in einem Test zu viel Zeit vergeht, führt das zu schwer auffindbaren Fehlern. Diese Option kann zur Performance-Optimierung bei der Verwendung einer persistenten H2 benutzt werden. Persistente Objekte suchen Speichern und Laden eines Termins funktioniert also. Eine wichtige Eigenschaft von Datenbanken ist, dass in ihnen gut nach Datensätzen gesucht werden kann. In Hibernate sucht man mit Querys nach Objekten. Query query = session.createquery( "from Termin where ort='" + ORT + "'"); List result = query.list(); assertequals(1, result.size()); Termin termin = (Termin) result.get(0); Wir sparen uns hier den aus der vorigen Testmethode bekannten Vorund Nachlauf und beschränken uns auf das Wesentliche. Eine Möglichkeit der Suche (andere Möglichkeiten werden wir in den folgenden Kapiteln zeigen) steht mit der Hibernate-Query bereit. Der Ausdruck, der in der Query angegeben ist, sieht einem SQL-Select ähnlich. Es fehlt Hibernate-Query
20 54 nur das select, und hinter dem from steht nicht der Tabellenname, sondern der Klassenname. ort bezieht sich nicht auf den Spaltennamen in der Datenbank, sondern auf das JavaBeans-Attribut der Klasse. Die Query wird mit query.list() gestartet. Diese Methode gibt das Ergebnis der Query als Liste zurück. (query.iterate() ist eine alternative Art, die Query zu starten, und gibt einen Iterator auf das Ergebnis zurück.) Wir stellen sicher, dass die Liste genau ein Element hat, und ziehen den einzigen in der Liste enthaltenen Termin heraus. Persistente Objekte aktualisieren Objekte, die einmal gespeichert wurden, will man auch wieder ändern können. Termin termin = (Termin) session.load(termin.class, _id); Transaction transaction = session.begintransaction(); termin.settitel("neuer Termin"); transaction.commit(); Zuerst laden wir den Termin, den wir ändern wollen, öffnen eine Transaktion und ändern den Termin anschließend wie gewohnt. Hibernate erfordert also keine Änderung des normalen Umgangs mit Objekten. Nach der Änderung schließen wir die Transaktion ab, die wir zuvor aufgemacht haben. Persistente Objekte löschen Nun bleibt nur noch das Löschen von Objekten, bevor wir mit dem ersten Durchgang durch Hibernate fertig sind: Termin termin = (Termin) session.load(termin.class, _id); Transaction transaction = session.begintransaction(); session.delete(termin); transaction.commit(); session.close(); session = _sessionfactory.opensession(); termin = (Termin) session.get(termin.class, _id); assertnull(termin); delete Zum Löschen eines Objektes dient die Methode delete an der Hibernate-Session. Um diese Methode aufrufen zu können, müssen wir zuerst den Termin laden, der gelöscht werden soll. Nach dem Löschen versuchen wir, das Objekt mit session.get() zu laden. get() ist load() ähnlich. Der Unterschied zwischen get() und load() ist, dass get() ein null zurückgibt, wenn es das angeforderte Objekt nicht gibt, während load in diesem Fall eine Exception wirft.
Hibernate. Persistenz in Java-Systemen mit Hibernate und der Java Persistence API. von Robert F. Beeger, Arno Haase, Stefan Roock, Sebastian Sanitz
Hibernate Persistenz in Java-Systemen mit Hibernate und der Java Persistence API von Robert F. Beeger, Arno Haase, Stefan Roock, Sebastian Sanitz 2., überarb. u. erw. Aufl. Hibernate Beeger / Haase / Roock
MehrLive Update (Auto Update)
Live Update (Auto Update) Mit der Version 44.20.00 wurde moveit@iss+ um die Funktion des Live Updates (in anderen Programmen auch als Auto Update bekannt) für Programm Updates erweitert. Damit Sie auch
MehrEr musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt
Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrOP-LOG www.op-log.de
Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrJBuilderX: Installation und Kurzanleitung (Windows)
JBuilder X Seite 1 JBuilderX: Installation und Kurzanleitung (Windows) 1. JBuilder installieren Eine Gratis-Version kann von der Webseite www.borland.de heruntergeladen werden. Systemvoraussetzungen: 256
Mehr2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein
Einrichtung von orgamax-mobil Um die App orgamax Heute auf Ihrem Smartphone nutzen zu können, ist eine einmalige Einrichtung auf Ihrem orgamax Rechner (bei Einzelplatz) oder Ihrem orgamax Server (Mehrplatz)
Mehr! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
MehrSuche schlecht beschriftete Bilder mit Eigenen Abfragen
Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere
MehrInstallationsanleitung für Magento-Module
Installationsanleitung für Magento-Module Installation durch die Modulwerft Wenn Sie es wünschen, können Sie das Modul durch unseren Installationsservice in Ihrem Shopsystem sicher und schnell installieren
MehrEinrichtung des Cisco VPN Clients (IPSEC) in Windows7
Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über
MehrINSTALLATION VON INSTANTRAILS 1.7
INSTALLATION VON INSTANTRAILS 1.7 InstantRails 1.7 ist ein Paket, das Ruby, Rails, Apache, MySQL und andere Tools, z.b. phpmyadmin in vorkonfigurierter Form enthält. Das Paket muss in einem Verzeichnis
MehrAdminer: Installationsanleitung
Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann
MehrInstallation OMNIKEY 3121 USB
Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,
MehrBackup der Progress Datenbank
Backup der Progress Datenbank Zeitplandienst (AT): Beachten Sie bitte: Die folgenden Aktionen können nur direkt am Server, vollzogen werden. Mit Progress 9.1 gibt es keine Möglichkeit über die Clients,
MehrProgramme im Griff Was bringt Ihnen dieses Kapitel?
3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich
MehrPython Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.
Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden
MehrMeldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung
Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Nach dem Update auf die Version 1.70 bekommen Sie eine Fehlermeldung,
MehrSystem-Update Addendum
System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im
MehrWichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge
Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht
MehrSANDBOXIE konfigurieren
SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:
MehrMailUtilities: Remote Deployment - Einführung
MailUtilities: Remote Deployment - Einführung Zielsetzung Die Aufgabe von Remote Deployment adressiert zwei Szenarien: 1. Konfiguration der MailUtilities von einer Workstation aus, damit man das Control
MehrTutorial - www.root13.de
Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk
MehrSpeichern. Speichern unter
Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim
Mehr25 Import der Beispiele
25 Import der Beispiele Versuch es nicht mit Gewalt. Nimm einfach einen größeren Hammer (Murphy s Law) 25.1 Einleitung Alle Beispielprogramme dieses Buchs funktionieren mit jeder Java-konformen Entwicklungsumgebung.
MehrInstallation und Inbetriebnahme von Microsoft Visual C++ 2010 Express
Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation
Mehr2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)
1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise
MehrDOKUMENTATION VOGELZUCHT 2015 PLUS
DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP
MehrStep by Step Webserver unter Windows Server 2003. von Christian Bartl
Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird
MehrKapitel 3 Frames Seite 1
Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den
MehrEine Einführung in die Installation und Nutzung von cygwin
Eine Einführung in die Installation und Nutzung von cygwin 1 1. Woher bekomme ich cygwin? Cygwin ist im Internet auf http://www.cygwin.com/ zu finden. Dort lädt man sich die setup.exe in ein beliebiges
MehrLeitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)
Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...
MehrEinführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
MehrKonvertieren von Settingsdateien
Konvertieren von Settingsdateien Mit SetEdit können sie jedes der von diesem Programm unterstützten Settingsformate in jedes andere unterstützte Format konvertieren, sofern Sie das passende Modul (in Form
MehrInstallationsanleitungen
Installationsanleitungen INPA SGBD-Entwicklungsumgebung (EDIABAS) INPA für Entwickler Bevor Sie EDIABAS / INPA installieren können, müssen Sie sich für den Ordner sgref auf smuc0900 freischalten lassen.
Mehrmysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank
mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man
MehrIhr CMS für die eigene Facebook Page - 1
Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das
MehrAnleitung. Update/Aktualisierung EBV Einzelplatz. und Mängelkatalog
Anleitung Update/Aktualisierung EBV Einzelplatz und Mängelkatalog Zeichenerklärung Möglicher Handlungsschritt, vom Benutzer bei Bedarf auszuführen Absoluter Handlungsschritt, vom Benutzer unbedingt auszuführen
MehrDatensicherung. Beschreibung der Datensicherung
Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten
MehrDiese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.
Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,
MehrArtikel Schnittstelle über CSV
Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte
MehrAnleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung
Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In
MehrHex Datei mit Atmel Studio 6 erstellen
Hex Datei mit Atmel Studio 6 erstellen Es werden generell keine Atmel Studio Dateien ins Repository geladen, da jeder seine Dateien an anderen Orten liegen hat und weil nicht jeder das Atmel Studio 6 benutzt.
MehrÜber die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.
Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten
MehrPRAXISBUTLER ANPASSUNG DER VORLAGEN
Praxisbutler Anpassung der Vorlagen 1 PRAXISBUTLER ANPASSUNG DER VORLAGEN Die Vorlagen werden hauptsächlich in den Bereichen Klienten und Fakturierung benutzt. Die Anpassung dieser Vorlagen ist wichtig,
Mehretermin Einbindung in Outlook
etermin Einbindung in Outlook 1. Einführung Über etermin gebuchte Termine können bei Bedarf auch mit externen Terminkalendern, wie zum Beispiel Outlook, ical oder Google synchronisiert werden. Dieses Dokument
MehrWordPress. Dokumentation
WordPress Dokumentation Backend-Login In das Backend gelangt man, indem man hinter seiner Website-URL einfach ein /wp-admin dranhängt www.domain.tld/wp-admin Dabei gelangt man auf die Administrationsoberfläche,
MehrDatenbanken auf Sybase SQL-Anywhere
Office Manager Enterprise oder Client/Server (ab Version 6.0.3.170) Datenbanken auf Sybase SQL-Anywhere A. Office Manager-Installationen Falls die Office Manager Enterprise- oder Client/Server-Version
MehrPHPNuke Quick & Dirty
PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt
MehrInstallation des edu- sharing Plug- Ins für Moodle
Installation des edu- sharing Plug- Ins für Moodle [edu-sharing Team] [Dieses Dokument beschreibt die Installation und Konfiguration des edu-sharing Plug-Ins für das LMS Moodle.] edu- sharing / metaventis
MehrUpdate und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten
Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Der Konfigurations-Assistent wurde entwickelt, um die unterschiedlichen ANTLOG-Anwendungen auf den verschiedensten Umgebungen automatisiert
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrINSTALLATION. Voraussetzungen
INSTALLATION Voraussetzungen Um Papoo zu installieren brauchen Sie natürlich eine aktuelle Papoo Version die Sie sich auf der Seite http://www.papoo.de herunterladen können. Papoo ist ein webbasiertes
MehrLeitfaden zur Installation von Bitbyters.WinShutdown
Leitfaden zur Installation von Bitbyters.WinShutdown für Windows 32 Bit 98/NT/2000/XP/2003/2008 Der BitByters.WinShutDown ist ein Tool mit dem Sie Programme beim Herunterfahren Ihres Systems ausführen
MehrTapps mit XP-Mode unter Windows 7 64 bit (V2.0)
Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...
MehrWarenwirtschaft Handbuch - Administration. 2013 www.addware.de
Warenwirtschaft Handbuch - Administration 2 Warenwirtschaft Inhaltsverzeichnis Vorwort 0 Teil I Administration 3 1 Datei... 4 2 Datenbank... 6 3 Warenwirtschaft... 12 Erste Schritte... 13 Benutzerverwaltung...
MehrEigene Seiten erstellen
PhPepperShop Anleitung Datum: 3. Oktober 2013 Version: 2.1 Eigene Seiten erstellen Eigene Inhalte / CMS Glarotech GmbH Inhaltsverzeichnis Anleitung zur Erstellung von eigenen Inhalten/Links...3 1. Anmeldung
MehrIm Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.
Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:
MehrNetzwerk einrichten unter Windows
Netzwerk einrichten unter Windows Schnell und einfach ein Netzwerk einrichten unter Windows. Kaum ein Rechner kommt heute mehr ohne Netzwerkverbindungen aus. In jedem Rechner den man heute kauft ist eine
Mehr2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE
2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht
MehrStundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten
Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe
MehrDurchführung der Datenübernahme nach Reisekosten 2011
Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
MehrEinstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG
Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich
MehrHinweise zur Installation von MySQL
Hinweise zur Installation von MySQL Im Folgenden werden einige Hinweise gegeben, die die Einrichtung einer MySQL-Lernumgebung am eigenen Windows-Rechner erleichtern sollen. Der Text ist vor allem für diejenigen
MehrHandbuch zur Anlage von Turnieren auf der NÖEV-Homepage
Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei
MehrMedea3 Print-Client (m3_print)
Medea3 Print-Client (m3_print) Installationsanleitung Installationsanleitung m3_print.exe...2 1. Installieren von Ghostskript und Ghostview...2 1. Ghostskript...2 2. Ghostview...3 2. Kopieren des Print-Client-Programms...6
MehrThomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5
Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5 Im Folgenden wird die Installation von MySQL 5.0 und Tomcat 5.0 beschrieben. Bei MySQL Server 5.0 handelt es sich um ein
MehrDieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.
CLIENT INSTALLATION DES ENIQ ACCESSMANAGEMENTS Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren. Ein Client kann in drei
MehrWarum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?
Vorbemerkung Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server? Da wir schon seit einigen Jahren mit OTRS arbeiteten, hat uns ein Kunde beauftragt,
MehrHandbuch PCI Treiber-Installation
Handbuch PCI Treiber-Installation W&T Release 1.0, September 2003 09/2003 by Wiesemann & Theis GmbH Microsoft und Windows sind eingetragene Warenzeichen der Microsoft Corporation Irrtum und Änderung vorbehalten:
MehrLeitfaden Installation des Cisco VPN Clients
Leitfaden Seite 1 von 19 INHALTSVERZEICHNIS 1.Vorbereitung für die Installation...3 1.1 Einrichten einer Wählverbindung...3 1.1.1 Einwahl Parameter...3 1.1.2 Netzwerk Konfiguration...4 1.2 Entpacken der
Mehr32.4 Anpassen von Menüs und Symbolleisten 795i
32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen
MehrVerbinden von IBM Informix mit Openoffice mittels JDBC
Verbinden von IBM Informix mit Openoffice mittels JDBC Voraussetzungen Installierte und laufende IBM Informixdatenbank. Getestet wurde mit IDS 9.40 und 10.00. Sollte aber auch mit älteren Versionen funktionieren.
MehrMetaQuotes Empfehlungen zum Gebrauch von
MetaQuotes Empfehlungen zum Gebrauch von MetaTrader 4 auf Mac OS Auch wenn viele kommerzielle Angebote im Internet existieren, so hat sich MetaQuotes, der Entwickler von MetaTrader 4, dazu entschieden
MehrDie Dateiablage Der Weg zur Dateiablage
Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen
MehrInstallation von Updates
Installation von Updates In unregelmässigen Abständen erscheinen Aktualisierungen zu WinCard Pro, entweder weil kleinere Verbesserungen realisiert bzw. Fehler der bestehenden Version behoben wurden (neues
Mehrmysoftfolio360 Handbuch
mysoftfolio360 Handbuch Installation Schritt 1: Application Server und mysoftfolio installieren Zuallererst wird der Application Server mit dem Setup_ApplicationServer.exe installiert und bestätigen Sie
MehrSich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon.
www.blogger.com Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon. Sie müssen sich dort nur ein Konto anlegen. Dafür gehen Sie auf
MehrWOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:
WOT Skinsetter WOT Skinsetter steht für World of Tanks skinsetter (WOTS von nun an). Mit diesen Tool können Sie Skins importieren und ändern, wann immer Sie möchten auf einfache Weise. Als World of Tanks
MehrAblaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole
Lavid-F.I.S. Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der Lavid Software GmbH Dauner Straße 12, D-41236 Mönchengladbach http://www.lavid-software.net Support:
MehrUrlaubsregel in David
Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5
MehrHandbuch B4000+ Preset Manager
Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten
MehrMit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.
Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen
MehrVerschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.
HACK #39 Hack Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.»verschlüsseln Sie Ihren Temp-Ordner«[Hack #33] hat Ihnen gezeigt, wie Sie Ihre Dateien mithilfe
MehrQt-Projekte mit Visual Studio 2005
Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung
MehrIn 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
Mehr2.1 Briefkopf Klicken Sie im Menü Einstellungen auf den Button Briefkopf. Folgendes Formular öffnet sich:
Installation 1 Installation 1 2 Einstellungen 1 2.1 Briefkopf 1 2.2 Logo 2 2.3 Zusatztext 2 2.4 Fußzeile 2 2.5 Mehrwertsteuer (Umsatzsteuer) 3 2.6 Rechnungsnummer 4 2.7 Drucken 4 2.8 Einheiten 5 3 Artikelverwaltung
MehrQuickstep Server Update
Quickstep Server Update Übersicht Was wird aktualisiert Update einspielen intersales stellt das Quickstep Entwicklungs- und Ablaufsystem auf eine aktuelle Version um. Hierfür ist es erforderlich, Ihre
MehrDatenbank-Verschlüsselung mit DbDefence und Webanwendungen.
Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine
MehrHerzlich willkommen bei der Installation des IPfonie -Softclients!
Herzlich willkommen bei der Installation des IPfonie -Softclients! Sie benötigen diesen Softclient, um mit Ihrem Computer bequem über Ihren Internetanschluss telefonieren zu können. Der Softclient ist
MehrEinfügen von Bildern innerhalb eines Beitrages
Version 1.2 Einfügen von Bildern innerhalb eines Beitrages Um eigene Bilder ins Forum einzufügen, gibt es zwei Möglichkeiten. 1.) Ein Bild vom eigenem PC wird auf den Webspace von Baue-die-Bismarck.de
MehrHow to install freesshd
Enthaltene Funktionen - Installation - Benutzer anlegen - Verbindung testen How to install freesshd 1. Installation von freesshd - Falls noch nicht vorhanden, können Sie das Freeware Programm unter folgendem
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2
Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung
MehrSichern der persönlichen Daten auf einem Windows Computer
Sichern der persönlichen Daten auf einem Windows Computer DIRECTION DES SERVICES IT SERVICE DIT-MI DIREKTION DER IT-DIENSTE DIENSTSTELLE DIT-MI 1/9 1 Inhaltsverzeichnis 2 Einleitung... 3 3 Outlook Daten...
Mehr