在resin3.0中配置hibernate2.1.2连mysql

 

在resin3.0中配置hibernate2.1.2连mysql

在resin3.0中配置hibernate2.1.2连mysql

Author : hamal

约定:

resin3 代表resin3.0的安装根目录

hibernate2 代表hibernate2.1.2的安装根目录

1.        在resin3下建立我们的web应用根,如resin3mydomain目录(mydomain的目录名可以随意取,之后在配置文件中配置即可)

2.        在resin3mydomain目录下分别建立resin3mydomainWEB-INFclasses目录和resin3mydomainWEB-INFlib目录。
这两个目录对应本web应用程序上下文的类装载器搜索路径(对于jar来说是resin3mydomainWEB-INFlib,对于class文件来说是resin3mydomainWEB-INFclasses)。我们把这两个路径分别称为应用库类路径(用于存放和本应用相关的jar类库)和上下文类路径(用于存放本应用的class文件和xml配置文件)。
另外还有一个路径是resin3lib目录,我们称该路径为全局库类路径(存放于resin3服务器上,供该服务器上所有web应用共享使用的相关jar类库)。

3.        本示例使用的是mysql数据库,所以我们将mysql的jdbc驱动jar包(mm.mysql-2.0.4-bin.jar)放入resin3lib目录中,之后该驱动将能被所有web应用所用。

4.      将hibernate2 hibernate2.jar文件拷贝到resin3mydomainWEB-INFlib 目录下,然后拷贝hibernate2lib 目录下必须的jar文件也拷贝到resin3mydomainWEB-INFlib 目录下。如果你不是很清楚哪些包是你所需要的,可以参看hibernate2libREADME.txt文件,或者,再简单一点,我们将hibernate2lib 目录下的所有jar文件都拷贝到resin3mydomainWEB-INFlib 目录下。

5.      现在我们开始配置resin的jdbc数据库连接池。修改resin3confresin.conf文件

a)      搜索webapps,将webapps替换为我们自定义的应用目录mydomain。

b)      查找<database>元素,取消该元素的注释状态,该文件的注释采用的是html风格的注释方式<!--  -->。

c)      将<database>元素修改为如下形式

<database>

      <jndi-name>jdbc/mysql</jndi-name>

      <driver type="org.gjt.mm.mysql.Driver">

        <url>jdbc:mysql://192.162.125.3:3306/mysql</url>

        <user>root</user>

        <password>12345678</password>

      </driver>

      <prepared-statement-cache-size>8</prepared-statement-cache-size>

      <max-connections>20</max-connections>

      <max-idle-time>30s</max-idle-time>

   </database>

如此resin的jdbc连接池配置完成。

6.      将hibernate2src目录下的hibernate.properties、log4j.properties、oscache.properties文件拷贝到resin3 mydomainWEB-INFclasses目录下。

7.      由于我们使用的是mysql数据库,所以修改hibernate.properties文件中关于mysql部分的配置,并注释掉原默认的HypersonicSQL配置。注释配置就是在语句前加 # 符号。如:

#hibernate.dialect net.sf.hibernate.dialect.HSQLDialect

下面是一个典型的mysql配置:

hibernate.dialect net.sf.hibernate.dialect.MySQLDialect

hibernate.connection.driver_class org.gjt.mm.mysql.Driver

hibernate.connection.driver_class com.mysql.jdbc.Driver

hibernate.connection.url jdbc:mysql://192.162.125.3:3306/mydb

hibernate.connection.username root

hibernate.connection.password 12345678

我们需要修改的就是下面3行:

url是指jdbc连接描述符,格式为jdbc:mysql://数据库IP:端口号/数据库名

username是指用于登陆该数据库的用户名

password该用户密码

8.      将hibernate和resin的数据库连接池绑定。在目录里创建一个hibernate.cfg.xml文件,文件内容如下

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="connection.datasource">java:comp/env/jdbc/mysql</property>

        <property name="show_sql">true</property>

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <!-- Mapping files -->

        <mapping resource="User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

该<session-factory>元素告诉hibernate使用resin中定义的jndi来连接数据库, <mapping>子元素用于描述每一个映射数据库表的配置文件路径,

其声明了User.hbm.xml是一个Hibernate XML映射文件,对应持久化类User。这个文件包含了把POJO类映射到数据库表(或多个数据库表)的元数据。我们稍后就回来看这个文件。让我们先编写这个POJO类,再看声明它的映射元数据。

9.      在mysql中建立user表该表的格式如下:

User_id    Password    Nick_name    E_mail
1            6666          hamal           hamal@sohu.com
2            6666          vampire        vampire@sina.com
3            6666          ande            ande@yahoo.com

