hibernate--对象类型
来源:互联网 发布:郁可唯 独家记忆 知乎 编辑:程序博客网 时间:2024/06/08 14:15
binary:字节数据
text/clob:文本数据类型
blob:二进制数据类型(音频/视频/图片等)
注:
(文本长度依次递增)
使用hibernate向数据库中添加一个blob(二进制)类型字段,并向其中添加blob类型数据:
在Students类中添加一个Blob类型属性picture:
private Blob picture; //照片
Students.hbm.xml中:
<property name="picture" type="java.sql.Blob"> <column name="picture"></column> </property>
在D盘根目录下存放一个照片:“1.jpg”
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.sql.Blob;import java.util.Date;import org.hibernate.Hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;//测试类public class StudentsTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init(){ //初始化 //创建配置对象 Configuration config=new Configuration().configure(); //创建服务注册对象 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //创建会话工厂对象 sessionFactory=config.buildSessionFactory(serviceRegistry); //会话对象,打开会话 session=sessionFactory.openSession(); //打开事务 transaction=session.beginTransaction(); } @After public void destory(){ //释放资源 //提交事务 transaction.commit(); //关闭会话 session.close(); //关闭会话工厂 sessionFactory.close(); } @Test public void testSaveStudents(){ //生成学生对象// Students s=new Students(1,"张三丰","男",new Date(),"武当山"); Students s=new Students();// s.setSid(1); //native:主键自动增长,无须赋值;若强制赋值无效果 s.setSname("张三丰"); s.setGender("男"); s.setBirthday(new Date()); s.setAddress("武当山"); //保存对象进入数据库 session.save(s); } @Test public void testWriteBlob() throws Exception{ //写入二进制数据 Students s=new Students(1,"张三丰","男",new Date(),"武当山"); //获得照片文件 File f=new File("d:"+File.separator+"1.jpg"); //获得照片文件的输入连 InputStream input=new FileInputStream(f); //字节流 //创建一个Blob对象 Blob image=Hibernate.getLobCreator(session).createBlob(input, input.available()); //session是会话对象。createBlob方法第一个参数表示从哪个输入流读取,第二个参数表示读取的长度(输入流可用的字节数)。 //设置照片属性 s.setPicture(image); //保存学生 session.save(s); } @Test public void testReadBlob() throws Exception{ //从数据库读取二进制数据,此时hibernate.cfg.xml中<property name="hbm2ddl.auto">update</property>一定设置为update,否则会清空表中原有数据 //加载一个学生对象 Students s=(Students)session.get(Students.class, 1); //第二个参数是标识符,即表中主键的数据 //获得Blob对象 Blob image=s.getPicture(); //获得照片的输入流 InputStream input=image.getBinaryStream(); //创建输出流,输出到一个文件上 File f=new File("d:"+File.separator+"dest.jpg"); //写到d盘根目录下 //获得输出流 OutputStream output=new FileOutputStream(f); //创建缓冲区,字节数组 byte[] buff=new byte[input.available()]; input.read(buff); //读到缓冲区内 output.write(buff); //写 input.close(); output.close(); }}
数据库中新增加一个字段及数据:
从数据库读取二进制数据到D盘中:
注:从数据库读取二进制数据,此时hibernate.cfg.xml中<property name="hbm2ddl.auto">update</property>
一定设置为update,否则会清空表中原有数据
0 0
- hibernate读写对象类型
- hibernate--对象类型
- hibernate 大对象类型的hibernate映射
- Hibernate映射类型、Java类型、标准SQL类型、Hibernate对象类型
- Java大对象类型的Hibernate映射
- Hibernate对象状态和基本映射类型
- Hibernate映射类型与映射对象标识符
- Hibernate中Blob对象类型的使用
- Hibernate进阶(3)对象类型
- [Hibernate单表操作] 对象类型
- hibernate 返回List<Map>, List<xxx>对象列表类型
- Hibernate单表操作(三)——对象类型
- Hibernate中四种对象状态,Session常用方法,映射类型
- Hibernate 类型映射 cascade取值 session 缓存 hibernate中对象的三态
- 【Hibernate】Hibernate 操作对象
- 对象类型
- 对象类型
- 处理Hibernate中Pojo对象String属性不能映射Sqlserver2005 text类型字段问题
- 值得推荐的C/C++框架和库
- 好玩的adb
- HBase Split分析
- 从零开始学习jQuery (六) AJAX快餐
- Codeforces Round #364 (Div. 2) D. As Fast As Possible 【二分+贪心+验证】
- hibernate--对象类型
- Service启动流程源码分析之startService(一)
- 从零开始学习jQuery (七) jQuery动画-让页面动起来!
- 查询,分页封装
- Linux虚拟内存
- Android Studio 解决 com.android.application 找不到
- #88 Lowest Common Ancestor
- 从零开始学习jQuery (八) 插播:jQuery实施方案
- SpringMVC4.0以后版本返回json格式数据问题