Método Hibernate.createBlob() está en desuso desde Hibernate 4.0.1 y se trasladó a Hibernate.getLobCreator(Session session).createBlob(). Cualquier solución ¿qué debería pasar al interior, método getLobCreator(Session session), yo.e en lugar de la Sesión, O cualquier otra solución que muestra cómo recuperar y guardar una imagen en la bd usando Spring y Hibernate.

  • Por favor considerar la aceptación de la actual respuesta si ayuda a resolver su problema o proporcionar una retroalimentación comentario si no.
InformationsquelleAutor Ankit Tater | 2013-08-05

1 Comentario

  1. 5

    Según este fácil tutorial,

    El Objeto De La Sesión

    Una Sesión se utiliza para obtener una conexión física con una base de datos. El objeto de la Sesión es ligero y diseñado para ser
    crea una instancia cada vez que es necesaria una interacción con la base de datos.
    Objetos persistentes son guardados y recuperados a través de un objeto de Sesión.

    De los objetos de sesión no debe mantenerse abierta durante un largo tiempo debido a
    por lo general no son seguros para subprocesos y que debe ser creado y
    destruyó según sea necesario.

    En modo de Hibernación 4.0+ usted puede conseguir Session objeto de un SessionFactory. Vamos a escribir una práctica de clase para esta tarea.

    package your.company.util;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.hibernate.service.ServiceRegistryBuilder;
    
    public class HibernateUtil {
    
        private static final SessionFactory sessionFactory;
        static {
            try {
                //Create the SessionFactory from hibernate.cfg.xml
                Configuration configuration = new Configuration().configure();
                ServiceRegistry registry = new ServiceRegistryBuilder()
                        .applySettings(configuration.getProperties())
                        .buildServiceRegistry();
                sessionFactory = configuration.buildSessionFactory(registry);
            } catch (Throwable ex) {
                //Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }
    
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    
        public static void shutdown() {
            //Close caches and connection pools
            getSessionFactory().close();
        }
    
    }

    A continuación:

    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    
    byte[] bFile = /* load image into byte array */;
    Blob image = Hibernate.getLobCreator(session).createBlob(bFile);
    /* ? Your actions with Blob ? */
    
    session.getTransaction().commit();

    Hágamelo saber, si es que funciona.

    O (asumir Employee es un POJO con un campo @Lob private byte[] photo;, se unen a la tabla correspondiente):

    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    
    byte[] bFile = /* load image into byte array */;
    Employee employee = new Employee();
    employee.setPhoto(bFile);
    
    session.save(employee);
    
    session.getTransaction().commit();

    Info de mkyong.com. Aquí usted puede encontrar el ejemplo completo de cómo guardar imagen en base de datos. Y el ejemplo de cómo recuperar la imagen.


    Nota: Hibernate 4.3+ tu código dentro de try bloque cambia ligeramente. Porque la clase ServiceRegistryBuilder es reemplazado por StandardServiceRegistryBuilder.

    Configuration configuration = new Configuration().configure();
    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
            .applySettings(configuration.getProperties());
    SessionFactory factory = configuration.buildSessionFactory(builder.build());

Dejar respuesta

Please enter your comment!
Please enter your name here