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
| |
| |
| |
| |
| |
| |
| 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.*; |
| |
| |
| |
| |
| |
| |
| |
| public class Starter { |
| |
| |
| 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 { |
| |
| |
| Configuration cfg = new Configuration(); |
| cfg.addClass(de.aja.em2004.bo.User.class); |
| |
| hibSessionFactory = cfg.buildSessionFactory(); |
| |
| } catch (MappingException e) { |
| e.printStackTrace(); |
| |
| } catch (HibernateException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| public static void main(String[] args) { |
| |
| |
| } |
| } |
| |
4. User.java
| |
| |
| |
| |
| |
| |
| 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; |
| |
| |
| |
| |
| |
| |
| 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) { |
| |
| 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