📅  最后修改于: 2023-12-03 15:15:31.678000             🧑  作者: Mango
在Hibernate中,映射类型(Mapping Type)是用来把Java中的数据类型映射到数据库中的数据类型的。Hibernate提供了许多内置的映射类型以适应不同的需求,同时也支持用户自定义映射类型。
以下是Hibernate中基本类型和对应的映射类型:
| Java 类型 | SQL 类型 | 映射类型 | | --- | --- | --- | | boolean | BIT | org.hibernate.type.BooleanType | | byte, Byte | TINYINT | org.hibernate.type.ByteType | | short, Short | SMALLINT | org.hibernate.type.ShortType | | int, Integer | INTEGER | org.hibernate.type.IntegerType | | long, Long | BIGINT | org.hibernate.type.LongType | | float, Float | FLOAT | org.hibernate.type.FloatType | | double, Double | DOUBLE | org.hibernate.type.DoubleType | | char, Character | CHAR | org.hibernate.type.CharacterType | | java.lang.String | VARCHAR | org.hibernate.type.StringType | | java.math.BigDecimal | NUMERIC | org.hibernate.type.BigDecimalType | | java.util.Date, java.sql.Date, java.sql.Time, java.sql.Timestamp | TIMESTAMP | org.hibernate.type.TimestampType, org.hibernate.type.DateType, org.hibernate.type.TimeType |
Hibernate 5.0+支持映射Java 1.5或更高版本中的枚举类型,以下是Hibernate中枚举类型和对应的映射类型:
| Java 类型 | SQL 类型 | 映射类型 | | --- | --- | --- | | java.lang.Enum | VARCHAR | org.hibernate.type.EnumType |
注意:Hibernate映射枚举类型时,需要用EnumType设置枚举类的类名,如:
@Entity
public class User {
@Enumerated(EnumType.STRING)
private Gender gender; // 枚举类型
// ...
}
Hibernate支持很多高级类型,如:
当Hibernate内置的映射类型不能满足需求时,可以自定义映射类型。自定义映射类型需要实现org.hibernate.usertype.UserType接口,通常需要实现以下方法:
自定义映射类型可以在实体类的映射文件中使用,如:
<property name="userTypeField" type="com.example.UserType" />
Hibernate的映射类型是将Java对象与数据库数据类型一一对应的重要组成部分。通过内置的映射类型,可以轻松地将Java对象传输到数据库中。当内置映射类型无法满足需求时,也可以通过自定义映射类型,实现将Java对象完美映射到数据库中。