MyEclipse中Hibernate连接Oracle的配置

本文介绍如何在MyEclipse中配置Oracle数据库驱动,并使用Hibernate进行数据库操作。包括配置数据库驱动、创建Hibernate项目、配置Hibernate.cfg.xml文件、创建表及POJO类、生成映射文件、编写操作类及测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值