JAVAEE中Hibernate入門鏈接數據庫

簡單來講,Hibernate主要是一個ORM框架,也能夠說是一種規範。這種規範描述了面向對象編程到關係型數據庫的映射。java

也就是說,Hibernate框架會將你建立的POJO類(傳統普通類)轉換映射到關係數據庫中。mysql

這裏再也不解釋理論相關,直接瞭解Hibernate的基礎實現方法。sql

首先,你須要一個Hibernate的包,裏面封裝裏Hibernate框架裏的全部方法。數據庫

能夠到官網下載這個包————http://hibernate.org/orm/downloads編程

將下載的包解壓,獲得一個hibernate-release-4.3.8.Final的文件夾,其lib目錄下required和jpa子目錄下的包添加到應用加載路徑中,即可以使用Hibernate的功能了。session

同時,你還須要一個數據庫驅動的JAR包。以下app


其中,ojdbc爲orecle的加載驅動,sqljdbc爲Mysql和sqlserver的加載驅動框架

作完以上這些,你須要配置Hibernate,須要一個配置文件和一個映射文件函數

1.hibernate.cfg.xmlsqlserver


如下爲源碼:<!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>
<!-- 配置訪問數據庫參數信息 -->
<!-- 數據庫分類信息,這裏爲MySQL數據庫 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 數據庫驅動信息 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 數據庫地址信息 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/liuweitong
</property>
<!-- 數據庫用戶名信息 -->
<property name="connection.username">root</property>
<!-- 數據庫密碼信息 -->
<property name="connection.password">123456</property>
<!-- 在控制檯輸出SQL語句 -->
<property name="shwo_sql">true</property>
<!-- 實時更新數據庫 -->
<property name="hbm2ddl.auto">update</property>
<!-- 加載映射文件 -->
<mapping resource="com/ph05/User.hbm.xml"/>
</session-factory>

</hibernate-configuration>

2.hibernate映射文件(其中User爲(POJO)類名)建立在src根目錄下面


如下爲源碼:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name = "com.ph05.User" table = "USERS">
<!-- 主鍵設置 -->
<id name = "id" column = "ID">
<generator class = "native"/>
</id>
<!-- 用戶名映射 -->
<property name = "username" column = "USERNAME" type = "string" not-null = "true"/>
<!-- 密碼映射 -->
<property name = "password" column = "PASSWORD" type = "string" not-null = "true"/>
<!-- 權限映射 -->
<property name = "role" column = "ROLE" type = "int" not-null = "true"/>
</class>


</hibernate-mapping>

接下來就是編寫PO(PO爲POJO+映射文件,這兩個文件必須在同一個包裏面),映射文件已經寫好了,而後就是寫一個POJO類


該POJO含有一個無參的構造函數和一個帶參數的構造函數和Getter和Setter方法


如下爲源碼:

package com.ph05;
import java.io.Serializable;


public class User implements Serializable {
private int id;
private String username;
private String password;
private int role;
public User(){}
public User(String username,String password,int role){
this.username = username;
this.password = password;
this.role = role;
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}



}

最後即可以使用任何一個類的Main方法調用,並鏈接數據庫。


下面是源碼:

package com.ph05.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import com.ph05.User;
public class Test {
public static void main(String[] args){
//建立User對象
User user = new User("admin","123",1);
//實例化Configuration
Configuration configuration = new Configuration();
//加載Hibernate.cfg.xml文件
configuration.configure("/Hibernate.cfg.xml");
//建立SessionFactory
//Hibernate4.3建立SessionFactory的方式
StandardServiceRegistryBuilder standardServiceRegistryBuilder=
new StandardServiceRegistryBuilder();
standardServiceRegistryBuilder.applySettings(configuration.getProperties());
SessionFactory sessionfactory = configuration.buildSessionFactory(standardServiceRegistryBuilder.build());
//打開Session
Session session =sessionfactory.openSession();
//開始一個事物
Transaction trans = session.beginTransaction();
//持久化操做
session.save(user);
//提交事務
trans.commit();
//關閉Session
session.close();
}

}

補充一下,USER表經過上述代碼,會在數據庫中自動建立,可是會自動建立爲user表,不區分大小寫。

這裏作好hibernate的記錄,已作備忘。