hibernate的大数据处理

bean文件

  1. package tk.blank_hibernate.bean;  
  2.   
  3. import java.io.Serializable;  
  4. import java.sql.Blob;  
  5.   
  6.   
  7. public class Image implements Serializable{  
  8.     /** 
  9.      *  
  10.      */  
  11.     private static final long serialVersionUID = 1L;  
  12.     private Integer id;  
  13.     private Blob image;  
  14.     public Image() {  
  15.         super();  
  16.         // TODO Auto-generated constructor stub  
  17.     }  
  18.     public Image(Integer id, Blob image) {  
  19.         super();  
  20.         this.id = id;  
  21.         this.image = image;  
  22.     }  
  23.     public Integer getId() {  
  24.         return id;  
  25.     }  
  26.     public void setId(Integer id) {  
  27.         this.id = id;  
  28.     }  
  29.     public Blob getImage() {  
  30.         return image;  
  31.     }  
  32.     public void setImage(Blob image) {  
  33.         this.image = image;  
  34.     }  
  35.     @Override  
  36.     public String toString() {  
  37.         return "Image [id=" + id + ", image=" + image + "]";  
  38.     }  
  39.       
  40.   
  41. }  
映射文件的书写
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="tk.blank_hibernate.bean">  
  6.     <class name="Image" table="image" catalog="hiber_jd">  
  7.         <!-- 映射符主键 -->  
  8.         <id name="id" column="id">  
  9.             <generator class="native"/>  
  10.         </id>  
  11.         <property name="image" column="image" type="blob" />  
  12.     </class>  
  13. </hibernate-mapping>  

处理所有共同操作的基础dao接口
  1. package tk.blank_hibernate.dao;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5. import java.util.Set;  
  6.   
  7. public interface BaseDao {  
  8.     /** 
  9.      * 增加数据 
  10.      *  
  11.      * @param entity 
  12.      * @return 
  13.      */  
  14.     void saveObject(Object entity);  
  15.   
  16.     /** 
  17.      * 删除数据 
  18.      *  
  19.      * @param entity 
  20.      */  
  21.     void deleteObject(Object entity);  
  22.   
  23.     /** 
  24.      * 根据ID删除数据 
  25.      *  
  26.      * @param clazz 
  27.      * @param id 
  28.      */  
  29.     void deleteObject(Class clazz, Serializable id);  
  30.   
  31.     /** 
  32.      * 更改数据 
  33.      *  
  34.      * @param entity 
  35.      */  
  36.     void updateObject(Object entity);  
  37.   
  38.     /** 
  39.      * 根据ID查询数据 
  40.      *  
  41.      * @param clazz 
  42.      * @param id 
  43.      * @return 
  44.      */  
  45.     Object getObject(Class clazz, Serializable id);  
  46.   
  47.     /** 
  48.      * 根据ID查询数据 
  49.      *  
  50.      * @param clazz 
  51.      * @param id 
  52.      * @return 
  53.      */  
  54.     Object loadObject(Class clazz, Serializable id);  
  55.   
  56.     /** 
  57.      * 查询数据表的所有数据 
  58.      * @param clazz 
  59.      * @return 
  60.      */  
  61.     List getObjectAll(Class clazz);  
  62.       
  63.   
  64. }  

处理图片的接口
  1. package tk.blank_hibernate.dao;  
  2.   
  3. public interface ImageDao extends BaseDao {  
  4.   
  5. }  

