Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法Hibernate.createBlob()从Hibernate 4.0.1中被弃用,并被移动到Hibernate.getLobCreator(会话会话).createBlob()中_Java_Hibernate - Fatal编程技术网

Java 方法Hibernate.createBlob()从Hibernate 4.0.1中被弃用,并被移动到Hibernate.getLobCreator(会话会话).createBlob()中

Java 方法Hibernate.createBlob()从Hibernate 4.0.1中被弃用,并被移动到Hibernate.getLobCreator(会话会话).createBlob()中,java,hibernate,Java,Hibernate,方法Hibernate.createBlob()从Hibernate 4.0.1中弃用,并移动到Hibernate.getLobCreator(会话会话).createBlob()。任何解决方案我应该在方法getLobCreator(会话会话)中传递什么,即代替会话,或者任何其他显示如何使用Spring和Hibernate检索图像并将其保存到DB中的解决方案。根据 会话对象 会话用于获取与数据库的物理连接。会话对象是轻量级的,设计为 每次需要与数据库进行交互时实例化。 通过会话对象保存和检索持久

方法
Hibernate.createBlob()
Hibernate 4.0.1中弃用,并移动到
Hibernate.getLobCreator(会话会话).createBlob()
。任何解决方案我应该在方法
getLobCreator(会话会话)
中传递什么,即代替会话,或者任何其他显示如何使用Spring和Hibernate检索图像并将其保存到DB中的解决方案。

根据

会话对象 会话用于获取与数据库的物理连接。会话对象是轻量级的,设计为 每次需要与数据库进行交互时实例化。 通过会话对象保存和检索持久对象

会话对象不应长时间保持打开状态,因为 它们通常不是线程安全的,应该创建并保存它们 根据需要销毁它们

在Hibernate 4.0+中,您可以从
会话工厂
获取
会话
对象。让我们为这个任务编写一个方便的类

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();
    }

}
然后:

如果有效,请告诉我

或者(假设
Employee
是一个POJO,其字段
@Lob private byte[]photo;
,绑定到相应的表):

信息来自。在这里,您可以找到如何将图像保存到数据库中的完整示例。以及如何检索图像的示例


注意:对于Hibernate 4.3+版本,您的代码在
中进行尝试
阻止轻微更改。因为类
ServiceRegistryBuilder
StandardServiceRegistryBuilder
替换

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

请考虑接受目前的答案,如果它有助于解决您的问题,或提供反馈意见,如果它没有。
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();
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
        .applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());