hibernate:hibernate annoation ( 4 lob)



  hiberante sql映射对应

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

  (PS:对于区别DB可能有所差异)
、java.lang.Byte TINYINT
、java.lang.Short SMALLINT
、java.lang.Integer eger 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 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
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 VARCHAR
java.util.Locale locale VARCHAR
java.util.TimeZone timezone VARCHAR
java.util.Currency currency VARCHAR



  针对大字段也就是 colbblob

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

 @Lob 
 public String getC { 
  c; 
 } 
 @Lob 
 public  getB { 
  b; 
 }


  java.sql.Clob, Character, char and java.lang.String 会被映射为 Clob. java.sql.Blob, 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就可以按照类型来处理 而blob可以以流形式来处理 例如:

  存时候:

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


  读取:

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


Tags:  hibernate查询 springhibernate hibernateapi hibernate

延伸阅读

最新评论

发表评论