实现处理方法的类
  1. package tk.blank_hibernate.dao.impl;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.HashSet;  
  5. import java.util.List;  
  6. import java.util.Set;  
  7.   
  8. import org.hibernate.Session;  
  9. import org.hibernate.Transaction;  
  10.   
  11. import tk.blank_hibernate.bean.Goods;  
  12. import tk.blank_hibernate.dao.BaseDao;  
  13. import tk.blank_hibernate.util.BaseHibernateDaoImpl;  
  14.   
  15. public class BaseDaoImpl extends BaseHibernateDaoImpl implements BaseDao {  
  16.   
  17.     @Override  
  18.     public void saveObject(Object entity) {  
  19.         System.out  
  20.                 .println("开始执行BaseDaoImpl中的方法=======================saveObject");  
  21.         Session session = getSessionObject();  
  22.         Transaction transaction = session.beginTransaction();  
  23.         session.save(entity);  
  24.         transaction.commit();  
  25.     }  
  26.   
  27.     @Override  
  28.     public void deleteObject(Object entity) {  
  29.         System.out  
  30.                 .println("开始执行BaseDaoImpl中的方法=======================deleteObject");  
  31.         Session session = getSessionObject();  
  32.         Transaction transaction = session.beginTransaction();  
  33.         session.delete(entity);  
  34.         transaction.commit();  
  35.     }  
  36.   
  37.     @Override  
  38.     public void deleteObject(Class clazz, Serializable id) {  
  39.         System.out  
  40.                 .println("开始执行BaseDaoImpl中的方法=======================deleteObject");  
  41.         Session session = getSessionObject();  
  42.         Transaction transaction = session.beginTransaction();  
  43.         session.delete(getObject(clazz, id));  
  44.         transaction.commit();  
  45.     }  
  46.   
  47.     @Override  
  48.     public void updateObject(Object entity) {  
  49.         System.out  
  50.                 .println("开始执行BaseDaoImpl中的方法=======================updateObject");  
  51.         Session session = getSessionObject();  
  52.         Transaction transaction = session.beginTransaction();  
  53.         session.update(entity);  
  54.         transaction.commit();  
  55.     }  
  56.   
  57.     @Override  
  58.     public Object getObject(Class clazz, Serializable id) {  
  59.         System.out  
  60.                 .println("开始执行BaseDaoImpl中的方法=======================getObject");  
  61.         Session session = getSessionObject();  
  62.         Transaction transaction = session.beginTransaction();  
  63.         Object object= session.get(clazz, id);  
  64.         return object;  
  65.     }  
  66.   
  67.     @Override  
  68.     public Object loadObject(Class clazz, Serializable id) {  
  69.         System.out  
  70.                 .println("开始执行BaseDaoImpl中的方法=======================loadObject");  
  71.         return null;  
  72.     }  
  73.   
  74.     @Override  
  75.     public List getObjectAll(Class clazz) {  
  76.         System.out  
  77.                 .println("开始执行BaseDaoImpl中的方法=======================getObjectAll");  
  78.         Transaction transaction = getSessionObject().beginTransaction();  
  79.   
  80.         List list = getSessionObject().createQuery("from "+clazz.getName()).list();  
  81.         transaction.commit();  
  82.         return list;  
  83.     }  
  84.   
  85.   
  86.   
  87. }  

处理图片的类实现
  1. package tk.blank_hibernate.dao.impl;  
  2.   
  3. import tk.blank_hibernate.dao.ImageDao;  
  4.   
  5. public class ImageDaoImpl extends BaseDaoImpl implements ImageDao {  
  6.   
  7. }  

处理所有共同操作的service的接口
  1. package tk.blank_hibernate.service;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. public interface BaseService {  
  7.     /** 
  8.      * 增加数据 
  9.      *  
  10.      * @param entity 
  11.      * @return 
  12.      */  
  13.     void saveObject(Object entity);  
  14.   
  15.     /** 
  16.      * 删除数据 
  17.      *  
  18.      * @param entity 
  19.      */  
  20.     void deleteObject(Object entity);  
  21.   
  22.     /** 
  23.      * 根据ID删除数据 
  24.      *  
  25.      * @param clazz 
  26.      * @param id 
  27.      */  
  28.     void deleteObject(Class clazz, Serializable id);  
  29.   
  30.     /** 
  31.      * 更改数据 
  32.      *  
  33.      * @param entity 
  34.      */  
  35.     void updateObject(Object entity);  
  36.   
  37.     /** 
  38.      * 根据ID查询数据 
  39.      *  
  40.      * @param clazz 
  41.      * @param id 
  42.      * @return 
  43.      */  
  44.     Object getObject(Class clazz, Serializable id);  
  45.   
  46.     /** 
  47.      * 根据ID查询数据 
  48.      *  
  49.      * @param clazz 
  50.      * @param id 
  51.      * @return 
  52.      */  
  53.     Object loadObject(Class clazz, Serializable id);  
  54.   
  55.     /** 
  56.      * 查询数据表的所有数据 
  57.      *  
  58.      * @param clazz 
  59.      * @return 
  60.      */  
  61.     List getObjectAll(Class clazz);  
  62. }  