在resin3 mydomainWEB-INFclasses目录下分别新建3个java文件:Test.java、HibernateUtil.java、User.java。

HibernateUtil.java源代码如下:该类是一个辅助类,用于获得一个静态的SessionFactory,SessionFactory负责一个数据库,也只对应一个XML配置文件(hibernate.cfg.xml)。

import net.sf.hibernate.*;

import net.sf.hibernate.cfg.*;

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();

    }

}

User.java 源代码如下:Hibernate让普通的Java对象(Plain Old Java Objects ,就是POJOs,有时候也称作Plain Ordinary Java Objects)变成持久化类。一个POJO很像JavaBean,属性通过getter和setter方法访问,对外隐藏了内部实现的细节。

public class User {

    private Integer id;

    private String nick;

    private String password ;

    private String email;

    public User() {

    }

    public Integer getId() {

        return id;

    }

    public void setId(Integer id) {

        this.id = id;

    }

    public String getNick() {

        return nick;

    }

    public void setNick(String nick) {

        this.nick = nick;

    }

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

    public String getEmail() {

        return email;

    }

    public void setEmail(String email) {

        this.email = email;

    }

}

Test.java 源代码如下:

import javax.naming.*;

import net.sf.hibernate.*;

import java.util.*;

public class Test{

  void Test(){

   

  }

  public static void insert(){

    try{   

      Session hSession = HibernateUtil.currentSession();

      Transaction tx= hSession.beginTransaction();

      

      User newp = new User();

      Integer id = new Integer("4");

      newp.setId(id);

      newp.setNick("love");

      newp.setPassword("123");

      newp.setEmail("test@sohu.com");

      

      hSession.save(newp);

      tx.commit();

      HibernateUtil.closeSession();

    }catch(Exception e){

      e.printStackTrace();

    }

  }

}

10.  编写Hibernate XML映射文件

在resin3 mydomainWEB-INFclasses目录下新建User.hbm.xml文件,文件内容如下:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping

    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

  <class name="User" table="user">

    <id name="id" type="java.lang.Integer">

      <column name="user_id" sql-type="Integer" not-null="true"/>

      <generator class="assigned"/>

    </id>

    <property name="password" type="java.lang.String">

      <column name="password" sql-type="varchar(20)"/>

    </property>

    <property name="nick" type="java.lang.String">

      <column name="nick_name" sql-type="varchar(50)"/>

    </property>

    <property name="email" type="java.lang.String">

      <column name="e_mail" sql-type="varchar(30)"/>

    </property>

  </class>

</hibernate-mapping>

简单说明:

<class name="User" table="user">元素中的name属性代表的是User类的全路径名(即包名+类名的形式),table属性代表的是该User类映射的数据库表名。

<id name="id" type="java.lang.Integer">元素代表该表的主键,name属性代表在User类中对应的类属性名。

<column name="user_id" sql-type="Integer" not-null="true"/>元素代表该id属性对应的数据库user表中的user_id字段。

11.  界面测试:

我们在resin3mydomain目录下新建一个test.jsp文件如下:

<%@ page contentType="text/html; charset=gb2312" %>

<html>

<head>

<title> This is a test! </title>

</head>

<body>

This is a test!

<%Test.insert();%>

</body>

</html>

12.  测试

好了,现在所有的准备工作都已经做完了,开始测试看看。

我们启动rensin服务器,启动文件为resin3binhttpd.exe,双击该文件即可。

在测试前我们看到的mysql中user表的内容如下。

User_id    Password    Nick_name    E_mail
1            6666          hamal           hamal@sohu.com
2            6666          vampire        vampire@sina.com
3            6666          ande            ande@yahoo.com

现在我们打开IE,在地址栏中输入http://localhost:8080/test.jsp

当界面上正常显示出This is a test!之后,我们再查看数据库内容如下:

User_id    Password    Nick_name    E_mail
1            6666          hamal           hamal@sohu.com
2            6666          vampire        vampire@sina.com
3            6666          ande            ande@yahoo.com
4            123            love            test@sohu.com

恭喜,你已经完成了本次示例!

时间: 2024-11-01 00:12:41

在resin3.0中配置hibernate2.1.2连mysql的相关文章

myeclipse8.0中配置ssh框架问题

问题描述 我尝试在myeclipse8.0中手动加入struts2,然后用ide生成spring,hibernate支持,最后部署运行都失败了,不知道为什么,真是奇怪啊,求myeclipse8.0中配置ssh的教程和文章! 解决方案 解决方案二: 你的strut2版本与hibernate.spring不匹配吧,还是用它自带的吧解决方案三: 考实例里面的配置文件!千万别自己写!!!解决方案四: 包会有冲突的,一般是asm的那几个,把版本比较旧的删掉

