上一篇講的是hibernate的環境搭建,因爲現在大部分公司在使用Annotation來操作實體類進而進行表的建立,免去了寫Xxx.hbm.xml表映射文件的煩惱,所以我再寫一個用Annotation來操作實體類的例子:
導包什麼的我就不說了,詳情看上一篇吧,直接切入主題:
1.首先說說什麼是註解(Annotation),這個學過Java基礎的人應該不陌生,這裏只說一下在hibernate框架裏如何使用。
@符號後面加一個名字就是Annotation
使用註解Annotation時用的jar包。 包括:
hibernate-commons-annotations-3.3.0.ga.jar //進行反射時需要的包
hibernate-entitymanager.jar
ejb3-persistence.jar //符合jpa標準的annotation的實現
hibernate-annotations.jar
jpa是一個標準,hibernate是一個實現
JDBC是一個標準,各個數據庫的驅動是實現
注意,3.5以後的hibernate已經包含了Annotation時用的jar包,所以上面的包都不需要再次添加!!
2.工程部分源碼的分享:
數據庫中創建teacher表
建立Teacher實體類(不用添加Annotation的jar包,因爲hb3.5以後的都加過了):
package cn.edu.hpu.model;
import javax.persistence.Entity;
import javax.persistence.Id;
//‘@+語句’就叫做註解
//@Entity表示這傢伙是個實體類(一個表中的對象)
@Entity
public class Teacher {
private String name;
private int id;
private String title;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//@Id告訴hibernate這個是主鍵
@Id
public int getId() {
return id;
}
//不加默認就是@Basic
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
在hibernate.cfg.xml中配置:
<mapping class="cn.edu.hpu.model.Teacher"/>
測試類
TeacherTest.java:
package cn.edu.hpu.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import cn.edu.hpu.model.Teacher;
public class TeacherTest {
public static void main(String[] args) {
Teacher t=new Teacher();
t.setId(2);
t.setName("t2");
t.setTitle("中級");
//AnnotationConfiguration是用來專門讀Annotation配置的
Configuration cfg=new AnnotationConfiguration();
//文件下的 <mapping resource=.....
SessionFactory sf=cfg.configure().buildSessionFactory();
//buildSessionFactory()可以理解爲能得到conn的類
//暫時把Session理解成數據庫的Connection
Session session=sf.openSession();//得到session
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();
}
}
運行TeacherTest.java後控制檯輸出:
Hibernate: insert into Teacher (name, title, id) values (?, ?, ?)
數據成功添加到數據庫中
轉載請註明出處!程序猿之洞:http://blog.csdn.net/acmman/