用hibernate存入和写出Blob、Clob(二)

2014-11-24 03:26:40 · 作者: · 浏览: 1
; } catch (Exception e) { ts.rollback(); } } @Override public Object loadObjectById(Class clazz, Serializable id) { return null; } @Override public Object getObjectById(Class clazz, Serializable id) { Object obj = null; Session session = getSessionObject(); Transaction ts = session.beginTransaction(); try { obj = session.get(clazz, id); ts.commit(); } catch (Exception e) { ts.rollback(); } return obj; } @Override public List getObjects(Class clazz) { List list = new ArrayList(); Session session = getSessionObject(); Transaction ts = session.beginTransaction(); try { list = session.createQuery("from "+clazz.getName()).list(); ts.commit(); } catch (Exception e) { ts.rollback(); } return list; } }
HiberUtil.java

package www.csdn.net.blank.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{
		//创建Configuration对象  调用.configure()方法 ,默认class/hibernate.cfg.xml
		cfg = new Configuration().configure();
		
		//创建服务对象
		serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
		
		//创建sessionFactory工厂
		sessionFactory = cfg.buildSessionFactory(serviceRegistry);
	}
	
	
	/**
	 * 获取session对象
	 * @return
	 */
	public static Session openSession(){
		return sessionFactory.getCurrentSession();
	}
	
}

hibernate.cfg.xml

  


  

    
     
    
      com.
     mysql.jdbc.Driver 
     
     
    
      jdbc:mysql://localhost:3306/hiber3 useUincode=true&characterEncoding=UTF-8 
     
     
    
     root
     
     
    
     root
     
     
    
      org.hibernate.dialect.MySQLDialect 
     
     
    
     thread
     
     
    
     true
     
     
    
     false
     
     
    
     update
     
     
     
   


  

PersonTest.java

package www.csdn.net.blank.junit;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;

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

import www.csdn.net.blank.bean.Person;
import www.csdn.net.blank.dao.BaseDao;
import www.csdn.net.blank.dao.impl.BaseDaoImpl;
import www.csdn.net.blank.util.HiberUtil;

public class PersonTest {
	private BaseDao baseDao = new BaseDaoImpl();

	@Test
	public void save() throws Exception {
		Person person = new Person();
		File file = new File("F:\\资料\\Pictures\\人物 (2)\\200.jpg");

		FileInputStream fis = new FileInputStream(file);

		File file1 = new File(
				"D:\\闫梅\\csdn\\hibernate课程\\代码\\hiber7=1\\src\\自定义标签.txt");

		Reader reader = new FileReader(file1);
		//第一种方法: 针对 session 是通过sessionFactory.getCurrentSession(); 处理操作
		person.setImage(Hibernate.getLobCreator(HiberUtil.openSession())
				.createBlob(fis, file.length()));
		person.setIntro(Hibernate.getLobCreator(HiberUtil.openSession())
				.createClob(reader, file1.length()));
		//第二种方法:必须开启事务 
		   /*Session session = HiberUtil.openSession();
			//Transaction ts = ses