程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> hibernate annoation (四 lob)

hibernate annoation (四 lob)

編輯:關於JAVA

hiberante sql映射對應

Java數據類型 Hibernate數據類型 標准SQL數據類型

(PS:對於不同的DB可能有所差異)

byte、java.lang.Byte byte TINYINT short、java.lang.Short short SMALLINT int、java.lang.Integer integer INGEGER long、java.lang.Long long BIGINT float、java.lang.Float float FLOAT double、java.lang.Double double DOUBLE java.math.BigDecimal big_decimal NUMERIC char、java.lang.Character character CHAR(1) boolean、java.lang.Boolean boolean BIT java.lang.String string VARCHAR boolean、java.lang.Boolean yes_no CHAR(1)('Y'或'N') boolean、java.lang.Boolean true_false CHAR(1)('Y'或'N') java.util.Date、java.sql.Date date DATE java.util.Date、java.sql.Time time TIME java.util.Date、java.sql.Timestamp timestamp TIMESTAMP java.util.Calendar calendar TIMESTAMP java.util.Calendar calendar_date DATE byte[] binary VARBINARY、BLOB java.lang.String text CLOB java.io.Serializable serializable VARBINARY、BLOB java.sql.Clob clob CLOB java.sql.Blob blob BLOB java.lang.Class class VARCHAR java.util.Locale locale VARCHAR java.util.TimeZone timezone VARCHAR java.util.Currency currency VARCHAR

一,針對大字段也就是 colb,blob

在hibernate annoation裡面可以如下使用:

 @Lob 
 public String getC() {
 return c;
 } 
 @Lob 
 public byte[] getB() {
 return b;
 }

java.sql.Clob, Character[], char[] and java.lang.String 會被映射為 Clob. java.sql.Blob, Byte[], byte[] and serializable 會被映射為Blob.

當然我們可以使用正對不同的數據庫使用數據庫原始類型例如 mysql:使用@Column   (columnDefinition="longtext")(不推薦使用這種 防止有些數據庫的對clob和blob的不支持)

對blob也可以不進行任何注釋但是在使用的時候會有預想不到的錯誤 例如 mysql 他會映射為TINYBLOB 其容量為 256 字節  如果加上lob注釋 則映射為LONGBLOB 容量為4g,可想而知 相見我的利益篇文章:

http://ericjoe.javaeye.com/admin/blogs/443623

則可以映射為數據庫對應的clob內省或者blob內型 例如(mysql:b longblob, c longtext);

存取的時候clob就可以按照string類型來處理 而blob可以以流的形式來處理 例如:

存的時候:

BufferedInputStream in = new BufferedInputStream(new FileInputStream(
  new File("d:\\19204.jpg")));
 byte[] b = new byte[in.available()];
 in.read(b);
bean.setB(b);
in.close();

讀取:

Session session = HibernateSessionFactory.getSession();
 User user = (User)session.get(User.class, 1);
 byte[] b = user.getB();
 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(
  new File("d:\\192041.jpg")));
 out.write(b);
 out.close();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved