1. 程式人生 > >新手上路之Hibernate:第一個Hibernate例子

新手上路之Hibernate:第一個Hibernate例子

一、Hibernate概述

(一)什麼是Hibernate?

           Hibernate核心內容是ORM(關係物件模型)。可以將物件自動的生成資料庫中的資訊,使得開發更加的面向物件。這樣作為程式設計師就可以使用面向物件的思想來操作資料庫,而不用關心繁瑣的JDBC。所以,Hibernate處於三層架構中的D層(持久層)。

(二)使用Hibernate的優點

1、Hibernate可以使用在java的任何專案中,不一定非要使用在java web專案中。因為Hibernate不需要類似於tomact這些容器的支援,可以直接通過一個main方法進行測試。

2、通過下面的例項,可以發現使用Hibernate可以大大減少程式碼量。

3、由於使用了Hibernate,程式碼中不涉及具體的JDBC語句,所以就方便了程式碼的可移植性。

二、Hibernate開發的環境搭建

(一)Hibernate的環境搭建非常簡單,只需要引入Hibernate核心包(單擊下載)以及Hibernate依賴包(單擊下載)即可。 (二)加入資料庫驅動。下面的例子中主要是採用Mysql資料庫來演示的,所以在這裡引入MysqL的JDBC驅動(點選下載)。 (三)提供核心配置檔案hibernate.cfg.xml檔案(在src資料夾下即可)。其中的配置如下(針對mysql)
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory >
		<!-- mysql資料庫驅動 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- mysql資料庫名稱 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<!-- 資料庫的登陸使用者名稱 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 資料庫的登陸密碼 -->
		<property name="hibernate.connection.password">root</property>
		<!-- 方言:為每一種資料庫提供介面卡,方便轉換 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
	</session-factory>
</hibernate-configuration>

三、HIbernate第一個例項

該例項的目錄結構如下 說明:最後一個HIBERNATE3裡面包含了所有的需要引用的jar包 1、新建一個普通的java專案,按照上面的步驟引入相關的jar包和配置檔案 2、建立User實體類
import java.util.Date;

public class User {
	private String id;
	private String username;
	private String password;
	private Date createTime;
	private Date expireTime;
	
	public String getId() {
		return id;
	}
	public void setId(String 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 Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public Date getExpireTime() {
		return expireTime;
	}
	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}
}

2、提供User.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.example.hibernate.User">
		<id name="id">
			<generator class="uuid"/>
		</id>
		<property name="username"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>
其中的property標籤是將要生成是資料庫表中的欄位,在這裡不用關心各個欄位是什麼型別的。因為Hibernate會根據上面的實體類中屬性的型別來決定將來表中欄位的型別 3、配置hibernate.cfg.xml檔案
<hibernate-configuration>
	<session-factory >
		<!-- mysql資料庫驅動 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- mysql資料庫名稱 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<!-- 資料庫的登陸使用者名稱 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 資料庫的登陸密碼 -->
		<property name="hibernate.connection.password">root</property>
		<!-- 方言:為每一種資料庫提供介面卡,方便轉換 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<mapping resource="com/example/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>
注意:必須是“/”而不能是“.”。 4、生成表:編寫工具類ExoprtDB.java,將hbm生成ddl
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
 * 將hbm生成ddl
 * @author BCH
 *
 */
public class ExoprtDB {

	public static void main(String[] args) {
		//預設讀取hibernate.cfg.xml檔案
		Configuration cfr = new Configuration().configure();
		
		SchemaExport export = new SchemaExport(cfr);
		export.create(true, true);
	}
}
到這裡就可以生成User表了,但是如果直接執行ExoprtDB.java檔案是不能生成User表的。因為在mysql資料中還沒有建立資料庫Hibernate-first。所以在mysql控制檯中通過create database hibernate-first; use hibernate-first;之後再執行ExoprtDB.java檔案就可以生成表了。 5、向表中新增資料
import java.util.Date;

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

public class Client {
	public static void main(String[] args) {
		//讀取配置檔案
		Configuration cfg = new Configuration().configure();
		
		SessionFactory factory = cfg.buildSessionFactory();
		
		Session session = null;
		try{
			session = factory.openSession();
			//開啟事務
			session.beginTransaction();
			
			User user = new User();
			user.setUsername("使用者名稱");
			user.setPassword("123");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());
			
			session.save(user);
			//提交事務
			session.getTransaction().commit();
			
		}catch(Exception e){
			e.printStackTrace();
			//回滾事務
			session.getTransaction().rollback();
		}finally{
			if(session != null){
				if(session.isOpen()){
					//關閉session
					session.close();
				}
			}
		}
	}
}

執行該java檔案就可以完成向表中增加資料了,效果如下

(四)總結

通過上面的程式碼我們可以看出,在程式碼中沒有涉及到任何有關JDBC的程式碼,作為開發人員只需要寫好相應的實體類,然後通過配置就可以實現了表的建立以及向表中實現資料的插入。 在程式碼中有許多Hibernate的核心物件,例如Configuration、SessionFactory、Session等等。這些內容將在以後介紹。

相關推薦

新手上路Hibernate一個Hibernate例子

一、Hibernate概述 (一)什麼是Hibernate?            Hibernate核心內容是ORM(關係物件模型)。可以將物件自動的生成資料庫中的資訊,使得開發更加的面向物件。這樣

C++禿頭一個C++程式

經典的程式,列印hello,world:   //C++的第一個程式,列印hello world #include <iostream> //標頭檔案 意思:stdio in out stream using namespace std; int main()

hibernate(一) 一個hibernate工程

一、什麼是Hibernate?       輕量級JavaEE應用的持久層框架,是一個完全的ORM框架。(說完這句話,肯定有很多人懵圈了,下面我來一個個解釋)           持久化:將我們想要儲存的資料儲存到硬碟上,也就是我們電腦的磁碟上,為什麼叫持久化呢,就是資料

contos 7新手上路使用與美化

一、windows VS centos 對於從windows轉過來的新手而言,Centos 7使用起來還是有些不習慣的,突出表現在: 一是功能佈局變化很大 比如:在windows下,我們習慣了在桌面或某個資料夾下點:右鍵,然後選 重新整理,以便能獲取最新的目錄或檔案資訊

Javahibernate(3)——一個hibernate的樣例

數據庫方言 自由 article 存儲 代理 mit rup 方便 post  在解說樣例之前。我們首先來理解一下hibernate的工作原理。理解原理將會幫助我們更好地理解hibernate和運用hibernate。  1. 原理圖   利用hibe

分享知識-快樂自己搭建一個 Hibernate (Demo)

分享圖片 depend 文件夾 super bbb tool ets 數據庫配置 unicode 使用 Hibernate 完成持久化操作 七大 步驟: 1、讀取並解析配置文件及映射文件:   Configuration configuration=new Configur

Intellij IDEA下的一個Hibernate項目

popu 目錄 tran 事務 rac ocl bar 應該 出生日期 轉自:http://blog.csdn.net/qq_15096707/article/details/51419304 ,如需轉載,請聯系原博主。 參考:intellij配置hibernate自動

我的一個Hibernate程序

lds gin main void ucc 今天開始 myeclipse sna success 今天開始學習Hibernate,開啟我的第一個Hibernate程序 首先,建立一個數據庫student 第二步,在student數據庫中建立一張表student

我的一個Hibernate程式

今天開始學習Hibernate,開啟我的第一個Hibernate程式  首先,建立一個數據庫student 第二步,在student資料庫中建立一張表student     第三步,開啟 myeclipse10,開啟MyEclipse Hibernate pre

一個hibernate例子

