hibernate对大数据资源的处理操作

来源:互联网 发布:淘宝云标签考试 编辑:程序博客网 时间:2024/05/22 01:59
package tk.blank_hibernate.bean;

import java.io.Serializable;
import java.sql.Blob;


public class Image implements Serializable{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private Integer id;
    private Blob image;
    public Image() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Image(Integer id, Blob image) {
        super();
        this.id = id;
        this.image = image;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Blob getImage() {
        return image;
    }
    public void setImage(Blob image) {
        this.image = image;
    }
    @Override
    public String toString() {
        return "Image [id=" + id + ", image=" + image + "]";
    }
    

}


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="tk.blank_hibernate.bean">
    <class name="Image" table="image" catalog="hiber_jd">
        <!-- 映射符主键 -->
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="image" column="image" type="blob" />
    </class>
</hibernate-mapping>


package tk.blank_hibernate.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

public interface BaseDao {
    /**
     * 增加数据
     *
     * @param entity
     * @return
     */
    void saveObject(Object entity);

    /**
     * 删除数据
     *
     * @param entity
     */
    void deleteObject(Object entity);

    /**
     * 根据ID删除数据
     *
     * @param clazz
     * @param id
     */
    void deleteObject(Class clazz, Serializable id);

    /**
     * 更改数据
     *
     * @param entity
     */
    void updateObject(Object entity);

    /**
     * 根据ID查询数据
     *
     * @param clazz
     * @param id
     * @return
     */
    Object getObject(Class clazz, Serializable id);

    /**
     * 根据ID查询数据
     *
     * @param clazz
     * @param id
     * @return
     */
    Object loadObject(Class clazz, Serializable id);

    /**
     * 查询数据表的所有数据
     * @param clazz
     * @return
     */
    List getObjectAll(Class clazz);
    

}

package tk.blank_hibernate.dao;

public interface ImageDao extends BaseDao {

}


package tk.blank_hibernate.dao.impl;

import java.io.Serializable;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction;

import tk.blank_hibernate.bean.Goods;
import tk.blank_hibernate.dao.BaseDao;
import tk.blank_hibernate.util.BaseHibernateDaoImpl;

public class BaseDaoImpl extends BaseHibernateDaoImpl implements BaseDao {

    @Override
    public void saveObject(Object entity) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================saveObject");
        Session session = getSessionObject();
        Transaction transaction = session.beginTransaction();
        session.save(entity);
        transaction.commit();
    }

    @Override
    public void deleteObject(Object entity) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================deleteObject");
        Session session = getSessionObject();
        Transaction transaction = session.beginTransaction();
        session.delete(entity);
        transaction.commit();
    }

    @Override
    public void deleteObject(Class clazz, Serializable id) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================deleteObject");
        Session session = getSessionObject();
        Transaction transaction = session.beginTransaction();
        session.delete(getObject(clazz, id));
        transaction.commit();
    }

    @Override
    public void updateObject(Object entity) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================updateObject");
        Session session = getSessionObject();
        Transaction transaction = session.beginTransaction();
        session.update(entity);
        transaction.commit();
    }

    @Override
    public Object getObject(Class clazz, Serializable id) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================getObject");
        Session session = getSessionObject();
        Transaction transaction = session.beginTransaction();
        Object object= session.get(clazz, id);
        return object;
    }

    @Override
    public Object loadObject(Class clazz, Serializable id) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================loadObject");
        return null;
    }

    @Override
    public List getObjectAll(Class clazz) {
        System.out
                .println("开始执行BaseDaoImpl中的方法=======================getObjectAll");
        Transaction transaction = getSessionObject().beginTransaction();

        List list = getSessionObject().createQuery("from "+clazz.getName()).list();
        transaction.commit();
        return list;
    }



}

package tk.blank_hibernate.dao.impl;

import tk.blank_hibernate.dao.ImageDao;

public class ImageDaoImpl extends BaseDaoImpl implements ImageDao {

}

package tk.blank_hibernate.service;

import java.io.Serializable;
import java.util.List;

public interface BaseService {
    /**
     * 增加数据
     *
     * @param entity
     * @return
     */
    void saveObject(Object entity);

    /**
     * 删除数据
     *
     * @param entity
     */
    void deleteObject(Object entity);

    /**
     * 根据ID删除数据
     *
     * @param clazz
     * @param id
     */
    void deleteObject(Class clazz, Serializable id);

    /**
     * 更改数据
     *
     * @param entity
     */
    void updateObject(Object entity);

    /**
     * 根据ID查询数据
     *
     * @param clazz
     * @param id
     * @return
     */
    Object getObject(Class clazz, Serializable id);

    /**
     * 根据ID查询数据
     *
     * @param clazz
     * @param id
     * @return
     */
    Object loadObject(Class clazz, Serializable id);

    /**
     * 查询数据表的所有数据
     *
     * @param clazz
     * @return
     */
    List getObjectAll(Class clazz);
}


package tk.blank_hibernate.service;

public interface ImageService extends BaseService {

}


