Hibernate對mysql資料庫的操作
阿新 • • 發佈:2018-12-16
hibernate相對於mybatis來說,他是一個重量級的框架,可能比mybatis更加讓人不能夠理解一點,但是如果你從開始首先接觸hibernate,那麼由深到淺就容易得多了。
用到hibernate,首先我們需要匯入hibernate所需要的jar包,或者用myeclise可以使用自帶的jar包也能完成基本的功能,
連線資料庫,首先我們需要在資料庫中新建一個表,如下圖的user表所示:
在表中新增一些欄位,對於hibernate來說,我們做的最難的工作就是需要寫一個xml的對映檔案,將資料庫中的資料與實體類的表中的資料對應起來,下面放一下實體的user類的變數等:
package com.user.model; import java.io.Serializable; import org.springframework.stereotype.Component; @Component("user") public class User implements Serializable { private int id; private String username; private String email; private String password; private String number; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", email=" + email + ", password=" + password + ", number=" + number + "]"; } }
對映檔案:User.cfg.xml:這裡的name是User類中的屬性,colunm是資料庫中的欄位,注意要在對映之前加上類的全路徑名和資料庫中的表名
<?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> <!-- 定義User類的對映檔案 --> <!-- 將類對映到表 catalog指的是資料庫的名字 --> <class name="com.user.model.User" table="users" > <!-- id用於對應主鍵的關係 --> <id name="id" type="int" > <column name="user_id" /> </id> <property name="username" type="java.lang.String" column="user_name" ></property> <property name="email" type="java.lang.String" column="user_email" ></property> <property name="password" type="java.lang.String" column="user_pass" ></property> <property name="number" type="java.lang.String" column="user_number" ></property> </class> </hibernate-mapping>
其實到這裡我們還以一個很重要的步驟沒有去做,那就是怎麼確定資料庫的連線,配置資料庫的連線資訊,這裡就需要用到一個叫做hiberate.cfg.xml的配置檔案,配置資料庫的連線使用者名稱、密碼等資訊,這裡最重要的就是mapping中的resourse指的就是自己上文提到的User.cfg.xml的路徑,這一點就是將其新增到對映檔案中最為重要的一步,再加一句,hibernate.cfg.xml中的資訊需要按照自己mysql的配置進行更改,你的使用者名稱密碼 ,以及對資料庫表的操作,資料庫名等等,具體仔細研讀下面程式碼,
<?xml version='1.0' encoding='utf-8'?> <!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="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">a12345</property> <!-- SQL dialect --> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> //這裡很重要 <!-- 載入對映檔案 多個對映檔案時候用*.hbm.xml標識 --> <mapping resource="Model/User.hbm.xml"/> </session-factory> </hibernate-configuration>
到了這裡,我們已經完成80%的功能;
我們新建一個java類來測試我們的功能
public class Main{
public stati void main(String[] args){
//讀取配置檔案
Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
//建立session工廠
SessionFactory factory =cfg.buildSessionFactory();
//開啟session
Session session=factory.openSession();
//開始事務
Transaction tr=session.beginTransaction();
//此時我們就可以對資料庫中的資料進行增刪改查了
User user =new User();
user.setName("hejing");
session.save(user); //儲存
user.setId("111");
session.update(user); //修改
session。delete(user); //刪除
tr.commit(); //提交
//在提交之前記得儲存
//然後關閉 session 以及 sessionFactory
}
}
到這裡,就大功告成了,如果大家還有什麼不懂的地方,歡迎討論,共同進步。