ausser du willst globale Transaktionen die für beide DBs gleichzeitig gelten
Was meinst du mit "viel Aufwand"? Mehr als eine XML konfig?
Hab das mit iBatis schon gemacht
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
Habe dafür gar keine Properties Datei genutzt, sondern den ressourcenfilter von Maven 2, geht aber beides.wie geht das eigentlich mit iBatis, braucht man da 2 *.properties - Dateien
Was soll denn mit der passieren? MIt iBatis habe oich pro DB immer eine sql-map-config gehabt.was passiert dann mit der SqlMapConfig.xml?
<transactionManager type="JDBC" > solltest du gar nicht haben wenn du Spring einsetzt, denn Spring kümmert sich um die Transaktionen.Brauche ich da 2 Dateinen von SqlMapConfig.xml oder 2 <transactionManager type="JDBC" > Einträge in dieser Datei?
Ach, warte nur bis du alle 1-2 dutzend Abhängigkeiten (jars) runtergeladen hast *g*die hat 42,8MB, das kanns ja auch nicht sein oder???
Das sind keine Versionen, sondern die verschiedenen Packages, je nachdem was man braucht.
Ach, warte nur bis du alle 1-2 dutzend Abhängigkeiten (jars) runtergeladen hast *g*
Für so etwas ist Maven2 wirklich genial...
Die Hibernate Doku enthält eine Art "Hello World" Tutorial. Da steht ganz genau beschrieben, was man machen muss, um ne einfache Klasse zu mappen.
Wenn man das Schritt für Schritt macht, kann man eigentlich nichts falsch machen (vorausgesetzt man ist der englischen Sprache mächtig).
Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
gesucht wird im ClassPath,
du könntest die Datei z.B. in dein src-Verzeichnis legen, von wo aus sie wahrscheinlich ins bin-Verzeichnis kopiert wird,
bei einer Entwicklungsumgebung wie Eclipse,
oder in ein lib/ conf-Verzeichnis, und dieses in den ClassPath hinzufügen
edit:
> ich habe die Datei hibernate.cfg.xml momentan in meiner IDE (Netbean) in einem <default package> (also in der Verzeichnisstruktur im scr- Ordner)
erst zu spät gelesen
dann weiß ich auch nicht, wo liegen die .class-Dateien? ist die xml-Datei auch dort?
Den Config Ordner musst Du natürlich noch als Source Folder definieren.
Das kommt auf die eingesetze IDE an.
Unter Eclipse: Project Properties -> Java Build Path -> Source -> Add folder...
MAPPINGPOOL ------ MAPPINGPOOL_CONNECTION ------ CONNECTION
private void createAndStoreEvent(final String connectionName) {
final Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
final Connection theEvent = new Connection();
theEvent.setConnectionName(connectionName);
session.save(theEvent);
session.getTransaction().commit();
}
Hiberrnate kann "alles"Meine Frage wäre jetzt, wie kann ich es machen, dass ich in allen 3 Tabellen das richtige für ein Tupel einfüge. Muss ich den obigen Code für alle 3 Tabellen je nach Tabelle ausführen, oder kann ich das mit Hibernate auf einen Schlag alles machen, sodass in allen 3 Tabellen gleich das Richtige für den Tupel drinnensteht?
Ist es eine bidirektionale Verbindung? Dann musst Du in beiden Hibernate Objekten die Referenzen richtig setzen vor dem Speichern. Ausserdem hängts von der Kaskadierung ab, ob die referenzierten Objekte mit gespeichert werden.
Long eventId = mgr.createAndStoreEvent("My Event");
Long personId = mgr.createAndStorePerson("Foo", "Bar");
mgr.addPersonToEvent(personId, eventId);
System.out.println("Added person " + personId + " to event " + eventId);
private Long createAndStoreEvent(String title) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Connection theEvent = new Connection();
theEvent.setConnectionName(title);
session.save(theEvent);
session.getTransaction().commit();
return theEvent.getId();
}
private Long createAndStorePerson(String firstname, String lastname) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
MappingPool thePerson = new MappingPool();
thePerson.setName(firstname);
thePerson.setZustand(lastname);
session.save(thePerson);
session.getTransaction().commit();
return thePerson.getId();
}
Das kann man so machen. Üblich ist es aber eher, den Persistenzcode wegzukapseln, indem man sich z.B. DAOs für die Hibernate Objekte schreibt. Siehe dazu: https://www.hibernate.org/328.html
sessionFactory.getCurrentSession().createQuery(hql).list();
public static void main(String[] args) {
HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR(30), start_Date date, duration int);");
EventDao eventDao = new EventDao();
Event event = new Event();
event.setName("Create");
eventDao.create(event);
HibernateUtil.checkData("select uid, name from events");
}
final Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
final List result = session.createQuery("from Event").list();
session.getTransaction().commit();
return result;
Nein, damit erübrigt sich SQL.
Beim Hibernate Core Download ist die Doku als PDF dabei. Nimm die am besten (die Online Version spinnt grade).
Denke weniger in Tabellen und mehr an Objekte die relationen (Referenz, Collection) untereinander haben.
Anstatt "Tuples" hast du eben die Objekte und navigierst über diese.
<hibernate-mapping>
<class name="events.Person" table="PERSON">
<id name="id" column="PERSON_ID">
<generator class="native"/>
</id>
<property name="age"/>
<property name="firstname"/>
<property name="lastname"/>
<set name="events" table="PERSON_EVENT">
<key column="PERSON_ID"/>
<many-to-many column="EVENT_ID" class="events.Event"/>
</set>
</class>
</hibernate-mapping>
final ConnectionDao connectionDao = new ConnectionDao();
final MappingPoolDao mappingPoolDao = new MappingPoolDao();
for (int i = 0; i < 5; i++) {
final MappingPool mappingPool = new MappingPool();
mappingPool.setName("MappingPool " + i);
mappingPool.setWert(22.4f);
mappingPool.setZustand("nicht verbunden");
mappingPoolDao.create(mappingPool);
}
for (int i = 0; i < 7; i++) {
final Connection connection = new Connection();
connection.setConnectionName("TestMQ " + i);
connectionDao.create(connection);
}