package tk.blank_hibernate.service.impl;

import java.io.Serializable;
import java.util.List;

import tk.blank_hibernate.dao.BaseDao;
import tk.blank_hibernate.dao.impl.BaseDaoImpl;
import tk.blank_hibernate.service.BaseService;

public class BaseServiceImpl  implements BaseService {

    BaseDao baseDao =new BaseDaoImpl();

    @Override
    public void saveObject(Object entity) {
        System.out.println("开始执行BaseServiceImpl中的方法==============saveObject");
        baseDao.saveObject(entity);
    }

    @Override
    public void deleteObject(Object entity) {
        System.out.println("开始执行BaseServiceImpl中的方法==============deleteObject");
        baseDao.deleteObject(entity);
    }

    @Override
    public void deleteObject(Class clazz, Serializable id) {
        System.out.println("开始执行BaseServiceImpl中的方法==============deleteObject");
        baseDao.deleteObject(clazz, id);
    }

    @Override
    public void updateObject(Object entity) {
        System.out.println("开始执行BaseServiceImpl中的方法==============updateObject");
        baseDao.updateObject(entity);
    }

    @Override
    public Object getObject(Class clazz, Serializable id) {
        System.out.println("开始执行BaseServiceImpl中的方法==============getObject");
        return baseDao.getObject(clazz, id);
    }

    @Override
    public Object loadObject(Class clazz, Serializable id) {
        System.out.println("开始执行BaseServiceImpl中的方法==============loadObject");
        return baseDao.loadObject(clazz, id);
    }

    @Override
    public List getObjectAll(Class clazz) {
        System.out.println("开始执行BaseServiceImpl中的方法==============getObjectAll");
        return baseDao.getObjectAll(clazz);
    }

}

package tk.blank_hibernate.service.impl;

import tk.blank_hibernate.service.ImageService;

public class ImageServiceImpl extends BaseServiceImpl implements ImageService {

}

package tk.blank_hibernate.util;

import org.hibernate.Session;

public interface IHibernateConnection {
    public Session getSessionObject();
}

package tk.blank_hibernate.util;

import org.hibernate.Session;

public class BaseHibernateDaoImpl implements IHibernateConnection {

    @Override
    public Session getSessionObject() {
         return HiberUtil.openSession();
    }

}

package tk.blank_hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HiberUtil {
    static Configuration cfg;
    static ServiceRegistry serviceRegistry;
    static SessionFactory sessionFactory;
    
    static{
        cfg=new Configuration().configure();
        serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
        sessionFactory =cfg.buildSessionFactory(serviceRegistry);
    }
    
    
    public static Session openSession(){
        //返回当前的session的连接对象
        return sessionFactory.getCurrentSession();
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="connection.driver_class">
        com.mysql.jdbc.Driver
    </property>
    <property name="connection.url">
        jdbc:mysql://localhost:3306/hiber_jd
    </property>
    <property name="connection.username">root</property>
    <property name="connection.password">admin</property>
    <!-- 数据库的方言 -->
    <property name="hibernate.dialect">
        org.hibernate.dialect.MySQLDialect
    </property>
    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- 显示操作的sql语句 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 格式sql语句 -->
    <property name="hibernate.format_sql">false</property>
    <!-- 自动创建和更新表结构 -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <mapping resource="tk/blank_hibernate/bean/Image.hbm.xml" />
</session-factory>
</hibernate-configuration>

package tk.blank_hibernate.junit;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.SQLException;

import org.hibernate.Hibernate;
import org.junit.Test;

import tk.blank_hibernate.bean.Image;
import tk.blank_hibernate.service.ImageService;
import tk.blank_hibernate.service.impl.ImageServiceImpl;
import tk.blank_hibernate.util.HiberUtil;

public class ImageTest {

    // 创建ImageService处理对象
    ImageService imageService = new ImageServiceImpl();

    @Test
    public void save() {
        // 创建img对象
        Image image = new Image();
        // 读取文件
        File file = new File("F:\\webprogect\\hibernate_jd\\src\\ni.jpg");
        try {
            // 创建文件的输入流,将文件加载到流中
            FileInputStream fis = new FileInputStream(file);
            // 创建blob大数据对象|||||在4之后要用这样的方式获取
            Blob blob = Hibernate.getLobCreator(HiberUtil.openSession())
                    .createBlob(fis, file.length());

            //将大数据存储到
            image.setImage(blob);
            imageService.saveObject(image);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void getImage() throws SQLException {
        Image image = (Image) imageService.getObject(Image.class, 1);

        // 判断得到得数据是否为空
        if (image != null) {
            InputStream is = image.getImage().getBinaryStream();
            File file = new File("D:\\a.jpg");
            try {
                FileOutputStream fos = new FileOutputStream(file);
                byte buffer[] = new byte[1024];

                int len = 0;
                while ((len = is.read(buffer)) != -1) {
                    fos.write(buffer, 0, len);
                }
                fos.close();
                is.close();

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

}




0 0
原创粉丝点击