package com.hibernate.zhang; import java.sql.Date; public class News { private Integer id; private String title; private String author; priv

一個Hibernate示例,使用Maven來管理jar包

注意:不同版本好像會有點不一樣,特別是在後續跟spring整合時要注意版本問題。這裡用的是Hibernate 3 版本的。。。 1.SQL指令碼 //SQL指令碼 CREATE TABLE USER ( USER_ID INT PRIMARY KEY AUTO_IN

Intellij IDEA下的一個Hibernate專案

                       下面我要講的建立方式,可能更加原生態,更加類似於Eclipse下建立Hibernate專案的方式,我想這也有助於對在Intellij IDEA下建立Hibernate專案的理解。       首先需要在Intellij IDEA下建立一個專案Project,相當於

Hibernate學習(一)———— 一個hibernate工程

一、什麼是Hibernate?       輕量級JavaEE應用的持久層框架,是一個完全的ORM框架。(說完這句話,肯定有很多人懵圈了,下面我來一個個解釋)           持久化:將我們想要儲存的資料儲存到硬碟上,也就是我們電腦的磁碟上,為什麼叫持久化呢,就是資料能夠儲存的很久,所以叫持久化,現在

Xamarin開發我的一個MvvmCross跨平臺外掛SimpleAudioPlayer

大家好,老司機學Xamarin系列又來啦!上一篇MvvmCross外掛精選文末提到,Xamarin平臺下,一直沒找到一個可用的跨平臺AudioPlayer外掛。那就自力更生,讓我們就自己來寫一個吧! 原始碼和Nuget包 MvvmCross的PCL+Native外掛架構簡介 在開始寫一個MvvmCross

SSH入門Hibernate篇(1)——編寫一個hibernate程式

前言 hibernate用於把物件模型 表示的物件對映到基於 SQL 的關係模型資料結構中去,採用完全面向物件的 方式來操作資料庫;主要作用是簡化應用的資料持久層程式設計,不僅能管理 Java 類到數 據庫表的對映,還提供資料查詢和獲取資料的方法。 第一個hi

Zigbee旅(二)一個CC2430程式——LED燈閃爍實驗

一、承上啟下      在上一篇文章《Zigbee之旅(一):開天闢地》中,我們簡要的介紹了Zigbee,以及其開發環境的搭建。OK,現在工具都齊全了,一個問題隨之產生:如何利用這些軟、硬體來編寫一個能夠跑起來的程式呢?      本篇文章基本是來回答以上問題的:以“LED燈閃爍”這個小實驗作為例子,介紹

子雨大資料Spark入門教程---Spark2.1.0入門一個Spark應用程式WordCount 2.2

前面已經學習了Spark安裝,完成了實驗環境的搭建,並且學習了Spark執行架構和RDD設計原理,同時,我們還學習了Scala程式設計的基本語法,有了這些基礎知識作為鋪墊,現在我們可以沒有障礙地開始編寫一個簡單的Spark應用程式了——詞頻統計。 任務要求 任務:

Intellij IDEA建立一個hibernate專案

最近在學習hibernate,教程上講的都是eclipse的教程,奈何用了更為強大(個人感受)的IDEA,但是最開始因為不清楚hibernate的配置,被IDEA自動生成對映檔案的操作給迷糊了,在這裡寫部落格記錄IDEA建立簡單的hibernate專案,(本文只

pythonpygal一個骰子統計次數並以直方圖形式顯示

統計 tle bar any http append 一個 die() title 源碼如下: 1 # pygal包:生成可縮放的矢量圖形文件,可自適應不同尺寸的屏幕顯示 2 # 安裝:python -m pip intall pygal-2.4.0-py2.py3-

python新手第一天學習筆記-一個ptyhon程序和python變量

ali color 輸出 3.5 pri -- class -i bsp 一、python 的註釋和第一個python 程序 : 1、單行註釋 # Author Xiajq 2、多行註釋 ‘‘‘ ------------註釋內容----------------------