zoukankan      html  css  js  c++  java
  • hibernate 大对象类型hibernate制图

    基础知识:

    • 在 Java 在, java.lang.String 它可以用来表示长串(超过长度 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据. 此外, 在 JDBC API 中还提供了 java.sql.Clob 和 java.sql.Blob 类型, 它们分别和标准 SQL 中的 CLOB 和 BLOB 类型相应. CLOB 表示字符串大对象(Character Large Object), BLOB表示二进制对象(Binary Large Object)

    • Mysql 不支持标准 SQL 的 CLOB 类型, 在 Mysql 中, 用 TEXT, MEDIUMTEXT 及 LONGTEXT 类型来表示长度操作 255 的长文本数据
    • 在持久化类中, 二进制大对象能够声明为 byte[] 或 java.sql.Blob 类型; 字符串能够声明为 java.lang.String 或 java.sql.Clob
    • 实际上在 Java 应用程序中处理长度超过 255 的字符串, 使用 java.lang.String 比 java.sql.Clob 更方便

    怎样映射?
    若希望精确映射sql类型,能够使用sql-type属性。比如:
    <!-- 映射大对象 -->
    <!-- 若希望精确映射 SQL 类型, 能够使用 sql-type 属性. -->
    <property name="content">
    <column name="CONTENT" sql-type="mediumtext"></column>
    </property>

    <property name="image">
    <column name="IMAGE" sql-type="mediumblob"></column>
    </property>

    保存二进制blob:
    	@Test
    	public void testBlob() throws Exception{
    		News news = new News();
    		news.setAuthor("cc");
    		news.setContent("CONTENT");
    		news.setDate(new Date());
    		news.setDesc("DESC");
    		news.setTitle("CC");
    		
    		InputStream stream = new FileInputStream("Hydrangeas.jpg");
    		Blob image = Hibernate.getLobCreator(session)
    				              .createBlob(stream, stream.available());
    		news.setImage(image);
    		
    		session.save(news);
    	}

    读取二进制blob:
    	@Test
    	public void testBlob() throws Exception{
    		News news = (News) session.get(News.class, 1);
    		Blob image = news.getImage();
    		
    		InputStream in = image.getBinaryStream();
    		System.out.println(in.available()); 
    	}




  • 相关阅读:
    [转]CSS实现三角形的方法
    border:none 与border:0的区别
    jQuery选择器总结
    [转]利用CSS、JavaScript及Ajax实现图片预加载的三大方法
    [转]Javascript实现图片的预加载的完整实现
    [转]Javascript实现图片的预加载
    [转]资源预加载
    [转]css,javascript的预加载
    [转]预加载资源研究
    [转]移动WEB开发常用技巧
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4566944.html
Copyright © 2011-2022 走看看