【6.1】大对象映射

本文介绍如何在POJO类中使用Clob和Blob类来存储XML文档及位图等大数据,并通过Hibernate框架映射到数据库。文章详细展示了在Java类中定义Blob和Clob字段的方法,以及在Hibernate配置文件中指定其类型的过程。
摘要由CSDN通过智能技术生成

1.在pojo类中 用Blob类和Clob

说明:CLOB和BLOB的区别【具体参考博文:http://blog.csdn.net/magister_feng/article/details/7825892

  CLOB使用CHAR来保存数据。 如:保存XML文档。

      BLOB就是使用二进制保存数据。 如:保存位图。

public class Student {
	private int id;
	private String name;
	private int age;
	//存放大数据  可以存放4G的内容
	private Blob image;
	private Clob introduce;
//省略get/set
	}

  

2.在hbm文件中 需指定对应类型

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.siggy.pojo">
	<class name="Student">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name"/>
		<property name="age"/>
		<property name="image" type="java.sql.Blob"/>
		<property name="introduce" type="java.sql.Clob"/>
	</class>
</hibernate-mapping>

  

3.测试

package cn.siggy.test;

import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;

import javax.sql.rowset.serial.SerialBlob;
import javax.sql.rowset.serial.SerialClob;
import javax.sql.rowset.serial.SerialException;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

import cn.siggy.pojo.Student;
import cn.siggy.util.HibernateUtil;

public class HibernateTest {
	@Test
	public void testCreateDB(){
		Configuration cfg = new Configuration().configure();
		SchemaExport se = new SchemaExport(cfg);
		//第一个参数 是否生成ddl脚本  第二个参数  是否执行到数据库中
		se.create(true, true);
	}
	@Test
	public void testSave() throws HibernateException, SerialException, SQLException{
		Session session = null;
		Transaction tx = null;
		try{
			session = HibernateUtil.getSession();
			tx = session.beginTransaction();
			Student stu = new Student();
			stu.setName("尹志平");
			stu.setAge(23);
			
			Blob blob = new SerialBlob("ttt".getBytes());
			Clob clob = new SerialClob("sss".toCharArray());
			stu.setImage(blob);
			stu.setIntroduce(clob);
			session.save(stu);
			
			tx.commit();
			
		}catch (HibernateException e) {
			if(tx!=null)
				tx.rollback();
			e.printStackTrace();
			throw e;
		}finally{
			HibernateUtil.closeSession();
		}
	}
}

  

4.测试结果

控制台信息:

 

数据库表信息:

 

转载于:https://www.cnblogs.com/chxbar/p/6675895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值