本例實現Hibernate的第一個程式,Hibernate的優點我想大家都很清楚,在這裡不做過多贅述。總之,使用Hibernate對資料庫操作,也就是來操作實體對象的! 項目目錄: 一、第一步要做的就是先建個資料庫,這很簡單,一條語句搞定; create database test; 二、配置hib ...
本例實現Hibernate的第一個程式,Hibernate的優點我想大家都很清楚,在這裡不做過多贅述。總之,使用Hibernate對資料庫操作,也就是來操作實體對象的!
項目目錄:
一、第一步要做的就是先建個資料庫,這很簡單,一條語句搞定;
create database test;
二、配置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> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url"> jdbc:mysql:///test </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.dialect"> org.hibernate.dialect.MySQL5Dialect </property> <property name="hibernate.connection.provider_class"> org.hibernate.c3p0.internal.C3P0ConnectionProvider </property> <property name="hibernate.current_session_context_class"> thread </property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <mapping resource="com/beans/Student.hbm.xml" /> </session-factory> </hibernate-configuration>
三、建實體類(Student.java)和相應的映射文件(Student.hbm.xml)
Student.java:
package com.beans; public class Student { int id; String name; int age; double score; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, int age, double score) { super(); this.name = name; this.age = age; this.score = score; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", score=" + score + "]"; } }
Student.hbm.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> <!-- 完成類到表的映射,屬性到欄位的映射 --> <class name="com.beans.Student" table="t_student"> <id name="id" column="tid"> <generator class="native" /> </id> <property name="name" column="tname" /> <property name="age" column="tage" /> <property name="score" column="tscore" /> </class> </hibernate-mapping>
四、junit測試,主要是測試操作實體類對象對資料庫進行增刪改查
MyTest.java:
package com.test; import org.hibernate.Session; import org.junit.Test; import com.beans.Student; import com.utils.HbnUtils; public class MyTest { /** * 查詢操作(查) */ @Test public void testGet() { Session session = HbnUtils.getSession(); session.beginTransaction();// 等價於session.getTransaction().begin(); Student student = session.get(Student.class, 1); System.out.println(student); session.getTransaction().commit(); } @Test /** * 保存信息(增) */ public void testSave(){ Session session = HbnUtils.getSession();//執行這一步表就會建出來 try { session.beginTransaction(); Student student = new Student("Tom",21,98); student.setId(1); session.save(student); session.getTransaction().commit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); session.getTransaction().rollback(); } } @Test /** * 修改信息 */ public void testSaveOrUpdate(){ Session session = HbnUtils.getSession();//執行這一步表就會建出來 try { session.beginTransaction(); Student student = new Student("Tom",21,100);//更新並保存tid為1的值 student.setId(1); session.saveOrUpdate(student); session.getTransaction().commit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); session.getTransaction().rollback(); } } @Test /** * 刪除操作(刪) */ public void testDelete(){ Session session = HbnUtils.getSession();//執行這一步表就會建出來 try { session.beginTransaction(); Student student = new Student(); student.setId(1);//刪除id是1的所有相關數據 session.delete(student); session.getTransaction().commit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); session.getTransaction().rollback(); } } }
testSave():資料庫表中添加了一條數據(增)
testDelete():刪除這條數據(刪)
testSaveOrUpdate():更新了這條數據(改)
texstGet():查詢這條數據全部信息(查)