Bài viết được sự cho phép của tác giả Giang Phan
Khi tạo Entity trong Hibernate, chúng ta phải ánh xạ (mapping) các kiểu dữ liệu Java vào các kiểu dữ liệu trong database. Việc mapping này rất quan trọng, nó giúp Hibernate có thể chuyển đổi từ kiểu dữ liệu Java sang SQL và ngược lại một cách chính xác.
Trong bài này, tôi sẽ tổng hợp lại các kiểu dữ liệu tương ứng giữa Java, Hibernate và JDBC.
Các kiểu dữ liệu nguyên thủy
Mapping type | Java type | JDBC type | Hibernate type (org.hibernate.type package) |
integer | int hoặc java.lang.Integer | INTEGER | IntegerTypes |
long | long hoặc java.lang.Long | BIGINT | LongType |
short | short hoặc java.lang.Short | SMALLINT | ShortType |
float | float hoặc java.lang.Float | FLOAT | FloatType |
double | double hoặc java.lang.Double | DOUBLE | DoubleType |
big_decimal | java.math.BigDecimal | NUMERIC | BigDecimalType |
character | java.lang.String | CHAR(1) | CharacterType |
string | java.lang.String | VARCHAR | StringType |
byte | byte hoặc java.lang.Byte | TINYINT | ByteType |
boolean | boolean hoặc java.lang.Boolean | BIT | BooleanType |
yes/no | boolean hoặc java.lang.Boolean | CHAR(1) (‘Y’ hoặc ‘N’) | YesNoType |
true/false | boolean hoặc java.lang.Boolean | CHAR(1) (‘T’ hoặc ‘F’) | TrueFalseType |
Các kiểu Date Time
Mapping type | Java type | JDBC type | Hibernate type (org.hibernate.type package) |
date | java.util.Date hoặc java.sql.Date | DATE | DateType |
time | java.util.Date hoặc java.sql.Time | TIME | TimeType |
timestamp | java.util.Date hoặc java.sql.Timestamp | TIMESTAMP | TimestampType |
calendar | java.util.Calendar | TIMESTAMP | CalendarType |
calendar_date | java.util.Calendar | DATE | CalendarDateType |
calendar_time | java.util.Calendar | TIME | CalendarTimeType |
locale | java.util.Locale | VARCHAR | LocaleType |
Các kiểu Date Time trong Java 8
Mapping type | Java type | JDBC type | Hibernate type (org.hibernate.type package) |
Duration | java.time.Duration | BIGINT | DurationType |
Instant | java.time.Instant | TIMESTAMP | InstantType |
LocalDateTime | java.time.LocalDateTime | TIMESTAMP | LocalDateTimeType |
LocalDate | java.time.LocalDate | DATE | LocalDateType |
LocalTime | java.time.LocalTime | TIME | LocalTimeType |
OffsetDateTime | java.time.OffsetDateTime | TIMESTAMP | OffsetDateTimeType |
OffsetTime | java.time.OffsetTime | TIME | OffsetTimeType |
ZonedDateTime | java.time.ZonedDateTime | TIMESTAMP | ZonedDateTimeType |
Các kiểu Binary và đối tượng lớn
Mapping type | Java type | JDBC type | Hibernate type (org.hibernate.type package) |
binary | byte[] | VARBINARY (hoặc BLOB) | BinaryType |
text | java.lang.String | CLOB | ClobType |
serializable | any Java class that implements java.io.Serializable | VARBINARY (hoặc BLOB) | SerializableType |
clob | java.sql.Clob | CLOB | ClobType |
blob | java.sql.Blob | BLOB | BlobType |
Trên đây là một số mapping kiểu dữ liệu giữa Java, Hibernate và JDBC. Còn nhiều kiểu dữ liệu khác , các bạn tham khảo thêm ở link bên dưới.
Tài liệu tham khảo:
Bài viết gốc được đăng tải tại gpcoder.com
Có thể bạn quan tâm:
- Hibernate Batch processing
- Cho phép tùy chọn Giao diện trong Spring Web MVC framework
- Tạo database table tự động từ Hibernate Entity
Xem thêm Việc làm IT hấp dẫn trên TopDev