Hi,
ich habe in meinem Programm eine Übersicht aller Kunden.
Mit diesem Code werden alle Kunden abgerufen.
Auf meiner GUI habe ich einen Button "aktualisieren" der diesen Code erneut ausführt und eine Liste aller Kunden holt, diese Daten werden in ein TableModel gepackt und der JTable übergeben.
Dieses Programm soll von mehreren Benutzern im Netzwerk genutzt werden d.h. jeder Benutzer kann Änderungen an den Kunden durchführen.
Das Problem das ich habe, wenn ich z.B. im MySQLWorkbench Änderungen an einem Kunden vornehme werden meine Objekte nicht aktualisiert.
Ich habe bereits mit session.clear() und mit session.close() versucht Hibernate zu veranlassen die Objekte zu aktualisieren... Allerdings ohne erfolg.
Hier noch meine Klassen:
Die CustomerDAOImpl.java instanziere ich im Model der GUI um auf die Daten zugreifen zu können.
Ich bin nicht besonders fit in Sachen Hibernate, vielleicht hat ja einer von euch eine Idee wie ich dieses Problem lösen könnte. Achso es gibt keine Server Applikation. Die User arbeiten direkt auf der MySQL Datenbank.
Vielen Dank,
goodcat
ich habe in meinem Programm eine Übersicht aller Kunden.
Mit diesem Code werden alle Kunden abgerufen.
Java:
@SuppressWarnings("unchecked")
@Override
public List<Customer> getCustomerList() {
try {
List<Customer> customerList = getSession().getNamedQuery("Customer.all").list();
return customerList;
}
catch(HibernateException e) {
e.printStackTrace();
}
}
Dieses Programm soll von mehreren Benutzern im Netzwerk genutzt werden d.h. jeder Benutzer kann Änderungen an den Kunden durchführen.
Das Problem das ich habe, wenn ich z.B. im MySQLWorkbench Änderungen an einem Kunden vornehme werden meine Objekte nicht aktualisiert.
Ich habe bereits mit session.clear() und mit session.close() versucht Hibernate zu veranlassen die Objekte zu aktualisieren... Allerdings ohne erfolg.
Hier noch meine Klassen:
Java:
public class DAO {
@SuppressWarnings("rawtypes")
private static final ThreadLocal session = new ThreadLocal();
private static ConfigFile cfg = new ConfigFile();
private static SessionFactory sessionFactory = null;
private static ServiceRegistry serviceRegistry;
protected DAO() {
if (sessionFactory == null) configureSessionFactory();
}
private static void configureSessionFactory() throws HibernateException {
Configuration configuration = new Configuration();
configuration.configure("src/hibernate.cfg.xml");
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
DAO.sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
@SuppressWarnings("unchecked")
public static Session getSession() {
Session session = (Session) DAO.session.get();
if (session == null) {
session = sessionFactory.openSession();
DAO.session.set(session);
}
return session;
}
protected void begin() {
getSession().beginTransaction();
}
protected void commit() {
getSession().getTransaction().commit();
}
@SuppressWarnings("unchecked")
protected void rollback() {
try {
getSession().getTransaction().rollback();
getSession().close();
}
catch (HibernateException e) {
System.out.println(e.getMessage());
}
DAO.session.set(null);
}
@SuppressWarnings("unchecked")
public static void close() {
getSession().close();
DAO.session.set(null);
}
}
Java:
public class CustomerDAOImpl extends DAO implements CustomerDAO {
@Override
public Customer addCustomer(Customer customer) {
try {
begin();
getSession().save(customer);
commit();
return customer;
}
catch (HibernateException e) {
rollback();
e.printStackTrace();
}
}
@Override
public Customer updateCustomer(Customer customer) {
try {
begin();
getSession().update(customer);
commit();
return customer;
}
catch (HibernateException e) {
rollback();
e.printStackTrace();
}
}
@Override
public void deleteCustomer(Customer customer) {
try {
begin();
getSession().delete(customer.getID());
commit();
}
catch (HibernateException e) {
rollback();
e.printStackTrace();
}
}
@Override
public Customer getCustomer(int id) {
Customer customer = (Customer) getSession().get(Customer.class, id);
return customer;
}
@SuppressWarnings("unchecked")
@Override
public List<Customer> getCustomerList() {
try {
List<Customer> customerList = getSession().getNamedQuery("Customer.all").list();
return customerList;
}
catch(HibernateException e) {
e.printStackTrace();
}
}
}
Die CustomerDAOImpl.java instanziere ich im Model der GUI um auf die Daten zugreifen zu können.
Ich bin nicht besonders fit in Sachen Hibernate, vielleicht hat ja einer von euch eine Idee wie ich dieses Problem lösen könnte. Achso es gibt keine Server Applikation. Die User arbeiten direkt auf der MySQL Datenbank.
Vielen Dank,
goodcat