在MyEclipse中快速搭建hibernate應用

來源:互聯網
上載者:User

以下是一個Hibernate入門案例,使用Myeclipse開發。


一、環境

1、MyEclipse for Spring 10.0.0

2、jdk 1.6

二、簡要說明

資料庫為 mysql 5.5

在mysql中建立一個名為mydb的資料庫,建立cat表

CREATE TABLE `cat` (
`cat_id` varchar(32) NOT NULL,
`name` varchar(16) NOT NULL,
`sex` varchar(1) default NULL,
`weight` float(9,3) default NULL,
PRIMARY KEY (`cat_id`)

);

插入幾條資料。

insert into cat values('002','bb','f','12.6');


三、步驟

a.配置資料來源 

(請參看  在MyEclipse中配置資料來源 )

b.建立Project(可以個Java Project 或者是Web Project 等項目) ,這個的項目名稱是:Example

b-1:建立一個名為config的目錄,用於放置hibernate.cfg.xml;

b-2:建立一個名為mappings的目錄,用於放置對應檔;


c.增加hibernate應用能力,也可以說增加hibernate需要的包或者庫

過程:在Example項目的右擊選項菜單中,選擇MyEclipse ->Add Hibernate Capabilities...

彈出一個Hibernate Support for MyEclipse 的對話方塊:

c-1:在“Select the libraries to add to the buildpath”中選擇要添加到該工程的包,可以選擇預設,也可以勾選Hibernate3.0的Core及Advanced包都勾;


c-2:是否建立hibernate.cfg.xml,我把configuration folder 設定為src\com.xu.config包中;

:


c-3:第三步是指定資料庫連接細節(specify database connection details),在這之前請先配置你的資料來源。

在DB Driver中選擇你的資料來源。


c-4:建立SessionFactory,這個SessionFactory其實是Hibernate提供的一個用於管理Session的類,

他可以確保在每個獨立的線程中Session是唯一的。


點擊Finish,完成。


d.建立實體類及該實體類的對應檔。可以自己手動建立,也可以通過Myeclipse開發工具自動建立。這裡介紹用Myeclipse工具手動建立。

d-1:在MyEclipse工作區右上方選擇進入MyEclipse Database Explorer,開啟資料庫管理檢視。可以看到我們的資料來源。

d-2:進入到我們需要產生實體及對應檔的資料庫表


d-3:右擊需要的表(如cat表),出現選項單,選擇Hibernate Reverse Engineering...

d-4:在 Java src folder 中選擇需要產生實體對應檔的專案檔夾,並且選中Hibernate mapping file(*.hbm.xml) for each database table 與

Java Data Object 這兩個選擇框,前一個產生對應檔,後一個產生實體類。然後下一步。

;

然後一直下一步直到完成。


完成後將自動產生對應表中的實體類和對應檔。

:


package com.xu.entity;/** * Cat entity. @author MyEclipse Persistence Tools */@SuppressWarnings("serial")public class Cat implements java.io.Serializable {// Fieldsprivate String catId;private String name;private String sex;private Float weight;// Constructors/** default constructor */public Cat() {}/** minimal constructor */public Cat(String catId, String name) {this.catId = catId;this.name = name;}/** full constructor */public Cat(String catId, String name, String sex, Float weight) {this.catId = catId;this.name = name;this.sex = sex;this.weight = weight;}// Property accessorspublic String getCatId() {return this.catId;}public void setCatId(String catId) {this.catId = catId;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex = sex;}public Float getWeight() {return this.weight;}public void setWeight(Float weight) {this.weight = weight;}}

對應的對應檔如下:

Cat.hbm.xml:

<?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"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>    <class name="com.xu.entity.Cat" table="cat" catalog="mydb">        <id name="catId" type="java.lang.String">            <column name="cat_id" length="32" />            <generator class="assigned" />        </id>        <property name="name" type="java.lang.String">            <column name="name" length="16" not-null="true" />        </property>        <property name="sex" type="java.lang.String">            <column name="sex" length="1" />        </property>        <property name="weight" type="java.lang.Float">            <column name="weight" precision="9" scale="3" />        </property>    </class></hibernate-mapping>

最後建立一個測試類別進行測試Test.java:

package com.xu.test;import java.util.Iterator;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import com.xu.entity.Cat;import com.xu.factory.HibernateSessionFactory;public class Test {Session session = null;Transaction tx = null;@SuppressWarnings("rawtypes")public static void main(String[] args) {Test th = new Test();List cl = th.getAllCats();if (cl != null) {Iterator it = cl.iterator();while (it.hasNext()) {Cat cat = (Cat) it.next();System.out.println("catID:" + cat.getCatId() + "name:"+ cat.getName() + "sex:" + cat.getSex());}}}@SuppressWarnings("rawtypes")public List getAllCats() {session = HibernateSessionFactory.getSession();List catlist = null;try {tx = session.beginTransaction();catlist = session.createQuery("from Cat").list();return catlist;} catch (Exception ex) {System.err.println(ex.getMessage());return null;} finally {HibernateSessionFactory.closeSession();}}}

運行代碼:


出現錯誤是因為hibernate是通過log4j進行日誌管理的,所以如果沒有log4j來管理hibernate日誌,到時尋找日誌將不能成功。

所以需要建立一個log4j.properties檔案來管理hibernate日誌。


代碼如下:

log4j.rootLogger=WARN, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

最後項目運行結果如下:





    













聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.