Hibernate入門經典實例


hibernate是開源的,用於封裝數據訪問層的組件,稱爲:數據訪問層框架(持久層框架)

寫一個入門案例,體現hibernate的工作方式!明白hibernate作用及其程序結構!

例子:用Hibernate實現增刪查改案例


環境:

IDE工具:Myeclipse ,mysql

所需jar包:

hibernate的jar:


mysql所需jar(程序用到mysql數據庫):

mysql-connector-java-5.1.6-bin.jar

步驟:

1.創建一個web項目

2.導入jar包

3.建數據庫和表文件

4.建hibernate和數據庫的關聯配置文件hibernate.cfg.xml

5.建立和數據庫關聯的POJO類User.java

6.建立數據庫和User.java關聯的配置文件User.hbm.xml

7.在hibernate.cfg.xml中關聯映射文件

8.寫測試類(TestHibernate)

項目最後截圖:


開始:

1.創建一個項目

還是截圖,創建的項目名稱爲HibernateSpExa

2.導入所需jar包

導入所需jar包到項目的lib文件夾下(或者通過Build Path導入也可,這裏需要hibernate和Mysql的jar包)


3.建數據庫和表文件

在WebRoot下面建立db.sql文件,在裏面建立下圖所示內容,並關聯Mysql運行建立數據庫和表


4.建hibernate和數據庫的關聯配置文件hibernate.cfg.xml

主要是配置連接數據庫:

<?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.url">
			jdbc:mysql://localhost:3306/test
		</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		
		<!-- hibernate配置 -->
		<!-- 方言配置,用於配置對哪個的SQL語句 -->
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<!-- 將Sql打印到控制檯,一般用於數據庫調優 -->
		<property name="show_sql">true</property>
		<!-- 打印出的SQL語句以縮進的形式打印出來 -->
		<property name="format_sql">true</property>
			
	</session-factory>

</hibernate-configuration>

5.建立和數據庫關聯的POJO類User.java

POJO類

package com.TodayMZ.hiber.po;

public class User {
	private Integer id;
	private String loginName;
	private String password;
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

6.建立數據庫和User.java關聯的配置文件User.hbm.xml

配置User.java與數據庫字段關聯的字段

<?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="com.TodayMZ.hiber.po.User" table="t_user">

		<id name="id" type="integer" column="t_id">
			<generator class="identity"></generator>
		</id>
		<property name="loginName" type="string" column="t_login_name">
		</property>
		<property name="password" type="string" column="t_password">
		</property>
		<property name="name" type="string" column="t_name">
		</property>
	</class>
</hibernate-mapping>

7.在hibernate.cfg.xml中關聯映射文件

(如圖配置文件)

<?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.url">
			jdbc:mysql://localhost:3306/test
		</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		
		<!-- hibernate配置 -->
		<!-- 方言配置,用於配置對哪個的SQL語句 -->
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<!-- 將Sql打印到控制檯,一般用於數據庫調優 -->
		<property name="show_sql">true</property>
		<!-- 打印出的SQL語句以縮進的形式打印出來 -->
		<property name="format_sql">true</property>
			
		<!-- 在配置文件中關聯映射文件 -->
		<mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />

	</session-factory>

</hibernate-configuration>

8.寫測試類(TestHibernate)

測試類主要用於測試hibernate的增刪查改功能!

hibernate封裝了SQL語句,只需要調用hibernate的API就可以實現增刪查改,比SQL語句簡便

增加save方法:

package com.TodayMZ.hiber.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.TodayMZ.hiber.po.User;

public class TestHibernate {
	@Test
    public void test1(){
    	User user=new User();
    	user.setLoginName("todayMZ");
    	user.setName("today");
    	user.setPassword("1234");
    	
    	Configuration conf=new Configuration();/*調用HibernateAPI,裝載Hibernate配置文件*/
    	conf.configure();/*裝載默認配置文件,所過指定則裝載conf.configure(new File("abc.xml"););*/
    	SessionFactory factory=conf.buildSessionFactory();/*創建SessionFactory*/
    	Session session=factory.openSession(); /*創建Session*/
    	
    	Transaction  tx=session.getTransaction();/*獲取事物*/
    	tx.begin(); /*開啓事物*/ 
    	
    	session.save(user);/*插入數據*/
    	   			
    	tx.commit(); /*提交事物*/
    	session.close();/*關閉事物*/	
    }
}

更改Update方法:

package com.TodayMZ.hiber.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.TodayMZ.hiber.po.User;

public class TestHibernate {
	@Test
    public void test1(){

		User user=new User();
		user.setId(1);
		user.setLoginName("todayMZ2");
		user.setName("today2");
		user.setPassword("12345");
		
    	Configuration conf=new Configuration();
    	conf.configure();
    	SessionFactory factory=conf.buildSessionFactory();
    	Session session=factory.openSession(); 
    	
    	Transaction  tx=session.getTransaction();
    	tx.begin(); 
    	   	
    	session.update(user);/*更改*/
   	   			
    	tx.commit(); 
    	session.close();	
    }
}

查詢Query方法:

package com.TodayMZ.hiber.test;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.TodayMZ.hiber.po.User;

public class TestHibernate {
	@Test
    public void test1(){
		
    	Configuration conf=new Configuration();
    	conf.configure();
    	SessionFactory factory=conf.buildSessionFactory();
    	Session session=factory.openSession();
    	
    	Transaction  tx=session.getTransaction();
    	tx.begin(); 
    	 //查詢語句  	
    	Query query=session.createQuery("from User");
    	List<User> userList=query.list();
    	for(User user :userList){
    		System.out.println(user.getId()+","+user.getLoginName()+","
    	+user.getName()+","+user.getPassword());		
    	}
    	 	   			
    	tx.commit(); 
    	session.close();
    }
}

刪除delete方法:

package com.TodayMZ.hiber.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.TodayMZ.hiber.po.User;

public class TestHibernate {
	@Test
    public void test1(){
		User user=new User();
		user.setId(1);
    	Configuration conf=new Configuration();
    	conf.configure();
    	SessionFactory factory=conf.buildSessionFactory();
    	Session session=factory.openSession();
    	
    	Transaction  tx=session.getTransaction();
    	tx.begin(); 
    	   	
    	session.delete(user);/*刪除*/
    	 	   			
    	tx.commit(); 
    	session.close();
    }
}
運行:

在Testhibernate類右鍵選擇Run As ---->JUnit Test,控制檯就會打印出當前執行的SQL語句和運行結果!

that's OK!

----------------------------------------我是分割線-------------------------------------------------

文章適合初學者,都是基礎知識(高手請繞道),給出了一個hibernate的執行基本結構。

給自己看,也給剛接觸的人兒看!


轉載請說明出處:http://blog.csdn.net/todaymz/article/details/8755401


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章