hibernate annoation (四 lob)
副标题#e#
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;
}
#p#副标题#e#
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();
读取:
#p#分页标题#e#
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();