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