【Hibernate】—Hibernate+mysql 環境搭建+入門例項

00潤物無聲00發表於2016-10-09

  一直從事SSH和SSM的專案開發,結合實戰,系統的對每一部分進行了一次系統的學習。下面來簡單介紹Hibernate+mysql的環境搭建和向資料庫中插入一條資料;


  Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。


一.環境搭建

1.建立java專案

2.建立User Libray,引入jar包

  建立User Libray來管理依賴的jar包,把所有要引入的jar包加入到User Libray中,然後把建立的User Libray引入到專案中;

  

  引入jar包到建立的User Libray中

  1.在Hibernate的原始碼檔案lib下的所有依賴包

  2.加入Hibernate的核心包hibernate3.jar

  3.Hibernate與資料庫操作,引入mysql的jar包

3.核心配置檔案hibernate.cfg.xml檔案,完成基本配置

  1.在Hibernate原始碼,etc檔案中找到hibernate.cfg.xml核心配置檔案,在後面的專案中根據需求進行修改內容。

  2.核心配置檔案中的內容,要去Hibernate原始碼,etc下面的hibernate.properties檔案中,查詢並根據專案需求進行配置。

  3.檔案放到src目錄

<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">fxq123</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- mysql資料庫 -->
		<property name="hibernate.show_sql">true</property><<span style="font-family: SimSun;">!-- 顯示sql語句 --></span>
		<property name="hibernate.format_sql">true</property>
		
	    <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/><span style="font-family: SimSun;"><!-- 引入Users實體和資料庫的對映檔案 --></span>

	</session-factory>
</hibernate-configuration>

4.log4j引入

  1.在Hibernate原始碼,etc檔案中找到log4j.properties核心配置檔案,根據需要對檔案進行簡單修改;

  2.檔案放到src目錄


二.例項

1.實體

package com.bjpowernode.hibernate;

import java.util.Date;

public class User {
	private String id;

	private String name;

	private String password;
	// 建立日期
	private Date createTime;
	// 失效日期
	private Date expireTime;

	public String getId() {
		return id;
	}

	public void setId(String 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 Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date dateCreatetime) {
		this.createTime = dateCreatetime;
	}

	public Date getExpireTime() {
		return expireTime;
	}

	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password
				+ ", createTime=" + createTime + ", expireTime=" + expireTime
				+ "]";
	}

}

2.建立實體和表的對映檔案User.hbm.xml檔案

  到Hibernate的原始碼hibernate-3.2\eg\org\hibernate\auction資料夾下,找 hbm.xml檔案作為模板,根據具體情況進行修改。

<?xml version="1.0"?>
<!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.bjpowernode.hibernate.User" >
<!-- 		主鍵生成策略 -->
		<id name="id">
			<generator class="uuid"></generator>
		</id>
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
		
	</class>

</hibernate-mapping>

3.根據實體和實體與表的對映檔案User.hbm.xml檔案,建立資料庫表

package com.bjpowernode.hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

//將hbm轉為ddl
//轉為資料庫
public class ExportDB {
	public static void main(String[] args) {

		// 預設讀取hibernate.cfg.xml檔案,使用預設名稱;
		// 建立配置物件
		Configuration cfg = new Configuration().configure();
		// 建立SchemaExport物件
		SchemaExport export = new SchemaExport(cfg);
		
		export.create(true, true);

	}
}

4.向資料庫中插入資料庫

package com.bjpowernode.hibernate;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 讀取Hibernate.cfg.xml 檔案
		Configuration cfg = new Configuration().configure();
		// 建立sessionFactory
		SessionFactory sessionFactory = cfg.buildSessionFactory();
		// 取得Session
		Session session = null;
		try {
			session = sessionFactory.openSession();
			// 開啟事務
			session.beginTransaction();
			User user = new User();
			user.setName("張三");
			user.setPassword("123");
			/*************** 向資料庫中插入日期型別-Start ***************************/
			String datestr = new Date().toString();
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
					"EEE MMM dd HH:mm:ss z yyyy", Locale.US);
			Date date = simpleDateFormat.parse(datestr);
			simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Date dateCreatetime = simpleDateFormat.parse(simpleDateFormat
					.format(date));
			Date dateExpireTime = simpleDateFormat.parse(simpleDateFormat
					.format(date));
			/*************** 向資料庫中插入日期型別-End ***************************/
			user.setCreateTime(dateCreatetime);
			user.setExpireTime(dateExpireTime);
			// 儲存User物件
			session.save(user);
			// 提交事務
			session.getTransaction().commit();

		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
			if (session != null) {
				if (session.isOpen()) {
					// 關閉session;
					session.close();
				}
			}
		}
	}
}

總結:

  搭建框架是基本內容,需要學會從原始碼中學習,學習結構,學習配置,掌握基礎知識。



相關文章