通过XML配置来实现持久化:
首先我们来建立一个实体类:
package com.hibernate.model;
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.model">
<class name="Student" table="t_student">
<id name="id" column="s_id">
<generator class="native" />
</id>
<property name="age" /> <!-- 若字段属性值与数据库字段相同可不写 -->
<property name="name" />
</class>
</hibernate-mapping>
XML文件中的id用于指明哪个column字段是数据库表t_student中的主键,property中的column属性用于指明类属性名对应数据库表的哪个字段,如果属性名和字段名一直,该column可以省略,如上中的age和name属性。
至此,只要将该XML文件加入Hibernate的hibernate.cfg.xml中就可以: hibernate.cfg.xml中代码如下
<mapping resource="com/hibernate/model/Student.hbm.xml" /> <!-- XML文件的方式 -->
通过Annotation注解来实现持久化:
首先同样我们来建立一个持久类
package com.hibernate.model;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
* 注意注解一点要写在get()方法上,写在Field中有点违反面向对象编程,因为Hibernate会访问限定符为private的该属性
* @author Administrator
*
*/
@Entity
@Table(name="t_teacher")
public class Teacher { //类名必须和数据库的表明一致
private int id;
private String addr;
private String sex;
private String youwifename;
private Zhicheng _zhicheng; //枚举类型
public enum Zhicheng{A,B,C} //实现枚举类型
@Enumerated(EnumType.STRING)
public Zhicheng get_zhicheng() {
return _zhicheng;
}
public void set_zhicheng(Zhicheng _zhicheng) {
this._zhicheng = _zhicheng;
}
@Transient //标注为透明,表示数据库中将不建立该字段
public String getYouwifename() {
return youwifename;
}
public void setYouwifename(String youwifename) {
this.youwifename = youwifename;
}
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
OK!注解实现持久化很简单吧。接下来只要将注解的类加入hibernate.cfg.xml中:
<mapping class="com.hibernate.model.Teacher"/> <!--注解的方式 -->
接下来说一下注解的详细情况:
@Entity 表示该类将使用注解来实现持久化
@Table(name="t_teacher") 当类名和表名不一致时使用该注解,可以实现Teacher对应数据库表t_teacher
@Transient 标注为透明,表示数据库中将不建立该字段
@Enumerated(EnumType.STRING) 表明该字段是枚举类型
总结:明显使用Annotation来实现持久化更加简单,现在企业中在Hibernate一般都使用Annotation,而很少使用XML。
来源:oschina
链接:https://my.oschina.net/u/2298764/blog/524141