问下如何在MyEclipse7.0中配置web.xml 让它带自动提示struts标签功能

问题描述 问下如何在MyEclipse7.0中配置web.xml让它带自动提示struts标签功能那位高手知道帮解答下小弟万分感激!就是在web.xml中输入个<然后会提示 解决方案 解决方案二:问下如何在MyEclipse7.0中配置web.xml让它带自动提示struts标签功能那位高手知道帮解答下小弟万分感激!就是在web.xml中输入个<然后会提示解决方案三:其实很简单的:以spring2.0的配置文件为例(其他基本类似):进入:window->Preference...->

Eclipse3.0中配置SQLExplorer插件

sql SQLExplorer是Eclipse集成开发环境的一种插件,它可以被用来从Eclipse连接到一个数据库.SQLExplorer插件提供了一个使用SQL语句访问数据库的图形用户接口(GUI).通过使用SQLExplorer,你能够显示表格.表格结构和表格中的数据,以及提取.添加.更新或删除表格数据.SQLExplorer同样能够生成SQL脚本来创建和查询表格.所以,与命令行客户端相比,使用SQLExplorer可能是更优越的选择.在这篇指南中,我们将使用SQLExplorer插件建立一

如何在IIS 7.0中配置ASP.NET应用程序

如果 ASP.NET Web 应用程序以 IIS 7.0 为宿主,则可以用多种方式为该应用程序进行配置设置.这包括: 使用 IIS 管理器. 直接编辑 Web.config 文件.可以在 Visual Studio 或 Visual Web Developer 中或通过使用文本编辑程序完成此任务. 使用 IIS 7.0 命令行工具 (Appcmd.exe).使用此实用工具,可以指定 IIS 配置设置和 Web 应用程序配置设置. 使用 Windows Management Instrumenta

IIS6.0中配置php服务全过程解析_php技巧

虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP.ASP.ASP.NET.JSP.Perl 的 Web 虚拟主机服务器,还是用 Windows 2003 的 IIS 6 最好.网上有很多介绍在 IIS 6 上配置 PHP 的文章,但是那些方法不是性能不好,就是升级麻烦.下面的方法可以让你在第一次配置好后,能够非常方便的进行升级. 这里所说的升级,是指从某个 php4 版本升级到另一个 php4 版本,或者从某个 php5 版本升级到另一个 php5 版本,而不是指从 php4 升

在redhat9.0中配置apache 2.0

红帽创建于1993年,是目前世界上最资深的Linux和开放源代码提供商,同时也是最获认可的Linux品牌.基于开放源代码模式,我们为全球企业提供专业技术和服务.我们的解决方案包括红帽企业Linux操作平台,以及其他内容广泛的服务,如:咨询,24X7http://www.aliyun.com/zixun/aggregation/12867.html">技术支持和红帽网络(RHN).我们以订阅的商业模式向用户提供不间断的产品和服务.红帽在全球60多个地点提供培训课程,其中的RHCE认证已经成为

在Mac OS X 10.10.3中配置Apache + PHP + MySQL

网上的教程已经有很多,这里简洁的记录一下.以 Mac OS X Mavericks 10.10.3 为例. 先附上如何进入指定目录文件夹,按键盘 Command + Shift + G ,然后输入指定目录名即可. 工具/原料 以 Mac OS X Mavericks 10.10.3 为例. 一.启动 Apache 1 Mac OS X 系统已经集成了 Apache+PHP 环境,依次进入"系统偏好设置 -> 共享" ,开启"Web 共享",就可以打开 Apac

Windows Server 2008,IIS7.5中配置(安装)PHP+MySql运行环境全程实录

一.安装前准备好要用到的文件 mysql-essential-5.1.40-win32.msi (MySql数据库安装文件) php-5.2.0-Win32.zip(PHP代码解析器) phpMyAdmin-3.1.3.1-all-languages.zip(MySql数据库管理程序) WordPressURLRewrite-1.1.zip(WP的URL重写组件) ZendOptimizer-3.3.3-Windows-i386.exe(PHP加速器)   截图如下:   二.安装MySql  

VC++ 6.0 sqlite3 配置、测试

/************************************************************************************* * VC++6.0 sqlite3 配置.测试 * 声明: * 本文仅仅是为了测试VC++6.0中是否可以使用sqlite3数据库,主要用于完成后续的 * 一些需求. * * 2015-10-21 晴 深圳 南山平山村 曾剑锋 *************************************************