瞭解了上01中採取映射xml的方式,通過hibernate保存數據的方法
接下來進一步嘗試使用Annotation註解的方式來保存數據。
OK,需要加入JAR包:
建立Teacher.java類
/**
*
*/
package com.zeke.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author zhong
*
*/
@Entity
@Table(name="TEACHERS")
public class Teacher {
@Id
@Column(name="ID_")
private int id;
@Column(name="NAME_")
private String name;
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;
}
}
注意這裏使用了
@entity,實體類註解
@table , 定義表名的註解
@column, 定義字段名的註解
在hibernate.cfg.xml中添加映射,注意配置方式與xml有所不同。
<!-- 註解形式的映射關係配置 -->
<mapping class="com.zeke.model.Teacher" />
哪裏不同呢?
我們發現,xml mapping 中使用resource來指定。而註釋的方式是指定的class。
創建一個TeacherTest.java測試類,此處獲取configuration也是不一樣的
看代碼:
/**
*
*/
package com.zeke.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.zeke.model.Teacher;
/**
* @author zhong
*
*/
@SuppressWarnings("deprecation")
public class TeacherTest {
public static void main(String[] args) {
Teacher t = new Teacher();
t.setId(1);
t.setName("zeke");
Configuration cfg = new AnnotationConfiguration();
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();
//事務開始
session.beginTransaction();
session.save(t);
//提交事務
session.getTransaction().commit();
//關閉session
session.close();
sf.close();
}
}
看到了嗎,以下方式不一樣吧。
Configuration cfg = new AnnotationConfiguration();
Ok,測試完成!