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.
Nội dung
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: