sieht gut aus. Womit hast du das gemacht?
Ich habe gestern Hibernate zum laufen gekriegt. Die folgenden Dateien können ersetzt werden:
1. hibernate.properties
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost/euro2004
hibernate.connection.username=root
hibernate.connection.password=
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=3000
2. User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="de.aja.em2004.bo.User"
table="USER">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="name" column="NAME"/>
<property name="userNameProxy" column="USERNAMEPROXY"/>
<property name="userPwdProxy" column="USERPWDPROXY"/>
</class>
</hibernate-mapping>
3. Starter.java
/*
* Created on 09.05.2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package de.aja.em2004;
import de.aja.em2004.bo.*;
import de.aja.em2004.db.*;
import de.aja.em2004.gui.MainWindow;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.sql.*;
/**
* @author Axel Janssen
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class Starter {
// hibernate session Factory
private SessionFactory hibSessionFactory;
private static Starter starter = new Starter();
private Starter() {
initHibernateConfig();
}
public static Starter getInstance() {
return starter;
}
private static void startupGui() {
MatchSchedule gameSchedule = (MatchSchedule)PersistenceManager.getInstance().readObjectRootFromFile("MatchSchedule");
}
public SessionFactory getHibSessionFactory() {
return hibSessionFactory;
}
public void initHibernateConfig(){
try {
//System.out.println(System.getProperty("java.class.path"));
Configuration cfg = new Configuration();
cfg.addClass(de.aja.em2004.bo.User.class); // sonst addFile
//cfg.setProperties( System.getProperties() );
hibSessionFactory = cfg.buildSessionFactory();
} catch (MappingException e) {
e.printStackTrace();
} catch (HibernateException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
}
}
4. User.java
/*
* Created on 27.05.2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package de.aja.em2004.bo;
import net.sf.hibernate.*;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import de.aja.em2004.Starter;
/**
* @author Axel Janssen
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class User {
private long id;
private String name;
private String userNameProxy;
private String userPwdProxy;
public User (String name, String proxy, String pwd) {
this.setName(name);
setUserNameProxy(proxy);
userPwdProxy = pwd;
}
public User() {}
public static long createInstance(String name, String userNameProxy, String userNamePwd) {
User user = new User(name, userNameProxy, userNamePwd);
return user.getId();
}
private void setId(long id) {
this.id = id;
}
protected long getId() {
return id;
}
protected void setName(String name) {
this.name = name;
}
protected String getName() {
return name;
}
protected void setUserNameProxy(String userNameProxy) {
this.userNameProxy = userNameProxy;
}
protected String getUserNameProxy() {
return userNameProxy;
}
protected void setUserPwdProxy(String userPwdProxy) {
this.userPwdProxy = userPwdProxy;
}
protected String getUserPwdProxy() {
return userPwdProxy;
}
public void save() {
Session session;
try {
session = Starter.getInstance().getHibSessionFactory().openSession();
Transaction tx = session.beginTransaction();
session.save(this);
tx.commit();
session.close();
System.out.println(this.toString());
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main (String[] args) {
User looser = new User();
looser.setName("axel");
looser.save();
}
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}
Sämtliche jars aus dem lib Verzeichnis von Hibernate in das Projekt importieren. Blick da zwischenzeitlich nicht mehr durch. Muss mir da irgendwann Klarheit verschaffen, was wirklich gebraucht wird. Ist aber erstmal ok.
User starten (hat main Methode für einen kleinen Test). Die Daten werden dann in die RDBMS geschrieben. Achtet auf den Wert von User.id nach dem save(). Hibernate ist Groß.
Was hier definitiv fehlt sind die usecases.
Ich denke auch, dass das statische Objektmodell soweit erstmal ok ist.
Aber was macht der Anwender mit den Objekten:
- Tipp zwiscchenspeichern
- endgültigen Tipp an das Forum absenden
- Ergebnisse eingeben (mit daran anschliessender Berechnung der Punktestände, etc.)
- vertipptes Ergebnis wieder wegnehmen.
- an das Forum gepostete xml Dateien einsammeln und verarbeiten (eigenes Icon in Menüleiste)
- Starte ein neues Spiel.
Costumbre del indio, um duh aus Java duh in eine duh relationale Datenbank zu schreiben:
así no más:
Wobei ich zugeben muß, dass ich die Metadatenbeschreibung .hbm.xml noch von Hand schreibe. Man kann das aber auch mit xDoclet automatisch generieren (fehlen mir noch ein bischen die Nerven für).
Gruß Axel