处理图片的service的接口
  1. package tk.blank_hibernate.service;  
  2.   
  3. public interface ImageService extends BaseService {  
  4.   
  5. }  

处理所有共同方法的service的实现
  1. package tk.blank_hibernate.service.impl;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import tk.blank_hibernate.dao.BaseDao;  
  7. import tk.blank_hibernate.dao.impl.BaseDaoImpl;  
  8. import tk.blank_hibernate.service.BaseService;  
  9.   
  10. public class BaseServiceImpl  implements BaseService {  
  11.   
  12.     BaseDao baseDao =new BaseDaoImpl();  
  13.   
  14.     @Override  
  15.     public void saveObject(Object entity) {  
  16.         System.out.println("开始执行BaseServiceImpl中的方法==============saveObject");  
  17.         baseDao.saveObject(entity);  
  18.     }  
  19.   
  20.     @Override  
  21.     public void deleteObject(Object entity) {  
  22.         System.out.println("开始执行BaseServiceImpl中的方法==============deleteObject");  
  23.         baseDao.deleteObject(entity);  
  24.     }  
  25.   
  26.     @Override  
  27.     public void deleteObject(Class clazz, Serializable id) {  
  28.         System.out.println("开始执行BaseServiceImpl中的方法==============deleteObject");  
  29.         baseDao.deleteObject(clazz, id);  
  30.     }  
  31.   
  32.     @Override  
  33.     public void updateObject(Object entity) {  
  34.         System.out.println("开始执行BaseServiceImpl中的方法==============updateObject");  
  35.         baseDao.updateObject(entity);  
  36.     }  
  37.   
  38.     @Override  
  39.     public Object getObject(Class clazz, Serializable id) {  
  40.         System.out.println("开始执行BaseServiceImpl中的方法==============getObject");  
  41.         return baseDao.getObject(clazz, id);  
  42.     }  
  43.   
  44.     @Override  
  45.     public Object loadObject(Class clazz, Serializable id) {  
  46.         System.out.println("开始执行BaseServiceImpl中的方法==============loadObject");  
  47.         return baseDao.loadObject(clazz, id);  
  48.     }  
  49.   
  50.     @Override  
  51.     public List getObjectAll(Class clazz) {  
  52.         System.out.println("开始执行BaseServiceImpl中的方法==============getObjectAll");  
  53.         return baseDao.getObjectAll(clazz);  
  54.     }  
  55.   
  56. }  
处理图片的service的实现
  1. package tk.blank_hibernate.service.impl;  
  2.   
  3. import tk.blank_hibernate.service.ImageService;  
  4.   
  5. public class ImageServiceImpl extends BaseServiceImpl implements ImageService {  
  6.   
  7. }  

单独产生session的接口
  1. package tk.blank_hibernate.util;  
  2.   
  3. import org.hibernate.Session;  
  4.   
  5. public interface IHibernateConnection {  
  6.     public Session getSessionObject();  
  7. }  

单独产生session的实现类
  1. package tk.blank_hibernate.util;  
  2.   
  3. import org.hibernate.Session;  
  4.   
  5. public class BaseHibernateDaoImpl implements IHibernateConnection {  
  6.   
  7.     @Override  
  8.     public Session getSessionObject() {  
  9.          return HiberUtil.openSession();  
  10.     }  
  11.   
  12. }  

产生session的实质方法
  1. package tk.blank_hibernate.util;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;  
  6. import org.hibernate.cfg.Configuration;  
  7. import org.hibernate.service.ServiceRegistry;  
  8.   
  9. public class HiberUtil {  
  10.     static Configuration cfg;  
  11.     static ServiceRegistry serviceRegistry;  
  12.     static SessionFactory sessionFactory;  
  13.       
  14.     static{  
  15.         cfg=new Configuration().configure();  
  16.         serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();  
  17.         sessionFactory =cfg.buildSessionFactory(serviceRegistry);  
  18.     }  
  19.       
  20.       
  21.     public static Session openSession(){  
  22.         //返回当前的session的连接对象  
  23.         return sessionFactory.getCurrentSession();  
  24.     }  
  25. }  
