bean文件 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
bean文件
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 { }处理所有共同方法的service的实现
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();
}
}
产生session的实质方法
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(); } } } }