方法Hibernate.createBlob()从Hibernate 4.0.1弃用并移至Hibernate.getLobCreator(Session session).createBlob().任何解决方案我应该在内部方法中传递什么getLobCreator(Session session),即代替Session,或任何其他解决方案,显示如何使用Spring和Hibernate检索并将图像保存到DB中.
根据这个简单的教程,
会话对象
会话用于获得与数据库的物理连接。Session对象是轻量级的,旨在在每次需要与数据库进行交互时实例化。 持久对象通过Session对象保存和检索。
会话对象不应长时间保持打开状态,因为它们通常不是线程安全的,因此应根据需要创建和销毁它们。
在Hibernate 4.0+中,您可以从中获取Session对象SessionFactory。让我们为该任务编写一个方便的类。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
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();
Run Code Online (Sandbox Code Playgroud)
让我知道,是否有效。
或(假设Employee是具有字段的POJO @Lob private byte[] photo;,绑定到相应的表):
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();
Run Code Online (Sandbox Code Playgroud)
来自mkyong.com的信息。在这里,您可以找到有关如何将图像保存到数据库的完整示例。以及如何检索图像的示例。
注意:对于Hibernate 4.3+,您的代码在代码try块中略有变化。因为class ServiceRegistryBuilder被替换StandardServiceRegistryBuilder。
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10829 次 |
| 最近记录: |