WEB开发网
开发学院软件开发Java hibernate annoation (四 lob) 阅读

hibernate annoation (四 lob)

 2009-09-18 00:00:00 来源:WEB开发网   
核心提示:hiberante sql映射对应Java数据类型Hibernate数据类型标准SQL数据类型(PS:对于不同的DB可能有所差异)byte、java.lang.BytebyteTINYINTshort、java.lang.ShortshortSMALLINTint、java.lang.IntegerintegerING

hiberante sql映射对应

Java数据类型Hibernate数据类型标准SQL数据类型

(PS:对于不同的DB可能有所差异)

byte、java.lang.BytebyteTINYINT
short、java.lang.ShortshortSMALLINT
int、java.lang.IntegerintegerINGEGER
long、java.lang.LonglongBIGINT
float、java.lang.FloatfloatFLOAT
double、java.lang.DoubledoubleDOUBLE
java.math.BigDecimalbig_decimalNUMERIC
char、java.lang.CharactercharacterCHAR(1)
boolean、java.lang.BooleanbooleanBIT
java.lang.StringstringVARCHAR
boolean、java.lang.Booleanyes_noCHAR(1)('Y'或'N')
boolean、java.lang.Booleantrue_falseCHAR(1)('Y'或'N')
java.util.Date、java.sql.DatedateDATE
java.util.Date、java.sql.TimetimeTIME
java.util.Date、java.sql.TimestamptimestampTIMESTAMP
java.util.CalendarcalendarTIMESTAMP
java.util.Calendarcalendar_dateDATE
byte[]binaryVARBINARY、BLOB
java.lang.StringtextCLOB
java.io.SerializableserializableVARBINARY、BLOB
java.sql.ClobclobCLOB
java.sql.BlobblobBLOB
java.lang.ClassclassVARCHAR
java.util.LocalelocaleVARCHAR
java.util.TimeZonetimezoneVARCHAR
java.util.CurrencycurrencyVARCHAR

一,针对大字段也就是 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();

Tags:hibernate annoation lob

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接