hibernate主要配置文件整合-----實體類映射--持久化

hibernate主要配置文件整合

結構圖:
在這裏插入圖片描述
實體類映射文件,名稱格式:XX.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="org.hibernate.test.exception" >
	<!-- name填寫實體類的路徑 table填寫表名 -->
	<class name="com.wqk.entity.User" table="user">
	
		<!-- id填寫實體類主鍵字段 table填寫表主鍵字段 -->
		<id name="id" column="id">
		<!-- native代表自增長依賴於表 -->
		<generator class="native"></generator>
		</id>
		<property name="username" column="username"></property>
		<property name="password" column="password"></property>
		<!-- 映射文件結束 -->
	</class>
</hibernate-mapping>

hibernate核心配置文件:名稱:hibernate.cfg.xml(不可改)

<?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>

        <!-- jdbc操作數據庫配置文件 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test01</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>

        <!-- 數據庫連接池初始化時創建的connection個數 -->
        <property name="connection.pool_size">2</property>

        <!-- 數據庫類型,官方稱之爲sql方言,這裏使用mysql,不要自己寫從官網api文檔上cp -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>


        <!-- 執行sql的時候是否打印sql語句,這裏使用true,代表打印 -->
        <property name="show_sql">true</property>

        <!-- 這個配置是說:當數據庫不存在時是否創建:DDL,這裏我不允許它自己創建,so,修改爲update -->
        <property name="hbm2ddl.auto">update</property>

        <!-- 這裏是指向實體類的映射文件,注意:是實體類的映射文件,不是實體類 -->
        
	<!-- 剛剛找了一下。發現是屬性寫錯了,拷貝的時候也要注意 -->
        <mapping resource="com/wqk/entity/User.hbm.xml"/>
        <!-- hibernate核心配置文件完成 -->

    </session-factory>

</hibernate-configuration>

基本操作:增刪改查

package com.wqk.test;

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

import com.wqk.entity.User;

public class Test01 {
	
	//註解@Test相當於main方法
	@Test
	public void show()
	{
		Configuration con = new Configuration();
		//加載核心配置文件
		con.configure();
		//獲取session工廠
		SessionFactory sf=con.buildSessionFactory();
		//打開session
		Session session = sf.openSession();
		//測試查詢get(實體類.class, id)
		User user=(User) session.get(User.class, 1);
		System.out.println(user.getUsername());
		session.close();
		
	
	}
	//測試增刪改
	@Test
	public void insert()
	{
		Configuration con = new Configuration();
		con.configure();
		SessionFactory sf = con.buildSessionFactory();
		Session session = sf.openSession();
		//做增刪改時要求使用事物
		//獲取事物
		Transaction tc = session.beginTransaction();
		//開啓事物
		tc.begin();
		User user=new User();
		user.setUsername("張迷");
		user.setPassword("123456");
		session.save( user );
		//提交
		tc.commit();
		//關閉
		sf.close();
		//新增成功
	}
	
	//測試增刪改
		@Test
		public void delete()
		{
			Configuration con = new Configuration();
			con.configure();
			SessionFactory sf = con.buildSessionFactory();
			Session session = sf.openSession();
			//做增刪改時要求使用事物
			//獲取事物
			Transaction tc = session.beginTransaction();
			//開啓事物
			tc.begin();
			//先查詢
			User user=(User) session.get(User.class, 1);
			session.delete(user);
			//提交
			tc.commit();
			//關閉
			sf.close();
			//刪除成功
		}
		//測試增刪改
				@Test
				public void update()
				{
					Configuration con = new Configuration();
					con.configure();
					SessionFactory sf = con.buildSessionFactory();
					Session session = sf.openSession();
					//做增刪改時要求使用事物
					//獲取事物
					Transaction tc = session.beginTransaction();
					//開啓事物
					tc.begin();
					//依然先查詢
					User user=(User) session.get(User.class, 2);
					user.setUsername("我愛你");
					session.update(user);
					//提交
					tc.commit();
					//關閉
					sf.close();
					//修改成功
				}
				//hibernate基礎到此結束

}

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