Hibernate簡單學習總結

1.hibernate.cfg.xml 配置java

<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/student</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property><!-- 將SQL語句打印到控制檯 -->
		<property name="hibernate.format_sql">true</property><!-- 將SQL語句格式化後,打印到控制檯 -->
		
		
		<mapping resource="com/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

2.User.hbm.xml 配置mysql

<?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.hibernate.User">
		<id name="id">
		<generator class="uuid"/><!-- 自動生成一個32位的字符串,必須提供生成策略 -->
		</id>
		<property name="name"/>
		<property name="password"/>	
	</class>

</hibernate-mapping>

3.建立User實體web

package com.hibernate;

public class User {
	
	private String id;
	private String name;
	private String password;
	//private String rights;
	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;
	}
}

4.ExportDB類(根據xml文件生成對應數據庫的表)sql

package com.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 export = new SchemaExport(cfg);
		export.create(true, true);	
	}
}

5.測試類Client數據庫

package com.hibernate;

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

public class Client {
	public static void main(String[] args) {		
		// org.hibernate.cfg.Configuration類的做用:
		// 讀取hibernate配置文件(hibernate.cfg.xml或hiberante.properties)的.
		// new Configuration()默認是讀取hibernate.properties
		// 因此使用new Configuration().configure();來讀取hibernate.cfg.xml配置文件
		// 默認讀取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();

		// 建立SessionFactory
		// 一個數據庫對應一個SessionFactory
		// SessionFactory是線線程安全的(最好建立一次)
		SessionFactory factory = cfg.buildSessionFactory();

		// 建立session
		// 此處的session並非web中的session
		// session只有在用時,才創建concation,session還管理緩存。
		// session用完後,必須關閉。
		// session是非線程安全,通常是一個請求一個session.
		Session session = null;
		try {
			session = factory.openSession();
			//手動開啓事務(能夠在hibernate.cfg.xml配置文件中配置自動開啓事務) 
			session.beginTransaction();
			
			// 保存數據,此處的數據是保存對象,這就是hibernate操做對象的好處,
			// 咱們不用寫那麼多的JDBC代碼,只要利用session操做對象,至於hibernat如何存在對象,這不須要咱們去關心它,
			// 這些都有hibernate來完成。咱們只要將對象建立完後,交給hibernate就能夠了。
			User user =new User();
			user.setName("Lee");
			user.setPassword("00");
			session.save(user);
			//提交事物
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			//回滾事物
			session.getTransaction().rollback();
		}finally{
			if (session!=null) {
				if(session.isOpen())
					//關閉session
				    session.close();
			}
		}
	}

}
相關文章
相關標籤/搜索