配置hibernate与数据库连接的入口文件hibernate.cfg.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   
  3.             "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  4. <hibernate-configuration>  
  5. <session-factory>  
  6.     <property name="connection.driver_class">  
  7.         com.mysql.jdbc.Driver  
  8.     </property>  
  9.     <property name="connection.url">  
  10.         jdbc:mysql://localhost:3306/hiber_jd  
  11.     </property>  
  12.     <property name="connection.username">root</property>  
  13.     <property name="connection.password">admin</property>  
  14.     <!-- 数据库的方言 -->  
  15.     <property name="hibernate.dialect">  
  16.         org.hibernate.dialect.MySQLDialect  
  17.     </property>  
  18.     <!-- Enable Hibernate's automatic session context management -->  
  19.     <property name="current_session_context_class">thread</property>  
  20.   
  21.     <!-- 显示操作的sql语句 -->  
  22.     <property name="hibernate.show_sql">true</property>  
  23.     <!-- 格式sql语句 -->  
  24.     <property name="hibernate.format_sql">false</property>  
  25.     <!-- 自动创建和更新表结构 -->  
  26.     <property name="hibernate.hbm2ddl.auto">update</property>  
  27.     <mapping resource="tk/blank_hibernate/bean/Image.hbm.xml" />  
  28. </session-factory>  
  29. </hibernate-configuration>  


测试代码


  1. package tk.blank_hibernate.junit;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileOutputStream;  
  7. import java.io.FilterInputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10. import java.sql.Blob;  
  11. import java.sql.SQLException;  
  12.   
  13. import org.hibernate.Hibernate;  
  14. import org.junit.Test;  
  15.   
  16. import tk.blank_hibernate.bean.Image;  
  17. import tk.blank_hibernate.service.ImageService;  
  18. import tk.blank_hibernate.service.impl.ImageServiceImpl;  
  19. import tk.blank_hibernate.util.HiberUtil;  
  20.   
  21. public class ImageTest {  
  22.   
  23.     // 创建ImageService处理对象  
  24.     ImageService imageService = new ImageServiceImpl();  
  25.   
  26.     @Test  
  27.     public void save() {  
  28.         // 创建img对象  
  29.         Image image = new Image();  
  30.         // 读取文件  
  31.         File file = new File("F:\\webprogect\\hibernate_jd\\src\\ni.jpg");  
  32.         try {  
  33.             // 创建文件的输入流,将文件加载到流中  
  34.             FileInputStream fis = new FileInputStream(file);  
  35.             // 创建blob大数据对象|||||在4之后要用这样的方式获取  
  36.             Blob blob = Hibernate.getLobCreator(HiberUtil.openSession())  
  37.                     .createBlob(fis, file.length());  
  38.   
  39.             //将大数据存储到   
  40.             image.setImage(blob);  
  41.             imageService.saveObject(image);  
  42.   
  43.         } catch (FileNotFoundException e) {  
  44.             // TODO Auto-generated catch block  
  45.             e.printStackTrace();  
  46.         }  
  47.     }  
  48.   
  49.     @Test  
  50.     public void getImage() throws SQLException {  
  51.         Image image = (Image) imageService.getObject(Image.class1);  
  52.   
  53.         // 判断得到得数据是否为空  
  54.         if (image != null) {  
  55.             InputStream is = image.getImage().getBinaryStream();  
  56.             File file = new File("D:\\a.jpg");  
  57.             try {  
  58.                 FileOutputStream fos = new FileOutputStream(file);  
  59.                 byte buffer[] = new byte[1024];  
  60.   
  61.                 int len = 0;  
  62.                 while ((len = is.read(buffer)) != -1) {  
  63.                     fos.write(buffer, 0, len);  
  64.                 }  
  65.                 fos.close();  
  66.                 is.close();  
  67.   
  68.             } catch (FileNotFoundException e) {  
  69.                 // TODO Auto-generated catch block  
  70.                 e.printStackTrace();  
  71.             } catch (IOException e) {  
  72.                 // TODO Auto-generated catch block  
  73.                 e.printStackTrace();  
  74.             }  
  75.   
  76.         }  
  77.   
  78.     }  
  79.   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值