1.新建了一個Hibernate-Sample的Java Project, 然後本人在MyEclipse的window-->preferences-->java-->build path-->user libraries-->new 了一個Hibernate path,添加了Hibernate3.2的相應jar包,由於使用的數據庫是MySQL,我還順便添加了連接MySQL的jar包,這樣在以後做Hibernate的項目時,只需要引入我這個用戶自定義的library即可,不需要再逐一添加。
需引入的jar有:
以及:
2.先上一張該項目的完整包圖,之後再逐一解釋
3.首先創建一個hibernate.cfg.xml,代碼如下(我要連接的數據庫名稱叫hibernate-simple,注意要提前在MySQL中創建該數據庫):
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/hibernate_simple</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="com/codedestiny/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我們看到mapping resources連接到了一個實體配置文件,這將在後面講解,在這要注意的是路徑要以“ / ”分開,而不是“ . ”。
4.創建一個User類:
package com.codedestiny.hibernate;
import java.util.Date;
public class User {
private String id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
5.創建該類的hbm配置文件User.hbm.xml(注意設置主鍵,主鍵生成方式,以及其他屬性):
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.codedestiny.hibernate.User">
<id name="id">
<!-- 主鍵生成方式 -->
<generator class="uuid"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="createTime"></property>
<property name="expireTime"></property>
</class>
</hibernate-mapping>
(主鍵的生成方式還有多種,例如自增型:generate,設置屬性時可以通過column=" "修改其在數據庫中的相應字段,在<class>標籤中還可以通過table=" "來修改表名)
6.編寫一個ExportDB.java,通過運行它可以幫我們自動創建表:
package com.codedestiny.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
//讀取配置文件
Configuration cfg = new Configuration().configure();
//創建SchemaExport對象
SchemaExport se = new SchemaExport(cfg);
//創建數據庫表
se.create(true, true);
}
}
8.我編寫了一個AddUserTest.java來測試通過Hibernate向數據庫中插入一條數據:
package com.codedestiny.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class AddUserTest {
public static void main(String[] args) {
//讀取配置文件
Configuration cfg = new Configuration().configure();
//創建SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory();
//獲得Session
Session session = sessionFactory.openSession();
//開始事務
session.beginTransaction();
//操縱實體類,POJO
User u = new User();
u.setName("管理員");
u.setPassword("123");
u.setCreateTime(new Date());
u.setExpireTime(new Date());
//保存數據
session.save(u);
//提交事務
session.getTransaction().commit();
//關閉Session,必須關閉
if(session.isOpen()) {
session.close();
}
}
}
9.這樣一個簡單的Hibernate程序就完成了,沒有涉及到一句sql語句,而且業務邏輯一直是面向對象的方式,這就是Hibernate的強大之處