在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();
}
}
四、截图如下