Hibernate基础配置(二)

7.表名和类名不同,对表名进行配置     

  用annotation时,实体类名和数据库表名不同时,可以用@Table(name="_teacher")注明 ,当映射到Teacher这个类时就会去找数据库中_teacher这个表

  用xml文件,<class name="Student" table="_student">用table指明表名

 

8.字段名和属性名相同

  默认@Basic,就是说字段上没写任何注解时,相当于加了@Basic这个注解

 

9.字段名和属性名不同

  用annotation时,用@Column(name="_name")指定对应的字段名

  在xml里面,用 <property name="name" column="column_name"></property>

 

10.不需要持久化的字段

  使用annotation时,用@Transient注明,这样就不会存到数据库表里面去了

  在xml里面就不用写进去了

 

11.时间和日期类型,指定时间精度

  在java类里面定义一个时间类型往往用Date类型,包括了日期和时间。在数据库表里,默认的会存为datetime类型,日期和时间都保存了。如果只想保存日期或者只想保存时间,可以使用注解@Temporal(TemporalType.DATE)。在数据库中,表示时间类型的数据有DATE, TIME, 和 TIMESTAMP三种精度(即单纯的日期,时间,或者两者兼备). 可使用@Temporal注解来调整精度。学习的时候可以通过查文档与实际操作结合。

  在xml中,写在property里面,用type="TIME"、type="DATE"、type="TIMESTAMP"。

Hibernate内置映射类型

Hibernate映射类型 Java类型 标准SQL类型 大小
integer/int java.lang.Integer/int INTEGER 4字节
long java.lang.Long/long BIGINT 8字节
short java.lang.Short/short SMALLINT 2字节
byte java.lang.Byte/byte TINYINT 1字节
float java.lang.Float/float FLOAT 4字节
double java.lang.Double/double DOUBLE 8字节
big_decimal java.math.BigDecimal NUMERIC  
character java.lang.Character/java.lang.String/char CHAR(1) 定长字符
string java.lang.String VARCHAR 变长字符
boolean/ yes_no/true_false java.lang.Boolean/Boolean BIT 布尔类型
date java.util.Date/java.sql.Date DATE 日期
timestamp java.util.Date/java.util.Timestamp TIMESTAMP 日期
calendar java.util.Calendar TIMESTAMP 日期
calendar_date java.util.Calendar DATE 日期
binary byte[] BLOB

BLOB
text java.lang.String TEXT CLOB
serializable 实现java.io.Serializablej接口的任意Java类 BLOB BLOB
clob java.sql.Clob CLOB CLOB
blob java.sql.Blob BLOB BLOB
class java.lang.Class VARCHAR 定长字符
locale java.util.Locale VARCHAR 定长字符
timezone java.util.TimeZone VARCHAR 定长字符
currency java.util.Currency VARCHAR 定长字符

在大多数情况下都没有必要指定类型,由hibernate自动默认帮我们实现就可以了。

12.映射枚举类型

  在annotation中用@Enumerated(EnumType.ORDINAL)存的是下标值或@Enumerated(EnumType.STRING)存的是字符串

  xml中使用比较麻烦

  

13.字段映射的位置

  有人放在field前面,也有人放在get方法前面,为了不破坏java的封装性,我们放在get方法前面。

保持field与get/set方法一致。

原文地址:https://www.cnblogs.com/ligui989/p/3450965.html