<property name="title" COLUMN="TITLE" type="string" />
속성의 값은 string인데 자바 프로퍼티와 테이블 칼럼 사이의 매핑 타입이 'string'임을 명시한것.하이버네이트는 이 매핑값을 사용하여 칼럼과 프로퍼티 값 사이의 변환을 알맞게 처리.
자바 기본 데이터 타입을 위한 매핑 타입
매핑타입 | 자바 기본 데이타 타입 | SQL타입 | |
int | int | INTEGER | |
long | ong | BIGINT | |
short | short | SMALLINT | |
float | float | FLOAT | |
double | double | DOUBLE | |
big_decimal | java.math.BigDecimal | NUMERIC | |
character | java.lang.String | CHAR(1) | |
string | java.lang.String | VARCHAR | |
byte | byte | TINYINT | |
boolean | boolean | BIT | |
yes_no | boolean | CHAR(1) true일경우 'Y', false일경우 'N' | |
true_false | boolean | CHAR(1) true일 경우'T', false일 경우 'F' |
날짜와 시간을 위한 매핑 타입
매핑타입 | 자바 타입 | SQL 타입 |
date | java.util.Date / java.sql.Date | DATA |
time | java.util.Date / java.sql.Time | TIME |
timestamp | java.util.Date / java.sql.Timestamp | TIMESTAMP |
calendar | java.util.Calendar | TIMESTAMP |
calendar_date | java.util.Calendar | DATE |
대용량 데이터를 위한 매핑 타입
매핑타입 | 자바 타입 | SQL 타입 |
binary | byte[] | VARBINARY |
text | java.lang.String | CLOB |
clob | java.sql.Clob | CLOB |
blob | java.sql.Blob | BLOB |
serializable | java.io.Serializable 인터페이스를 구현한 자바 클래스 | VARBINARY |
용량이 큰 칼럼의 경우 java.sql.Clob, java.sql.Blob을 사용하여 필요할때만 로딩하도록 한다.
이들 LOB타입의 데이타를 위치를 가르치는 Locator이기 대문에 실제 값은 로딩되지 않는다.
Clob 타입이나 Blob타입은 실제 값에 접근할때에 값을 읽어오게 된다. But 트랜잭션 열려있는 동안에만 가능하다.
try {
HibernateUtil.beginTransaction();
..
// Transaction 범위 내에서만 LOB 타입 로딩 가능
Blob fileContent = article.getAttachment().getFileContent();
in = fileContent.getInputStream();
..
HibernateUtil.commitTracnsaction();
}
HibernateUtil.beginTransaction();
..
// Transaction 범위 내에서만 LOB 타입 로딩 가능
Blob fileContent = article.getAttachment().getFileContent();
in = fileContent.getInputStream();
..
HibernateUtil.commitTracnsaction();
}
LOB 타입의 프로퍼티에 값을 할때는 다음과 같이
Article article = new Article();
...
article.setContent( Hibernate.createClob(content));
...
article.setContent( Hibernate.createClob(content));
다음 메소드가 제공됨
static Blob |
createBlob(byte[] bytes)
Create a new Blob. |
static Blob |
createBlob(InputStream stream)
Create a new Blob. |
static Blob |
createBlob(InputStream stream,
int length)
Create a new Blob. |
static Clob |
createClob(Reader reader,
int length)
Create a new Clob. |
static Clob |
createClob(String string)
Create a new Clob. |