ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何在oracle as上面配置测试hibernate

如何在oracle as上面配置测试hibernate

原创 Linux操作系统 作者:wzy25 时间:2019-06-21 20:03:06 0 删除 编辑
介绍如何在oracle as下面部署hibernate,以及简单的程序开发测试
在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间
的。Hibernate 是一个面向Java 环境的对象/关系数据库映射工具。对象/关系数据库映射
(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射
到基于SQL 的关系模型结构中去。
Hibernate 不仅仅管理Java 类到数据库表的映射,还提供数据查询和获取数据的方法,可以大
幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。Hibernate 的目标是对于开发者通常的
数据持久化相关的编程任务,解放其中的95%。


初始环境说明如下
os redhat 3.0 update 2
ias 10g 9.0.4


1.下载 3.0
https://sourceforge.net/project/sho...ckage_id=127784



2.解开hibernate

把lib下面的 jar放到 yourwebapp/WEB-INF/lib下面
把hibernate3.jar放到 yourwebapp/WEB-INF/lib下面




3.
配置 yourwebapp/WEB-INF/classes/hibernate.cfg.xml



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



TxLife
true
org.hibernate.dialect.Oracle9Dialect
<!-- Mapping files -->





其中TxLife是用的ias中配置的data-source,详细的配置方法可以参考我得as10g系列精华文章。

设置 show_sql=true可以把hibernate自动生成的sql显示出来,便于调试。

Wzy.hbm.xml 是下面需要配置的o/r mapping的文件,用来配置表和class的关联关系。

4.配置map文件

yourwebapp/WEB-INF/classes/Wzy.hbm.xml


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






<!-- A cat has to have a name, but it shouldn' be too long. -->






wzy.Wzy表示我下面需要写的POLO的java程序。
id代表主建,type表示hibernate中数据类型。
column代表表的column名字。
generator 表示该column采用hibernate的 uuid.hex 进行生成。


5.配置ias data-source
$ORACLE_HOME/j2ee/home/data-sources.xml





<!--
An example/default DataSource that uses
Oracle JDBC-driver to create the connections.
This tag creates all the needed kinds
of data-sources, transactional, pooled and EJB-aware sources.
The source generally used in application code is the "EJB"
one - it provides transactional safety and connection
pooling. Oracle thin driver could be used as well,
like below.
url="jdbc:oracle:thin:@host:port:sid"
-->

class="com.evermind.sql.DriverManagerDataSource"
name="TxLife"
location="TxLife"
xa-location="jdbc/xa/OracleXADS"
ejb-location ="TxLife"
connection-driver="oracle.jdbc.driver.OracleDriver"
username="username"
password="password"
inactivity-timeout="300"
min-connections="30"
max-connections="30"
url="jdbc:oracle:thin:@ip_of_dbserver:1521:SID"
/>



ejb-location 是hibernate.cfg.xml需要配置到的jndi名字。



6.相关程序

POLO程序

package wzy;

public class Wzy {
private String name;
private String id;


public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name ;
}
public void setName(String name) {
this.name = name;
}
}

这个文件实现对对应表的每个字段进行存取,对应的get和set方法会自动由hibernate生成相应的sql。



公共程序
该程序的主要目的就是获得hibernate的SessionFactory(代表一个数据库),以便其他程序可以方便的使用hibernate。

package wzy;
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.apache.log4j.*;

public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {//通过hibernate.cfg.xml获得SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
//保存已经获得数据库联接。
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
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();
}

}

测试用jsp

<%
org.hibernate.Session sess=wzy.HibernateUtil.currentSession();
org.hibernate.Transaction tx=sess.beginTransaction();
wzy.Wzy princess = new wzy.Wzy();
princess.setName("Princess");
sess.save(princess);
tx.commit();
wzy.HibernateUtil.closeSession();
%>


jsp放到 yourwebapp下面

wzy.Wzy和HibernateUtil编译后放到 yourwebapp/WEB-INF/classes下面




7.建表


SQL> desc wzy;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID VARCHAR2(32) Y
NAME VARCHAR2(10) Y


8.测试

通过访问[url]http://your_ias_server:port/yourwebapp/w.jsp[/url]
就可以在后台看到有hibernate的log以及相关的sql输出,同时在数据库中能够查到通过hibernate插入的数据。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3618/viewspace-485521/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2001-12-14

  • 博文量
    1011
  • 访问量
    763024