1.Window-Preferences-MyEclipse-Database Explorer-Database Drivers-DB Browser
2.在DB Browser窗口中 New... (新建Database Driver) Driver name:oracle9 Connection URL:jdbc:oracle:thin:@localhost:1521:HYGJ User name:scott Password:tiger Driver JARs:classes12.jar 此時在DB Browser窗口就會出現你剛新建的驅動 oracle9 3. 新建WEB工程:HibernateDemo 4.右鍵-MyEclipse-Add Hibernate Capabilities... Hibernate 3.1 保持默認就可以--Next--Next-- DataSource: Use JDBC Driver DB Driver:會提供可選擇使用的驅動,如剛建好的驅動:oracle9 以下的信息 你一看會填寫o(∩_∩)o... --Next-- Create SessionFactory class?不選中 --Finish 5.hibernate.cfg.xml中的部分代碼如下: ... <hibernate-configuration> <session-factory>
<property name="connection.username">scott</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:HYGJ</property> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="myeclipse.connection.profile">oracle9</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.password">tiger</property> </session-factory> </hibernate-configuration>
在數據庫中創建表:
create table login( username varchar(50) not null primary key, password varchar(20) not null ); 與數據庫對應的類pojo類 package com.hygj.furong.pojo; /** * pojo類---Login * @author lotus * @version 1.0 * 2008-10-11 */ public class Login { private String username; private String password; public String getPassword() { return password; } public Login() { super(); } public Login(String username, String password) { super(); this.username = username; this.password = password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } POJO類的名稱最好與表名稱一致 表:login POJO類名稱:Login 建立映射文件: 在DB Brower窗口,先打開連接:open connection 選擇您所使用的用戶,如:scott 選擇表:TABLE 選中剛建立的表Login 右鍵:選擇Hibernate Reverse Engineering... Java src folder:com.hygj.furong.pojo --Finish 此時在com.hygj.furong.pojo中就自動創建好了映射文件:Login.hbm.xml 部分代碼如下: ... <hibernate-mapping> //指定Login類與login表的映射 <class name="com.hygj.furong.pojo.Login" table="LOGIN" schema="LOTUS"> //name表示Login類中的屬性名字 //column表示表中字段的名字 //type類型 <id name="username" type="java.lang.String"> <column name="USERNAME" length="50" /> //主鍵的生成方式:此處是:指派,表示由用戶自行管理 <generator class="assigned" /> </id> //表示Login類中與表中其他字段的映射 //name:Login類中的屬性名稱 //column:表中的字段名稱 //type:類型 //not-null:不允許爲空 <property name="password" type="java.lang.String"> <column name="PASSWORD" length="20" not-null="true" /> </property> </class> </hibernate-mapping> 此時在hibernate.cfg.xml中添加了代碼: <mapping resource="com/hygj/furong/pojo/Login.hbm.xml" /> 然後寫操作Login類的類 package com.hygj.furong.logic; import java.util.Iterator;
import org.hibernate.Query;
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import java.util.List; import com.hygj.furong.pojo.Login;
/**
* 具體操作Hibernate的類實現增刪改查基本業務邏輯 * * @author lotus * @version 1.0 2008-10-10 * */ public class LoginLogic { /* * 在Hibernate中,所有操作都是通過Session完成此Session不同於JSP中的Session */ private Session session = null; private Transaction tran = null;
private Login login = null;
/*
* 實例化Session對象 */ public LoginLogic() { /** * 1.找到Hibernate配置 2.從配置中取出SessionFactory 3.從SessionFactory中取出Session */ Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); this.session = factory.openSession(); } /**
* 所有得操作都是通過Session進行的涉及到事物處理,一定要手動的提交事物 */ /**
* 添加用戶 * * @param login * 登陸對象 */ public void add(Login login) { // 通過Session獲取Transaction對象 tran = this.session.beginTransaction(); this.session.save(login); // 事物提交 tran.commit(); // 關閉session this.session.close(); } /**
* 修改用戶 * * @param login * 登陸對象 */ public void update(Login login) { // 通過Session獲取Transaction對象 tran = this.session.beginTransaction(); this.session.update(login); // 事物提交 tran.commit(); // 關閉session this.session.close(); } /**
* 刪除用戶使用此方法刪除數據前,必須先查詢到數據對象 * * @param login * 登陸對象 */ public void delete(Login login) { // 通過Session獲取Transaction對象 tran = this.session.beginTransaction(); this.session.delete(login); // 事物提交 tran.commit(); // 關閉session this.session.close(); } /**
* 在Hibernate3之中根據HQL中的語句進行了修改,增加了刪除指令 * * @param name * 主鍵 */ public void delete(String name) { String hql = "DELETE Login WHERE username=?"; Query query = this.session.createQuery(hql); // 設置參數 query.setString(0, "lotus"); // 執行更新語句 query.executeUpdate(); // 進行事物處理 tran = this.session.beginTransaction(); // 事物提交 tran.commit(); // 關閉session this.session.close(); } /**
* 按ID查詢:推薦使用HQL */ public Login queryById(String name) { // 使用Hibernate查詢語言 String hql = "FROM Login AS l WHERE l.username=?"; // 通過Query接口查詢 Query query = this.session.createQuery(hql); query.setString(0, name); Iterator iter = query.list().iterator(); if (iter.hasNext()) { login = (Login) iter.next(); } // 關閉session this.session.close(); return login; } /**
* 查詢所有記錄 */ public List queryAll() { List list = null; String hql = "FROM Login as l"; Query query = this.session.createQuery(hql); list = query.list(); // 關閉session this.session.close(); return list; } public List queryLike(String name) {
List list = null; String hql = "FROM Login as l WHERE l.username like ?"; Query query = this.session.createQuery(hql); query.setString(0, "%" + name + "%"); list = query.list(); // 關閉session this.session.close(); return list; } } 測試所寫的LoginLogci類中的方法: package com.hygj.furong.test; import java.util.Iterator;
import java.util.List; import com.hygj.furong.logic.LoginLogic;
import com.hygj.furong.pojo.Login; /**
* PO類測試類 * * @author lotus * */ public class TestPO { /** * 生成POJO類實例化對象 * */ public static void testLogic() { /** * 測試添加方法 */ /* Login login = new Login("furong","furong"); new LoginLogic().add(login); */ /**
* 測試按id查詢方法 */ /* Login login1 = new LoginLogic().queryById("lotus"); System.out.println(login1.getUsername()); */ /** * 測試查詢所有方法 */ /* List list = new LoginLogic().queryAll(); Iterator iter = list.iterator(); while (iter.hasNext()) { Login login = (Login) iter.next(); System.out.println("username:" + login.getUsername()); } */ /** * 測試模糊查詢 */ /* List list = new LoginLogic().queryLike("a"); Iterator iter = list.iterator(); while (iter.hasNext()) { Login login = (Login)iter.next(); System.out.println("username:" + login.getUsername()); } */ } public static void main(String[] args) {
TestPO.testLogic(); } }
如果要查看執行的sql語句,在hibernate.cfg.xml中添加如下代碼: <property name="show_sql">true</property> |