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 + ]; } }
映射文件的书写
处理所有共同操作的基础dao接口 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 {}
处理所有共同操作的service的接口 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);}
处理图片的service的接口 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); }}
处理图片的service的实现 package tk.blank_hibernate.service.impl;import tk.blank_hibernate.service.imageservice;public class imageserviceimpl extends baseserviceimpl implements imageservice {}
单独产生session的接口 package tk.blank_hibernate.util;
import org.hibernate.session;
public interface ihibernateconnection {
public session getsessionobject();
}
单独产生session的实现类 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(); }}
配置hibernate与数据库连接的入口文件hibernate.cfg.xml com.mysql.jdbc.driver jdbc:mysql://localhost:3306/hiber_jd root admin org.hibernate.dialect.mysqldialect thread true false update
测试代码
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(); } } }}