![]() |
Datenbank: Oracle • Version: 11g Release 2 • Zugriff über: Oracle SQL Developer oder Hibernate
Hibernate und DAO und Reports
Hallo miteinander,
ich hab lange nix mehr geschrieben aber jetzt hätte ich gleich 2 Fragen. ich würde gerne ein Reports mit meiner Datenbank erstellen. Zurzeit bräuchte ich drei unterschiedliche Reports. Ich benutze den Oracle SQL Developer. Mein Programm ist in Java. Meine Datenbank ist eine Standalone Datenbank ohne Webanbindung, GUI also in Java programmiert. Ich würde die Reports gerne in einer Word Datei verwirklichen, da der Benutzer noch Informationen dazuschreiben muss, welche ich nicht in der DB habe und es auch keinen Sinn macht die zu speichern. Mein Gedanke ist also folgender: Benutzer klickt auf "Report erstellen" Worddatei erscheint mit ausgefüllten Feldern (Daten aus der der DB) Benutzer schreibt ganz normal in die Worddatei seine Kommentare dazu Benutzer speichert die Word datei ganz normal ab Hat jemand Erfahrung mit sowas oder kann mir eine Bibliothek empfehlen? Ich hätte noch eine andere Frage, ich versuche gerade eine Persistenzschicht aufzubauen die dann mit der Datenbank kommuniziert. Ich wollte erstmal meine DAO Klassen erstellen und das ganze dann mit Hibernate verknüpfen. Ich bin aber grad ein wenig verwirrt, da ich ab und zu entweder nur DAO lese oder nur etwas von Hibernate. Ist die kombination gar nicht möglich? Leider habe ich der Sache keine Erfahrung ich mache das ganze zum ersten Mal. Vielen Dank im voraus! Gruß Börmt-die-Buse |
AW: Hibernate und DAO und Reports
Zitat:
Die DAO Klassen erzeugen dann einfach einen JPA EntityManager, und führen die Abfragen und Aktionen über dessen JPA API Methoden aus. Hibernate oder EclipseLink arbeiten im Hintergrund. |
AW: Hibernate und DAO und Reports
Zitat:
Wenn ich auf die schnelle nach JPA Tutorials such, sieht das eher mau aus. Ich hab grad ein paar Probleme die Konfigurationsdatei "hibernate.cfg.xml" gescheidt einzurichten bzw. er meckert beim erstellen der SessionFactory rum. |
AW: Hibernate und DAO und Reports
Zitat:
![]() Wenn man Hibernate-spezifische Features nutzen will und die Anwendung nicht auf andere Persistenzframeworks portabel sein muss, dann spielt JPA natürlich keine Rolle. |
AW: Hibernate und DAO und Reports
Ich hab bei Stackoverflow nach meinem Problem gesucht und auch etwas gefunden aber leider hab ich jetzt ein anderes Problem
wo ich keine Lösung finde. Aus Sicherheitsgründen habe ich die "hibernate.connection.url" allgemein gehaten Besonders das verwundet mich, "INFO: HHH000206: hibernate.properties not found" versteh ich nicht warum er sie nicht finden sollte. Mein classpath hab ich nicht verändert und mein hibernate.cfg.xml file liegt in "src" Ich hoffe einer kann mir weierhelfen, versuch das ganze schon seit gestern vormittag zu lösen. Vielen Dank!
Code:
package hibernate;
import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import persistencelayer.*; public class HibernateTest { public static void main(String[] args) { TestUserDetails user2 = new TestUserDetails(); user2.setUserId(1); user2.setUserName("First User"); user2.setAddress("First User's address"); user2.setJoinedDate(new Date()); user2.setDescription("Description of the user goes here"); try { //SessionFactory wird erzeugt, mit der Konfiguration von Hibernate SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); // session.save(user); session.save(user2); session.getTransaction().commit(); } catch (Exception e) { System.out.println("Fehler beim erstellen der SessionFactory"); } } } Hibernate.cfg.xml Konfiguration
Code:
Fehlermeldungen
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@host:port:ssid:</property> <property name="hibernate.connection.username">name</property> <property name="hibernate.connection.password">password</property> <!-- JDBC connection pool (use the built-in) --> <property name="hibernate.connection.pool_size">1</property> <!-- SQL dialect --> <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> <!-- Disable the second-level cache --> <property name="hibernate.cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="hibernate.show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hibernate.hbm2ddl.auto">create</property> <!-- Names the annotated entity class --> <mapping class="persistencelayer.Project"/> <mapping class="persistencelayer.User"/> <!-- <mapping class="persistencelayer.Employer"/> <mapping class="persistencelayer.IndividualTest"/> <mapping class="persistencelayer.ObjectType"/> <mapping class="persistencelayer.TestChamber"/> <mapping class="persistencelayer.TestMethod"/> <mapping class="persistencelayer.TestUserDetails"/> --> </session-factory>
Code:
Mai 07, 2015 7:50:32 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final} Mai 07, 2015 7:50:32 AM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {4.3.9.Final} Mai 07, 2015 7:50:32 AM org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found Mai 07, 2015 7:50:33 AM org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: Bytecode provider name : javassist Mai 07, 2015 7:50:33 AM org.hibernate.cfg.Configuration configure INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml Mai 07, 2015 7:50:33 AM org.hibernate.cfg.Configuration getConfigurationInputStream INFO: HHH000040: Configuration resource: /hibernate.cfg.xml Mai 07, 2015 7:50:33 AM org.hibernate.cfg.Configuration doConfigure INFO: HHH000041: Configured SessionFactory: null Mai 07, 2015 7:50:33 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!) Mai 07, 2015 7:50:33 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000401: using driver [oracle.jdbc.driver.OracleDriver] at URL [jdbc:oracle:thin:@host:port:ssid:] Mai 07, 2015 7:50:33 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000046: Connection properties: {user=qqrhldb, password=****} Mai 07, 2015 7:50:33 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000006: Autocommit mode: false Mai 07, 2015 7:50:33 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Hibernate connection pool size: 1 (min=1) Fehler beim erstellen der SessionFactory |
AW: Hibernate und DAO und Reports
Zitat:
p.s. ich konnte ein Hibernate 4 Projekt mit NetBeans aufbauen und darin ist keine hibernate.properties enthalten. Ich binde im Maven POM nur eine Dependency ein:
Code:
Ich sehe im Log auch
<dependency>
<groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.9.Final</version> </dependency> INFO: HHH000206: hibernate.properties not found Aber das Programm läuft. |
AW: Hibernate und DAO und Reports
Zitat:
Es kommen trotzdem die selben Fehlermeldungen. |
AW: Hibernate und DAO und Reports
Zitat:
Das ist etwas ungünstig für die Fehlersuche:
Code:
Da sollte auch der Stacktrace ausgegegeben werden.
} catch (Exception e) {
System.out.println("Fehler beim erstellen der SessionFactory"); }
Code:
p.s. am Ende habe ich noch ein sessionFactory.close() eingefügt, damit Programm terminiert.
e.printStackTrace();
|
AW: Hibernate und DAO und Reports
Zitat:
Code:
ich hab nochmal mein "host:port:sid" überprüft, hab exakt das rauskopiert, was auch im Oracle SQL Developer drin steht.
org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930) at hibernate.HibernateTest.main(HibernateTest.java:23) Caused by: java.sql.SQLRecoverableException: I/O-Fehler: Invalid connection string format, a valid format is: "host:port:sid" at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:489) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) ... 14 more Caused by: oracle.net.ns.NetException: Invalid connection string format, a valid format is: "host:port:sid" at oracle.net.resolver.AddrResolution.resolveSimple(AddrResolution.java:504) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:437) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:693) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:251) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1140) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:340) ... 19 more kann es vllt sein das er nicht erkennt, welche DB er ansprechen soll? ich hab 2 drin, einmal namens "Test" und einmal "Umweltlabor". |
AW: Hibernate und DAO und Reports
Zitat:
|
AW: Hibernate und DAO und Reports
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich hab wieder eine neue Frage zu Hibernate. Im Anhang kann man sehen, das ich 2 Datenbanken in einer hibernate url hab
Code:
Weiß jemand, wie ich nur Umweltlabor ansprechen kann und nicht Test? Zurzeit wird alles nur in Test reingeschrieben
<property name="hibernate.connection.url">jdbc:oracle:thin:@host:1631:sid</property>
Ich hab erst gedacht ich kann es so machen
Code:
Das passt aber nicht zur Syntax.
<property name="hibernate.connection.url">jdbc:oracle:thin:@host:1631:sid:Umweltlabor</property>
Im Internet stand das es so gehen müsste.
Code:
Funzt leider auch nicht.
<!--<property name=”hibernate.default_schema”>Umweltlabor</property> -->
Egal wo ich such wird der Fall von 2 DBs in einer URL nicht beschrieben. Weiß jemand Rat? Danke! |
AW: Hibernate und DAO und Reports
Zitat:
Code:
Das sollte funktionieren, zum Beispiel wird es so beschrieben unter
<property name="hibernate.default_schema">Umweltlabor</property>
![]() |
AW: Hibernate und DAO und Reports
Zitat:
Ich hab es natürlich ohne die Kommentarzeichen gemacht, hab es nur aus dem Code nehmen wollen, da es nicht funktioniert. Wenn ich aber Hibernate ausführe mit dem Code von oben, dann bekomm ich diese Fehlermeldungen. Zitat:
|
AW: Hibernate und DAO und Reports
Zitat:
statt <property name=”hibernate.default_schema”>Umweltlabor</property> muss es <property name="hibernate.default_schema">Umweltlabor</property> sein, 'typographisch schöne' Anführungszeichen sind in XML nicht als Begrenzer der Attribute erlaubt. |
AW: Hibernate und DAO und Reports
Zitat:
Ich denke nur das unsere Annahme falsch ist, das man mit <property name="hibernate.default_schema">Umweltlabor</property auf die entsprechende DB zugreifen kann. Da ich diese Fehlermeldung für jede Tabelle bekomm und anscheinend denkt er das Schema was mit Benutzer zu tun hat. Zitat:
|
AW: Hibernate und DAO und Reports
Zitat:
![]() Auch würde ich versuchen den am bessten passenden Oracle Dialekt in der hibernate.cfg.xml einzutragen. OracleDialect ist "veraltet", man kann zum Beispiel org.hibernate.dialect.Oracle10gDialect für 10g verwenden: ![]() |
AW: Hibernate und DAO und Reports
Zitat:
Hab hab es probiert mit "UMWELTLABOR" und "umweltlabor", ist leider kein Unterscheid erkennbar. Es kommt die selbe Fehlermeldung. |
AW: Hibernate und DAO und Reports
Zitat:
* ) z.B. unter ![]() Zitat:
|
AW: Hibernate und DAO und Reports
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Im Anhang hab ich mal verdeutlicht wie es bei mir aussieht. Der Benutzername ist anders, weil "Umweltlabor" und "Test" kein Benutzername ist, sondern der Name von 2 Verbindungen aka Datenbanken (denk ich mal). Deswegen leg ich auch so den Benutzer fest.
Code:
<property name="hibernate.connection.username">qqrhldb</property>
|
AW: Hibernate und DAO und Reports
*blödsinn geschrieben*
|
AW: Hibernate und DAO und Reports
Zitat:
![]() ![]()
Code:
Dann sollte das hier auch funktionieren:
<property name="hibernate.connection.username">YOURSCHEMA</property>
<property name="hibernate.connection.password">YOURPASSWORD</property> <property name="hibernate.default_schema">YOURSCHEMA</property>
Code:
Ich tippe, der Verbindungsname 'Umweltlabor' ist nur der frei wählbare Anzeigename in der IDE und hat keinen Einfluss.
<property name="hibernate.connection.username">qqrhldb</property>
<roperty name="hibernate.connection.password">...</property> <property name="hibernate.default_schema">qqrhldb</property> |
AW: Hibernate und DAO und Reports
Ich hab gerade herausgefunden, das wenn ich mit Hibernate auf die DB zugreif und eine Tabelle hinzufüge.
Dann wird es automatisch auf beiden "DB" Namen hinzugefügt. Also in "Test" und in "Umweltlabor". Ich darf wahrscheinlich "Test" und Umweltlabor" nicht als DBs betrachten. Die eigentliche DB ist "qqrhldb" und es gibt keine Möglichkeit zwischen den Verbindungsnamen durchzuwechseln. |
AW: Hibernate und DAO und Reports
Zitat:
Jeder Benutzer/Schema hat eigene Objekte, Datenmodell, Tabellen und Zugriffsrechte. Eine DB hat viele Nutzer, eine Installation kann viele DB haben, ein Rechner kann viele Installationen (also unterschiedliche Oracle Versionen oder Konfigurationen) haben. Ich hab keine Ahnung von Hibernate, aber in Deinem Fall ist laut Bild ![]() der Nutzer qqrhldb, der Verbindungsname Umweltlabor oder Test ist eine Hibernatesache, die beliebig vergeben werden kann und nichts mit einer Oracle DB zu tun hat. Kann heißen wie es will und alles auf verschiedene oder die gleiche DB gehen und auf den gleichen Nutzer! So sieht es zumindest bei Dir (soweit man das auf dem Bild erkennen kann) so aus und das ergibt scheinbar den Effekt, dass es auf "beiden" Systemen "eingespielt" wird. |
AW: Hibernate und DAO und Reports
Zitat:
Ich habe Test und Umweltlabor selber angelegt um meine Programmierung bei "Test" testen zu können bevor ich final auf Umweltlabor zugreif, deswegen wollte ich seperat zugreifen können. Ich hätte aber noch eine andere Frage wegen Redundanzen. Ich habe mehrere Tabellen mit einer Spalte Barcodes. Die Spalte Barcodes hat bei jeder Tabelle ein verändertes Format. Natürlich hab ich aber bei jeder Tabelle auch eine Spalte ID. So ein Barcode setzt sich aber zusammen aus einem Präfix und der ID, z.B. PV_1. Präfix = PV, ID = 1 Da ID und Barcode in ein und der selben Tabelle sind, wird ja die Redundanz verletzt. Gibt Oracle bei sowas eine Fehlermeldung aus? Ich würde ungern die Spalte Barcode wegnehmen, da ich den kompletten Barcode in meiner Datenbank haben möchte und die ID wegzulassen kommt mir ihrgenwie falsch vor. Sorry wenn das eine dumme Frage sein sollte, aber ich habe keine Erfahrung in Datenbanken. Schonmal Danke im Vorraus. |
AW: Hibernate und DAO und Reports
Zitat:
Wenn 2 Spalten gemeinsam ein eindeutiger Schlüssel sein sollen, kannst Du einen unique constraint definieren, am besten mit dem entsprechenden unique index. Welche Redundanz wird wann verletzt? Meinst Du vielleicht die Eindeutigkeit wird verletzt? Möchtest Du beide Spalten zu einer zusammenfassen? |
AW: Hibernate und DAO und Reports
Zitat:
Ja ich denke es wird die Eindeutigkeit verletzt, da die ID und der Barcode gleich sind, außer das der Barcode noch diese Präfix "PV_" davor hat. PV_1 Ich möchte die Spalte Barcode behalten, damit ich den Barcode komplett in meiner Datenbank hab. Dann muss der Datentyp aber String sein. Der Barcode lässt sich aber nicht autoamtisch inkrementieren, weil er halt ein String ist. Deswegen lasse ich die Spalte ID drin, die wird dann inkrementiert. |
AW: Hibernate und DAO und Reports
Zitat:
Ist der Präfix konstant, also immer PV? Du kannst eine virtuelle Barcodespalte bauen, die ID und konstanten Präfix zusammenfasst oder ID und variablen Präfix. Das würde man mit einem View machen. Redundanz an sich ist auch kein Nogo, man muss nur (tot)sicherstellen, dass alles synchron bleibt. Da ist dann die Frage, wieviel Aufwand man dafür treibt und warum. Macht man z.B: aus Performancegründen. Ich würde aber immer erstmal den Weg gehen, redundanzfrei zu bleiben und die Darstellung zu ändern (also View, virtuelle, zusammengesetzte Spalte anlegen). Auch das muss aber durchdacht sein, damit immer der konsistente Zugriff auf den View und die Editierbarkeit-sofern nötig- gegeben ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz