ホームページ php教程 php手册 在resin3.0中配置hibernate2.1.2连mysql

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

Jun 13, 2016 am 10:06 AM
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)      查找元素,取消该元素的注释状态,该文件的注释采用的是html风格的注释方式

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



      jdbc/mysql

      

        jdbc:mysql://192.162.125.3:3306/mysql

        root

        12345678

      


      8

      20

      30s

   


如此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文件,文件内容如下



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

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



   

        java:comp/env/jdbc/mysql

        true

        net.sf.hibernate.dialect.MySQLDialect

        

        

   




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

其声明了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文件,文件内容如下:





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

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







  

   

      

      

   




   

      

   




   

      

   




   

      

   


  








简单说明:

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

元素代表该表的主键,name属性代表在User类中对应的类属性名。

元素代表该id属性对应的数据库user表中的user_id字段。





11.  界面测试:

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









This is a test!





This is a test!











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


恭喜,你已经完成了本次示例!
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

ビッグ データ構造の処理スキル: チャンキング: データ セットを分割してチャンクに処理し、メモリ消費を削減します。ジェネレーター: データ セット全体をロードせずにデータ項目を 1 つずつ生成します。無制限のデータ セットに適しています。ストリーミング: ファイルやクエリ結果を 1 行ずつ読み取ります。大きなファイルやリモート データに適しています。外部ストレージ: 非常に大規模なデータ セットの場合は、データをデータベースまたは NoSQL に保存します。

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

MySQL クエリのパフォーマンスは、検索時間を線形の複雑さから対数の複雑さまで短縮するインデックスを構築することで最適化できます。 PreparedStatement を使用して SQL インジェクションを防止し、クエリのパフォーマンスを向上させます。クエリ結果を制限し、サーバーによって処理されるデータ量を削減します。適切な結合タイプの使用、インデックスの作成、サブクエリの使用の検討など、結合クエリを最適化します。クエリを分析してボトルネックを特定し、キャッシュを使用してデータベースの負荷を軽減し、オーバーヘッドを最小限に抑えます。

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL データベースをバックアップおよび復元するには、次の手順を実行します。 データベースをバックアップします。 mysqldump コマンドを使用して、データベースを SQL ファイルにダンプします。データベースの復元: mysql コマンドを使用して、SQL ファイルからデータベースを復元します。

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

MySQLテーブルにデータを挿入するにはどうすればよいですか?データベースに接続する: mysqli を使用してデータベースへの接続を確立します。 SQL クエリを準備します。挿入する列と値を指定する INSERT ステートメントを作成します。クエリの実行: query() メソッドを使用して挿入クエリを実行します。成功すると、確認メッセージが出力されます。

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するには: PDO または MySQLi 拡張機能を使用して、MySQL データベースに接続します。ストアド プロシージャを呼び出すステートメントを準備します。ストアド プロシージャを実行します。結果セットを処理します (ストアド プロシージャが結果を返す場合)。データベース接続を閉じます。

PHP を使用して MySQL テーブルを作成するにはどうすればよいですか? PHP を使用して MySQL テーブルを作成するにはどうすればよいですか? Jun 04, 2024 pm 01:57 PM

PHP を使用して MySQL テーブルを作成するには、次の手順が必要です。 データベースに接続します。データベースが存在しない場合は作成します。データベースを選択します。テーブルを作成します。クエリを実行します。接続を閉じます。

Oracleデータベースとmysqlの違い Oracleデータベースとmysqlの違い May 10, 2024 am 01:54 AM

Oracle データベースと MySQL はどちらもリレーショナル モデルに基づいたデータベースですが、Oracle は互換性、スケーラビリティ、データ型、セキュリティの点で優れており、MySQL は速度と柔軟性に重点を置いており、小規模から中規模のデータ セットに適しています。 ① Oracle は幅広いデータ型を提供し、② 高度なセキュリティ機能を提供し、③ エンタープライズレベルのアプリケーションに適しています。① MySQL は NoSQL データ型をサポートし、② セキュリティ対策が少なく、③ 小規模から中規模のアプリケーションに適しています。

See all articles