程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate結合MYSQL數據庫簡單教程

Hibernate結合MYSQL數據庫簡單教程

編輯:關於JAVA

在網上找了很多Hibernate的相關教程,大多數都是結合WEB服務器的,自己寫一個單獨的示例在Eclipse下直接運行,不需要自己寫ANT腳本,不需要結合web服務器。但是需要MYSQL數據庫-_-

首先要學會如何使用Eclipse,然後要下載Hibernate需要的所有JAR文件,最後安裝好MYSQL

准備開始!

第一步,我們要創建一個表 結構如下

+-----------+--------------+------+-----+---------+----------------+

| Field  | Type | Null | Key | Default | Extra  |

+-----------+--------------+------+-----+---------+----------------+

| id| int(11)  | NO| MUL | NULL| auto_increment |

| title| varchar(400) | YES | | NULL||

| content | text | YES | | NULL||

| time  | datetime | YES | | NULL||

+-----------+--------------+------+-----+---------+----------------+

第二步,在Eclipse中創建一個JAVA項目(我在項目中用到的包名是cn.com.nick.hbm)。編寫News.java類,這個類對應了數據庫中的表

  package cn.com.nick.hbm;


import java.util.Date;


public class News

{

private int id;

private String title;

private String content;

private Date date;


public int getId()

{

return id;

}


public void setId(int id)

{

this.id = id;

}


public String getTitle()

{

return title;

}


public void setTitle(String title)

{

this.title = title;

}


public String getContent()

{

return content;

}


public void setContent(String content)

{

this.content = content;

}


public Date getDate()

{

return date;

}


public void setDate(Date date)

{

this.date = date;

}


}

第三步,配置對應關系 保存為News.hbm.xml文件 與News類在同一目錄下(並不是一定要在同一目錄下,為了方便暫時先放在這裡) "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

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

第四步,配置hibernate.cfg.xml 注意這個名字不能改,並且要放到SRC的跟路徑下(這裡要注意,如果放錯地方示例中的方法是找不到這個文件的) PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

true


com.mysql.jdbc.Driver


thread


jdbc:mysql://localhost:3306/test


root

123


org.hibernate.dialect.MySQLDialect

my

最後創建一個測試類 Test.java 代碼如下,裡邊有注釋說明

package cn.com.nick.hbm;


import java.util.Date;

import java.util.List;


import org.hibernate.HibernateException;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.classic.Session;


public class Test

{


private static final SessionFactory sessionFactory;


static

{

try

{

// 這裡創建了SessionFactory 將hibernate.cfg.xml文件放到SRC的跟路徑下

// Hibernate會自己找到

sessionFactory = new Configuration().configure()

.buildSessionFactory();

} catch (Throwable ex)

{

// Make sure you log the exception, as it might be swallowed

System.err.println("Initial SessionFactory creation failed." + ex);

throw new ExceptionInInitializerError(ex);

}

}


public static SessionFactory getSessionFactory()

{

return sessionFactory;

}


public static void main(String[] args)

{

// 實例化一個新的News對象,並填充內容

News news = new News();

news.setTitle("測試標題");

news.setContent("添加測試內容");

news.setDate(new Date());


Test t = new Test();

// 調用Test類下的存儲方法,相當於執行INSERT語句

// t.Save(news);

// 調用查詢方法,顯示數據庫的內容

t.select();

// 調用更新方法

// t.update();

// 調用刪除

// t.delete();

}


/**

* 一個簡單的添加數據方法

* @param news news對象,這個對象將被添加到庫中

*/

public void Save(News news)

{

try

{

//獲取hibernate的session

Session session = Test.getSessionFactory().getCurrentSession();

session.beginTransaction();

//這裡只需要調用save方法把news對象傳進去就插入成功了!

session.save(news);

session.getTransaction().commit();


} catch (HibernateException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}


}


/**

* 查詢方法

*/

public void select()

{

try

{

Session session = Test.getSessionFactory().getCurrentSession();

session.beginTransaction();

//注意!!!這裡的 News 不是表名稱! 是對象名所以要注意大小寫 

String sql=" from News";

//帶條件的查詢

//String sql="from News where id=1";



//用session.createQuery()執行HQL查詢語句

List l = session.createQuery(sql).list();

//在控制台循環輸出

for (News n : l)

{

System.out.println(n.getId());

System.out.println(n.getTitle());

System.out.println(n.getContent());

System.out.println(n.getDate());

System.out.println("==============");

}

session.getTransaction().commit();


} catch (HibernateException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}


/**

* 更新方法

*/

public void update()

{

try

{

Session session = Test.getSessionFactory().getCurrentSession();

session.beginTransaction();

//定義了要裝載對象的ID

Integer id = 1;

//用load方法裝載一個對象進來

News n = (News) session.load(News.class, new Integer(id));

//重新設置這個對象的標題

n.setTitle("更新後標題");

//用update方法更新這個對象

session.update(n);

session.getTransaction().commit();

} catch (HibernateException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}


public void delete()

{

try

{

Session session = Test.getSessionFactory().getCurrentSession();

session.beginTransaction();

//定義了要裝載對象的ID

Integer id = 6;

//用load方法裝載一個對象進來

News n = (News) session.load(News.class, new Integer(id));

//用delete方法刪除這個對象

session.delete(n);

session.getTransaction().commit();

} catch (HibernateException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

好啦,直接運行Test類看一下效果吧!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved