MyEclipse-Hibernate_Oracle

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>
爲了您的安全,請只打開來源可靠的網址
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章