Hibernate4 CRUD示例

最近研發的項目需要使用Hibernate,很久沒有使用Hibernate了,做了一個簡單的CRUD作爲示例,比較簡單,直接上代碼吧,

首先創建數據庫和表

CREATE DATABASE mybusiness; 
USE mybusiness; 
CREATE TABLE customers( 
C_ID int NOT NULL AUTO_INCREMENT, 
name varchar(20), 
address  varchar(20), 
PRIMARY KEY(C_ID) 
); 
創建Hibernate配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory name="">
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/mybusiness</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.connection.pool_size">1</property>
		<property name="hibernate.show_sql">true</property>
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<mapping resource="customers.hbm.xml" />
	</session-factory>
</hibernate-configuration>

創建ORM文件

<?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="Customer" table="customers">
		<id column="C_ID" name="customerID" type="int">
			<generator class="native">
			</generator>
		</id>
		<property name="customerName">
			<column name="name">
			</column>
		</property>
		<property name="customerAddress">
			<column name="address">
			</column>
		</property>
	</class>
</hibernate-mapping>

創建模型類

public class Customer {
	private int customerID;
	private String customerName;
	private String customerAddress;

	public Customer() {
	}

	public String getCustomerAddress() {
		return customerAddress;
	}

	public void setCustomerAddress(String customerAddress) {
		this.customerAddress = customerAddress;
	}

	public int getCustomerID() {
		return customerID;
	}

	public void setCustomerID(int customerID) {
		this.customerID = customerID;
	}

	public String getCustomerName() {
		return customerName;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}
}

最後創建測試類

import java.util.Iterator;
import java.util.List;

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

public class CRUDTest {

	public static void main(String[] args) {
		deleteTest();
		// readTest();

	}

	/*
	 * 增加一個客戶資料
	 */
	public static void createTest() {
		Session session = null;
		try {

			Configuration configuration = new Configuration();
			configuration.configure("hibernate.cfg.xml");
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
					.applySettings(configuration.getProperties())
					.buildServiceRegistry();
			SessionFactory sessionFactory = configuration
					.buildSessionFactory(serviceRegistry);
			session = sessionFactory.openSession();

			session.beginTransaction();

			System.out.println("Adding a customer record !");

			Customer customer = new Customer();
			customer.setCustomerName("Customer-a");
			customer.setCustomerAddress("Address1");

			session.save(customer);
			session.getTransaction().commit();

			System.out.println("Done!");

		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		finally {
			session.flush();
			session.close();
		}

	}

	/*
	 * 讀取customers表
	 */
	public static void readTest() {
		Session session = null;
		try {

			Configuration configuration = new Configuration();
			configuration.configure("hibernate.cfg.xml");
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
					.applySettings(configuration.getProperties())
					.buildServiceRegistry();
			SessionFactory sessionFactory = configuration
					.buildSessionFactory(serviceRegistry);
			session = sessionFactory.openSession();

			session.beginTransaction();

			System.out.println(org.hibernate.Version.getVersionString());
			String HQL_QUERY = "from Customer customers";
			org.hibernate.Query query = session.createQuery(HQL_QUERY);

			List list = query.list();

			System.out.println("Recieving " + list.size() + " Records:");
			for (Iterator it = list.iterator(); it.hasNext();) {
				Customer customer = (Customer) it.next();
				System.out.println("Name:" + customer.getCustomerName());
				System.out.println("Address:" + customer.getCustomerAddress());
				System.out.println("ID:" + customer.getCustomerID());
				System.out.println("----------");
			}
			session.getTransaction().commit();
			System.out.println("Done!");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		finally {
			session.flush();
			session.close();
		}

	}

	/*
	 * 更新一條記錄
	 */
	public static void updateTest() {
		Session session = null;
		try {

			Configuration configuration = new Configuration();
			configuration.configure("hibernate.cfg.xml");
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
					.applySettings(configuration.getProperties())
					.buildServiceRegistry();
			SessionFactory sessionFactory = configuration
					.buildSessionFactory(serviceRegistry);
			session = sessionFactory.openSession();

			session.beginTransaction();

			String HQL_QUERY = "from Customer customers where customers.customerID = :customerId";
			org.hibernate.Query query = session.createQuery(HQL_QUERY);
			// Prepared statement
			query.setParameter("customerId", 1);
			for (Iterator it = query.iterate(); it.hasNext();) {
				Customer customer = (Customer) it.next();
				customer.setCustomerName("Customer1");
			}
			session.getTransaction().commit();
			System.out.println("Done!");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		finally {
			session.flush();
			session.close();
		}
	}

	/*
	 * 刪除一條記錄
	 */
	public static void deleteTest() {
		Session session = null;
		try {

			Configuration configuration = new Configuration();
			configuration.configure("hibernate.cfg.xml");
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
					.applySettings(configuration.getProperties())
					.buildServiceRegistry();
			SessionFactory sessionFactory = configuration
					.buildSessionFactory(serviceRegistry);
			session = sessionFactory.openSession();

			session.beginTransaction();

			Customer cust = new Customer();
			cust.setCustomerID(1);
			session.delete(cust);
			session.getTransaction().commit();
			System.out.println("Done!");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		finally {
			session.flush();
			session.close();
		}

	}
}
經過測試通過

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