Ver Mensaje Individual
  #13 (permalink)  
Antiguo 22/04/2009, 00:05
NeoKaisser
 
Fecha de Ingreso: julio-2003
Mensajes: 240
Antigüedad: 21 años, 6 meses
Puntos: 1
Respuesta: Novato con problemas para empezar en Hibernate.

Hola de nuevo.

He añadido un flus antes y después del commit y nada

¿Será por que es una base de datos en memoria?

Aquí os dejo mi clase, a ver si veís algo raro. (Aunque esta en el tutorial de arriba, todo, es lo único que he usado).

Código:
package mx.uam.hibernate;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class ManejadorLibro {
    private SessionFactory sessionFactory;

    public ManejadorLibro() {
        try {
            System.out.println("Inicalizando Hibernate");
            sessionFactory = new Configuration().configure().buildSessionFactory();
            System.out.println("Terminada la inicializacion de Hibernate");
        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }

    private void agregaLibro(String titulo, String autor) {
        try {
            Session session = sessionFactory.openSession();
            Transaction tx = session.beginTransaction();
            Libro libro = new Libro();
            libro.setTitulo(titulo);
            libro.setAutor(autor);
            System.out.println("Valores a insertar " + autor + ", " + titulo);
            session.save(libro);
            session.flush();
            tx.commit();
            session.flush();
            session.close();
        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }

    private List listaLibros() {
        try {
            Session session = sessionFactory.openSession();
            Transaction tx = session.beginTransaction();
            // List result = session.find("from Libro");
            List result = session.createQuery("from Libro").list();

            System.out.println("Tamaño libreria:  " + result.size());

            tx.commit();
            session.close();
            return result;
        } catch (HibernateException e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    public static void main(String[] args) {
        ManejadorLibro manejadorLibro = new ManejadorLibro();

        // System.out.println("__| Parametros: " + args[0] + ", " + args[1] + " ," + args[2] + " __|");

        if (args[0].equals("agrega")) {
            if (args[1] != null && args[2] != null) {
                manejadorLibro.agregaLibro(args[1], args[2]);

            } else {
                System.out.println("Faltan parametros");
            }
        } else if (args[0].equals("lista")) {
            List libros = manejadorLibro.listaLibros();

            for (int i = 0; i < libros.size(); i++) {
                Libro libro = (Libro) libros.get(i);
                System.out.println("Libro: " + libro.getTitulo() + ", Autor:" + libro.getAutor());
            }
        }
        System.exit(0);
    }
}

Si modifico el main, insertando y recuperando los datos a continuación, si funciona, de este modo:

Código:
public static void main(String[] args) {
        ManejadorLibro manejadorLibro = new ManejadorLibro();

        // System.out.println("__| Parametros: " + args[0] + ", " + args[1] + " ," + args[2] + " __|");

        if (args[0].equals("agrega")) {
            if (args[1] != null && args[2] != null) {
                manejadorLibro.agregaLibro(args[1], args[2]);
                List libros = manejadorLibro.listaLibros();

                for (int i = 0; i < libros.size(); i++) {
                    Libro libro = (Libro) libros.get(i);
                    System.out.println("Libro: " + libro.getTitulo() + ", Autor:" + libro.getAutor());
                }

            } else {
                System.out.println("Faltan parametros");
            }
        } else if (args[0].equals("lista")) {
            List libros = manejadorLibro.listaLibros();

            for (int i = 0; i < libros.size(); i++) {
                Libro libro = (Libro) libros.get(i);
                System.out.println("Libro: " + libro.getTitulo() + ", Autor:" + libro.getAutor());
            }
        }
        System.exit(0);
    }


¿Por qué?

¿Hay alguna propiedad del "cfg" que indique que los datos "no persistan" ?? no sé, ya no sé donde buscar.

Salu2 y gracias.