hibernate中配置oracle数据库,在Hibernate中配置Oracle数据库方法

Oracle相关配置参数

我在Oracle中建立了一个单独的用户:HD,设置其密码为:abc。为该用户分配好相应的数据库空间, 细致的配置方法和信息不再多说,总之你需要得到类似下面的信息以备开发时所使用:

机器地址:hdibm(因为是在本机还可以使用localhost和127.0.0.1,如果是另一台机器使用该机器的IP地址)

oracle的侦听端口:1521

数据库实例名:hdorc

访问用户名:hd

访问密码:abc

要注意的是要给HD用户分配至少Connect的角色。另外在他所使用的表空间中分配足够或是无限制的限额大小,否则在开发时都会遇到问题。 除这些之外

还需要你从安装的Oracle或Oracle网站上下载最新的JDBC包,它有两个包,其中一个是与JDK相关的驱动,另一个是多语言支持包(这里我们不

使用OCI的驱动,使用Thin的驱动)。 因为我使用的JDK为1.4所以驱动包我使用了 ojdbc14.jar ,JDK1.4使用的多语言支持包与JDK1.2相同都是 nls_charset12.jar 。

在数据库中我们建立一些表以用于程序开发,以一个简单的用户管理为例我们先建立一个简单的用户表(sysuser):

表名:sysuser

用户ID:userid(vchar:32)

用户名:username(vchar:20)

用户密码:userpasword(vchar:20)

用户最后登录时间:lastlogin(date)

你也可以使用这个sql语句来创建表:

CREATE TABLE "HD"."SYSUSER" ("USERID" VARCHAR2(32) NOT NULL,

"USERNAME" VARCHAR2(20) NOT NULL, "USERPASWORD" VARCHAR2(20)

NOT NULL, "LASTLOGIN" DATE, PRIMARY KEY("USERID"),

UNIQUE("USERNAME"))

TABLESPACE "USERS"

驱动名称:Oracle Thin Driver

驱动程序包名:浏览选择你的ojdbc14.jar文件

驱动程序类:oracle.jdbc.driver.OracleDriver

动程序前

缀:jdbc:oracle:thin: ; @ ; // ; [: ; ] / ; (这

里是最新的驱动的URL书写方法,具体的最好看一下相关Oracle驱动的有关URL的说明)

配置好驱动程序后我们来增加一个数据库连接:

这里:

数据库连接名:HDTestDB

驱动名称:Oracle Thin Driver(就是在上面我们建立的)

驱动程序类:oracle.jdbc.driver.OracleDriver

数据库连接:jdb c:oracle:thin:hd@abc//hdibm:1521/hdorc

用户名:hd

密码:abc

将之前准备好的Oracle驱动包也加入到Web项目中。主要是这两个文件:

nls_charset12.jar

ojdbc14.jar

配置Hibernate的配置文件

配置Hibernate数据库连接配置

数据库的连接配置很简单,在项目的 src目录 下建立一个xml文件,名为 hibernate.cfg.xml 。这个文件的内容为:

hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

net.sf.hibernate.dialect.Oracle9Dialect

oracle.jdbc.driver.OracleDriver

hd

abc

jdbc:oracle:thin:@localhost:1521:hdorc

1

25

50

30

true

我们对这里的各个property元素一一说明:

dialect:使用了Oracle9的对照

connection.driver_class:Oracle的JDBC驱动类名

connection.username:Oracle数据库访问用户名

connection.password:Oracle数据库访问密码

connection.url:Oracle数据库访问URL

connection.pool.size:数据库连接池大小

statement_cache.size:JDBC statement缓冲大小

jdbc.fetch_size:设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数

jdbc.batch_size:设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小

show_sql:设定是否在控制台上显示向数据库提交的SQL语句,在开发调试时比较有用

下面是在com.huangdong.demo.dao包中生成SysUser类和SysUser.hb.xml文件。

由于在Java中使用java.util.Date有很多不方便的地方,所以我将lastlogin的映射后的java属性改为了calendar。

这是修改后的SysUser.hbm.xml文件:

hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

这是修改后的SysUser.java文件:

package com.huangdong.demo.dao;

import java.io.Serializable;

import org.apache.commons.lang.builder.EqualsBuilder;

import org.apache.commons.lang.builder.HashCodeBuilder;

import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */

public class SysUser implements Serializable {

/** identifier field */

private String userid;

/** persistent field */

private String username;

/** persistent field */

private String userpasword;

/** nullable persistent field */

private java.util.Calendar lastlogin;

/** full constructor */

public SysUser(java.lang.String username, java.lang.String userpasword, java.util.Calendar lastlogin) {

this.username = username;

this.userpasword = userpasword;

this.lastlogin = lastlogin;

}

/** default constructor */

public SysUser() {

}

/** minimal constructor */

public SysUser(java.lang.String username, java.lang.String userpasword) {

this.username = username;

this.userpasword = userpasword;

}

public java.lang.String getUserid() {

return this.userid;

}

public void setUserid(java.lang.String userid) {

this.userid = userid;

}

public java.lang.String getUsername() {

return this.username;

}

public void setUsername(java.lang.String username) {

this.username = username;

}

public java.lang.String getUserpasword() {

return this.userpasword;

}

public void setUserpasword(java.lang.String userpasword) {

this.userpasword = userpasword;

}

public java.util.Calendar getLastlogin() {

return this.lastlogin;

}

public void setLastlogin(java.util.Calendar lastlogin) {

this.lastlogin = lastlogin;

}

public String toString() {

return new ToStringBuilder(this)

.append("userid", getUserid())

.toString();

}

public boolean equals(Object other) {

if ( !(other instanceof SysUser) ) return false;

SysUser castOther = (SysUser) other;

return new EqualsBuilder()

.append(this.getUserid(), castOther.getUserid())

.isEquals();

}

public int hashCode() {

return new HashCodeBuilder()

.append(getUserid())

.toHashCode();

}

}

编写数据库连接获取类我们编写一个单独的类,用于从SessionFactory中获取数据库连接session。这个类名为HibernateUtil,我们将其放于com.huangdong.demo.util包中,具体的代码如下:

package com.huangdong.demo.util;

import net.sf.hibernate.HibernateException;

import net.sf.hibernate.Session;

import net.sf.hibernate.SessionFactory;

import net.sf.hibernate.cfg.Configuration;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {

try {

sessionFactory =

new Configuration().configure().buildSessionFactory();

} catch (HibernateException ex) {

throw new RuntimeException(

"Exception building SessionFactory: " + ex.getMessage(),

ex);

}

}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession() throws HibernateException {

Session s = (Session) session.get();

// Open a new Session, if this Thread has none yet

if (s == null) {

s = sessionFactory.openSession();

session.set(s);

}

return s;

}

public static void closeSession() throws HibernateException {

Session s = (Session) session.get();

session.set(null);

if (s != null)

s.close();

}

}

我们为该类加入一个向数据库中增加数据的方法:public boolean TestAdd() {

try {

Session session = HibernateUtil.currentSession();

Transaction tx = session.beginTransaction();

SysUser user = new SysUser();

user.setUsername("丫丫");

user.setUserpasword("uhkuhkqepdwqi");

user.setLastlogin(Calendar.getInstance());

session.save(user);

tx.commit();

HibernateUtil.closeSession();

} catch (HibernateException e) {

e.printStackTrace();

return false;

}

return true;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值