Posted on 2009-11-02 14:57
瘋狂 閱讀(758)
評(píng)論(0) 編輯 收藏 所屬分類:
java 、
hibernate
hiberante sql映射對(duì)應(yīng)
Java數(shù)據(jù)類型 |
Hibernate數(shù)據(jù)類型 |
標(biāo)準(zhǔn)SQL數(shù)據(jù)類型
(PS:對(duì)于不同的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 |
一,針對(duì)大字段也就是 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 會(huì)被映射為 Clob. java.sql.Blob, Byte[], byte[] and serializable 會(huì)被映射為Blob.
當(dāng)然我們可以使用正對(duì)不同的數(shù)據(jù)庫(kù)使用數(shù)據(jù)庫(kù)原始類型例如 mysql:使用@Column (columnDefinition="longtext")(不推薦使用這種 防止有些數(shù)據(jù)庫(kù)的對(duì)clob和blob的不支持)
對(duì)blob也可以不進(jìn)行任何注釋但是在使用的時(shí)候會(huì)有預(yù)想不到的錯(cuò)誤 例如 mysql 他會(huì)映射為TINYBLOB 其容量為 256 字節(jié) 如果加上lob注釋 則映射為L(zhǎng)ONGBLOB 容量為4g,可想而知 相見(jiàn)我的利益篇文章:
http://ericjoe.javaeye.com/admin/blogs/443623
則可以映射為數(shù)據(jù)庫(kù)對(duì)應(yīng)的clob內(nèi)省或者blob內(nèi)型 例如(mysql:b longblob, c longtext);
存取的時(shí)候clob就可以按照string類型來(lái)處理 而blob可以以流的形式來(lái)處理 例如:
存的時(shí)候:
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>
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();