中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

初識Hibernate框架

發布時間:2020-07-23 02:54:26 來源:網絡 閱讀:332 作者:qmkkd 欄目:數據庫

引、

    之前在學校接觸了Java的hibernate框架,覺得很強大。放假了,有時間好好看一看hibernate的相關技術。最近在imooc上看了相關的視頻,寫一篇博客總結一下。



一、了解:

    Hibernate是一個ORM(Object Relational Mapping,對象關系映射)框架,對JDBC進行了輕量級的封裝。使得程序員可以用面向對象的方法來進行數據庫編程,使我們更容易用Java對數據庫進行各種操作,完成數據持久化(我覺得就是實時同步)的任務。



二、配置

    知道了Hibernate是什么,有什么用之后,我們來著手嘗試一下。但是首先,要配置。


    我用的是Eclipse,在Java web工程下:

    1、jar包

將hibernate所需的jar包都拷貝到WEB-INF\lib目錄下,然后build path添加到配置文件中。所需的包可以在其官網下載,然后還要添加所要用jdbc的jar包。


    2、hibernate.cfg.xml配置

    在src目錄下創建hibernate.cfg.xml,也就是config文件。

    貼一段配置代碼示例:

<?xml version="1.0" encoding="UTF-8"?>
<!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>  
        <property name="show_sql">true</property>  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/lesson?useUnicode=true&amp;characterEncoding=utf8</property>  
        <property name="hibernate.connection.username">root</property>  
        <property name="hibernate.connection.password">root</property>  
        <property name="hbm2dddl.auto">update</property>
        <mapping resource="com/ouc/domains/TUser.hbm.xml"/>
        <mapping resource="com/ouc/domains/TUrl.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

    關于以上參數,從上往下:

        <property>控制臺打印sql語句,使用mysql方言,使用mysql數據庫,數據庫連接,用戶名root,密碼root,操作表的方式</property>

        <mapping/>里是兩個實體類,對應數據庫中的兩張表。(實體類直接對應數據庫中的表)


    3、TUser.hbm.xml

    TUser是其中一個實體類的名字,這里對應了數據庫里的user表。對每一個實體類需要創建一個xml配置文件。配置代碼示例:

<?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 package="com.ouc.domains">
	<class name="TUser" table="t_user">
		<id name="id" column="id">
			<generator class="identity"></generator>
		</id>
		<property name="username" column="username"></property>
		<property name="password" column="password"></property>
	</class> 
</hibernate-mapping>

    其中對應關系:package-包名。class-類名,table-數據庫表名。id-主鍵,name-類中屬性名,column-數據庫表列名。identity-主鍵increment自增。property-屬性對應。


    配置的屬性還有單表映射,一對多<one-to-many>,多對一<many-to-one>的表映射,如果進行過了雙向配置,可以使用inverse關鍵字來實現控制。添加表的映射之后使得數據表之間關系更易于管理,就是數據庫中添加外鍵一樣,還可以用cascade等參數使其更加方便。

    

    4、添加工具類HibernateUtil.java

    在util包下新建HibernateUtil類。不多說,上代碼:

package com.ouc.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
	
public static SessionFactory sessionFactory;

	public HibernateUtil() 
	{
		
	}

	static {
		try {
			/** 此方法在Hibernate4中被標記為過時 */
			// sessionFactory = new
			// Configuration().configure().buildSessionFactory();

			/** Hibernate4取得SessionFactory的方法 */
			Configuration cfg = new Configuration().configure();  //創建配置對象
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()  
					.applySettings(cfg.getProperties()).buildServiceRegistry(); //創建服務注冊對象
			sessionFactory = cfg.buildSessionFactory(serviceRegistry);  //創建會話工廠
		} catch (Throwable e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	
}

    我們通過sessionFactory就拿到session,然后可以進行各種操作了。


三、使用:

    Hibernate中使用HQL(Hibernate Query Language)進行查詢,數據庫中使用的SQL(Structured Query Language,結構化查詢語言)進行查詢,兩者的語法幾乎是一樣的。


    寫個Test測試一下,代碼:

package com.ouc.util;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.ouc.domains.TUser;

public class TestUtil {
	public static void main(String[] args) {
		Session session = HibernateUtil.sessionFactory.openSession();
		String hql=" from TUser";
		Query query= session.createQuery(hql);
		List<TUser> users=query.list();
		for(TUser u:users){
			System.out.println(u.getId()+","+u.getUsername()+","+u.getPassword());
		}
	}
}

    上面要注意一個問題,debug了半天- - 太粗心了,用了hibernate就是面向對象編程了,所以在查找表的時候不是from tableName,而是要寫from className。

    比如上面的hql用的from TUser,一開始寫了from t_user就報錯,提示沒有映射。發現配置文件并沒有問題,才想到這里寫錯了。


    看看結果,數據庫中的數據:

    

初識Hibernate框架

    控制臺輸出結果:

初識Hibernate框架

    可以,很正確。


五、總結

    經過這一小段時間的視頻學習,雖然學得不多也不深入,不過這樣也算是初步認識了Hibernate框架,還要不斷學習!技術的世界很廣闊,為了去看看那些技術的秘密,也為了更好的明天,還要不斷學習。加油吧,晚安少年。


向AI問一下細節
推薦閱讀:
  1. 初識UNIX
  2. puppet 初識

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋州市| 武陟县| 泸州市| 八宿县| 岑巩县| 芦溪县| 乌拉特中旗| 怀柔区| 秦安县| 宜丰县| 江孜县| 栖霞市| 临泽县| 衢州市| 邓州市| 垫江县| 宁陕县| 湟源县| 望江县| 水城县| 同德县| 乐东| 亳州市| 诸城市| 崇文区| 定襄县| 宁乡县| 公安县| 五莲县| 乳山市| 绥芬河市| 双鸭山市| 沅陵县| 和顺县| 共和县| 临澧县| 辽源市| 自贡市| 达尔| 措勤县| 新巴尔虎左旗|