Hibernate開發步驟
1.新創建工程並且導入相關的包
主要是hibernate、mysql相關的JAR包。
注意:新導入的hibernate相關的JAR包是否與你當前所使用的jdk版本是否兼容,且不要忘記導入數據庫的驅動JAR包。如5.2的hibernate需要jdk1.8才能編譯。

2.持久化類POJO的設計-------javabean與數據庫表相關聯的類。
public class UserInfo {
private int id;
private String name;
private String password;
private String role;
public UserInfo() {
}
public UserInfo(String name, String password, String role) {
super();
this.name = name;
this.password = password;
this.role = role;
}
public UserInfo(int id, String name, String password, String role) {
super();
this.id = id;
this.name = name;
this.password = password;
this.role = role;
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", name=" + name + ", password="
+ password + ", role=" + role + "]";
}
}
3.編寫*.hbm.xml映射文件-----主要是描述實體類與數據庫中表之間的映射關系。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="net.togogo.pojo.UserInfo" table="t_user"><!-- 指定數據庫中的表名 -->
<id name="id" type="java.lang.Integer">
<column name="id" />
<!-- 主鍵值生成方式 -->
<generator class="increment" />
</id>
<property name="name" type="java.lang.String"><!-- property對應與POJO中的屬性 -->
<column name="name" length="20" /> <!-- column對應與數據庫中表的屬性 -->
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
<property name="role" type="java.lang.String">
<column name="role" length="20" />
</property>
</class>
</hibernate-mapping>
4.編寫hibernate配置文件-------數據庫的連接信息和顯示底層sql語句。
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 數據庫連接方言信息 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 你所使用的數據庫驅動為:mysql -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 你所使用的數據庫名字為:hibernate_db -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/hibernate_db
</property>
<!-- 你所使用的數據庫賬號為:root -->
<property name="connection.username">root</property>
<!-- 你所使用的數據庫密碼為:root -->
<property name="connection.password">root</property>
<!-- 顯示底層的sql語句,開發階段設為true,項目發布階段設為false -->
<property name="show_sql">true</property>
<mapping resource="net/togogo/pojo/userinfo.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5.使用hibernate api操作數據庫.其中又包括如下幾步。
1)獲取 Configuration 對象。
2)獲取 SessionFactory 對象。
3)獲取 Session,打開事務。
4)用面向對象的方式操作數據庫。
5)關閉事務,關閉 Session。
public class HibernateUtils {
//往數據庫中插入數據信息。
public static void save(Object obj){
1)獲取 Configuration 對象。
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
2)獲取 SessionFactory 對象。
SessionFactory sessionFactory = config.buildSessionFactory();
3)獲取 Session
Session session = sessionFactory.openSession();
3)打開事務。
Transaction tx = session.beginTransaction();
4)用面向對象的方式操作數據庫。
session.save(obj);
5)關閉事務,關閉 Session。
tx.commit();
session.close();
}
public static void deleteById(int id){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
UserInfo userInfo = session.get(UserInfo.class, id);
session.delete(userInfo);
tx.commit();
session.close();
}
public static void update(Object obj){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.update(obj);
tx.commit();
session.close();
}
public static Object findObjById(Class c,Serializable id){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Object obj = session.get(c, id);
session.close();
return obj;
}
}
public class IDUQTest {
@Test
public void testSave(){
UserInfo userInfo = new UserInfo("lili","123","admin");
HibernateUtils.save(userInfo);
}
@Test
public void testDelete(){
HibernateUtils.deleteById(4);
}
@Test
public void testUpdate(){
UserInfo userInfo = (UserInfo) HibernateUtils.findObjById(UserInfo.class, 3);
userInfo.setPassword("123456");
HibernateUtils.update(userInfo);
}
}
Hibernate的運行過程如下:
1) 應用程序先調用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,並用這些信息生成一個SessionFactory對象
2) 從SessionFactory對象生成一個Session對象
3) 用Session對象生成Transaction對象
4) 可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對POJO類進行加載、保存、更新、刪除、等操作;
5) 在查詢的情況下,可通過Session對象生成一個Query對象,然後利用Query對象執行查詢操作;如果沒有異常,Transaction對象將提交這些操作到數據庫中。
//end