在Hibernate中使用Annotation的頻率要比XML高的多。
在XML的基礎上要添加如下jar包:
hibernate-annotations-3.4.0.GA/hibernate-annotations.jar
hibernate-annotations-3.4.0.GA/lib/ejb3-persistence.jar
hibernate-annotations-3.4.0.GA/lib/hibernate-commons-annotations.jar
一、不用再寫實體映射文件,而是直接把註解寫在實體Bean上,代碼如下:
package com.ycao.bean;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Teacher {
private int id;
private String name;
private String title; //職稱
@Id
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 String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
二、在hibernate.cfg.xml文件中由原來的
<!-- xml方式配置 -->
<mapping resource="com/ycao/bean/Student.hbm.xml"/>
換成如下寫法
<!-- annotation方式配置 -->
<mapping class="com.ycao.bean.Teacher"/>
三、測試文件中不再寫實例化普通的Configuration ,而是通過如下方式來實例化 Configuration cfg = new AnnotationConfiguration();
package com.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.ycao.bean.Student;
import com.ycao.bean.Teacher;
public class TestTeacher {
public static void main(String[] args) {
Teacher t = new Teacher();
t.setName("teacher");
t.setTitle("中級");
Configuration cfg = new AnnotationConfiguration();
SessionFactory sessionFactory = cfg.configure().buildSessionFactory(); //創建SessionFactory
Session session = sessionFactory.openSession(); //創建hibernate session
//所有的操作都要放在一個事務裏面
session.beginTransaction();
session.save(t);
session.getTransaction().commit(); //提交事務管理
session.clear();
sessionFactory.close();
}
}
四、截圖如下