字段名和属性名相同
Annotation:默认为@Basic
注意:如果在成员属性没有加入任何注解,则默认在前面加入了@Basic
Xml中不用写column
字段名和属性名不同
Annotation:使用@Column(name=”columnName”)进行注解
例如:
* @Entity 表示下面的这个Teacher是一个实体类 * @Table 表示映射到数据表中的表名,其中的name参数表示"表名称" * @Column 表示实体类成员属性映射数据表中的字段名,其中name参数指定一个新的字段名 * @Id 表示主键Id */ @Entity @Table(name="_teacher") public class Teacher { private int id; private String name; private String title; //设置主键使用@Id @Id public int getId() { return id; } @Column(name="_name")//字段名与属性不同时 public String getName() { return name; } ……
Xml:
- <property name="name" column="_name"/>
不需要(持久化)psersistence的字段
就是不实体类的某个成员属性不需要存入数据库中
Annotation:使用@Transient 进行注解就可以了。
例如:
@Transient public String getTitle() { return title; }
Xml:不写(就是不需要对这个成员属性进行映射)
映射日期与时间类型,指定时间精度
Annotation:使用@Temporal(value=TemporalType)来注解表示日期和时间的注解
其中TemporalType有三个值:TemporalType.TIMESTAMP 表示yyyy-MM-dd HH:mm:ss
TemporalType.DATE
表示yyyy-MM-dd
TemporalType.TIME
表示HH:mm:ss
@Temporal(value=TemporalType.DATE) public Date getBirthDate() { return birthDate; }
注意:当使用注解时,属性为value时,则这个属性名可以省略,例如:@Temporal(TemporalType)
Xml:使用type属性指定hibernate类型
<property name="birthDate" type="date"/>
注意:hibernate日期时间类型有:date, time, timestamp,当然您也可以使用Java包装类
映射枚举类型
Annotation:使用@Enumerated(value=EnumType)来注解表示此成员属性为枚举映射到数据库
其中EnumType有二个值:①EnumType.STRING 表示直接将枚举名称存入数据库
②EnumType.ORDINAL 表示将枚举所对应的数值存入数据库
Xml:映射非常的麻烦,先要定义自定义类型,然后再使用这个定义的类型……
http://blog.sina.com.cn/s/blog_4979ec3e01016y0o.html