搭建Hibernate應用

  我們所要建的應用非常簡單,只是利用hibernate3.0對一張表進行操作。

  軟件環境:

  1.Eclipse3.1.2;

  2.MyEclipse4.1.0;

  3.MySql Server 5.0 ;

  4.MySql Java Connector J 5.0.4;

  5.hibernate3.0 Core Libraries;

  6.hibernate3.0 Advanced Libraries;

  參考書籍及文檔:

  <<深入淺出Hibernate>>夏昕,唐勇,曹曉剛

  MyEclipse Help Content

  整個應用的創建依以下步驟完成:

  (1)新建一個名爲hibernatetest的mysql schema;

  (2)創建一張名爲User的表格,其語句如下:

CREATE TABLE `hibernatetest`.`User` ( 
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `sex` CHAR NOT NULL,
  `age` TINYINT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`)
  )
  ENGINE = InnoDB;

  (3)打開MyEclipse的DB Browser視圖,在右擊選項菜單(Context Menu)上選擇New……,彈出Database

  Profile對話框,用於新建一個Profile,填入以下信息:

  <3.1>Profile Name: localhost_mysql_profile;

  <3.2>Driver: 打開Configure database driver鏈接,配置jdbc驅動,我們只需加入MySql

  Connector J的JDBC驅動即可;

  <3.3>URL: jdbc: mysql://127.0.0.1:3306/hibernatetest;

  <3.4>User Name: 用戶名;

  <3.5>Password: 密碼;

  創建完profile後,嘗試一下連接至數據庫,成功即可;

  (4)在Eclipse中新建一個名爲HibernateSample的Java項目;

  <4.1>創建一個名爲config的目錄,用於放置hibernate.cfg.xml;

  <4.2>創建一個名爲mappings的目錄,用於放置映射文件;

  (5)在HibernateSample項目的右擊選項菜單中,選擇MyEclipse->Add Hibernate Capabilities……這

  樣會彈出一個Hibernate Support for MyEclipse的對話框:

  <5.1>第一步是選擇要添加到工程的包,我們把Hibernate3.0的Core及Advanced包都勾上;

  <5.2>第二步是否創建hibernate.cfg.xml,我們把configuration folder設定爲src/config;

  <5.3>第三步是指定數據庫連接細節(specify database connection details),我們只需名爲

  localhost_mysql_profile即可,因爲我們之前已經進行了設置;

  <5.4>第四步問你是否創建SessionFactory,這個SessionFactory其實是Hibernate提供的一個用於

  管理Session的類,它可以確保在每個獨立的線程中Session是唯一的,我們創建名爲

  cn.com.test.hibernatesample.factory.HibernateSessionFactory的類;

  通過上述的四步,現在的工程裏面已經擁有了hibernate所需的包及配置文件。

  (6)在src目錄下創建一個名爲log4j.properties的文件,內容如下:

 ### direct log messages to stdout ### 
  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  log4j.appender.stdout.Target=System.out
  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} 
%5p %c{1}:%L - %m%n
  log4j.rootLogger=warn, stdout
  log4j.logger.org.hibernate=error

  因爲hibernate是通過log4j進行日誌管理的,所以加上這個會比較好,不加會在運行時出錯。

  (7)創建cn.com.test.hibernatesample.model.User類,篇幅所限,大致如下

 package cn.com.test.hibernatesample.model; 
  public class User {
  private Integer id;
  private String name;
  private char sex;
  private byte age;
  //後面是一堆的setter,getter,用於set及get各個屬性
  }

  (8)在工程的mappings(在第4步創建的目錄)目錄下創建一個名爲User.hbm.xml,內容如下:

  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  (9)在HibernateSample項目的右擊選項菜單中,選擇New -> JUnit Test Case……,彈出新建JUnit

  Test Case的對話框:

  <9.1>package上輸入:cn.com.test.hibernatesample.test;

  <9.2>type上輸入UserTest;

  <9.3>在which method stubs whould you like to create中勾上setUp(),tearDown();

  整個UserTest類的代碼如下:

package cn.com.test.hibernatesample.test; 
  import org.hibernate.HibernateException;
  import org.hibernate.Session;
  import org.hibernate.Transaction;
  import cn.com.test.hibernatesample.factory.HibernateSessionFactory;
  import cn.com.test.hibernatesample.model.User;
  import junit.framework.Assert;
  import junit.framework.TestCase;
  public class UserTest extends TestCase {
  //hibenate的session對象
  private Session session = null;
  protected void setUp() throws Exception {
  super.setUp();
  session = HibernateSessionFactory.currentSession();
  }
  public void testUserInsert() {
  Transaction tran = null;
  try {
  tran = session.beginTransaction();
  User user = new User();
  user.setName("suhaoyuan");
  user.setSex('M');
  user.setAge(Byte.parseByte("27"));
  session.save(user);
  tran.commit();
  Assert.assertEquals(.getId().intValue() > 0, true);
  }
  catch(HibernateException ex) {
  ex.printStackTrace();
  Assert.fail(ex.getMessage());
  if(tran != null) {
  try {
  tran.rollback();
  }
  catch(HibernateException tranEx) {
  tranEx.printStackTrace();
  }
  }
  }
  }
  protected void tearDown() throws Exception {
  super.tearDown();
  HibernateSessionFactory.closeSession();
  }
  }

  (10)運行剛創建的UserTest測試用例即完成該應用;

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