zoukankan      html  css  js  c++  java
  • Hibernate快速入门

    其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。

      在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安装过程以及最基本的功能,从而给初学者一个低得不能再低的入门门槛。

      下载文件

      你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。

      1、Hibernate包下载地址:
      http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

      2、Ant包下载地址:
      http://archive.apache.org/dist/ant/

      3、JDBC Driver要根据你用的database来定,一般database官方网站上都会有。Hibernate支持常用的database,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver:

      Oracle JDBC Driver下载地址(下载前必须同意Oracle协议书)
      http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

      MySQL JDBC Driver下载地址
      http://dev.mysql.com/downloads/connector/j/3.0.html

      PostgreSQL JDBC Driver下载地址
      http://jdbc.postgresql.org/download.html

      MS-SQL Server JDBC Driver下载地址
      http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en

      4、将Hibernate包和Ant包分别解压至c:\dev\下(此目录不重要,你可以换其它任何目录)。

      配置环境

      1、你需要添加一个新的环境变量: ANT_HOME,让它指向c:\dev\<的ANT包所在目录>并在PATH环境变量里添加%ANT_HOME%\bin。

      2、你需要添加一个新的环境变量: JAVA_HOME,让它指向你的j2sdk根目录。并在PATH环境变量里添加%JAVA_HOME%\bin。

      3、创建一个项目ā?目录,比如c:\workspace\My1stHibernate。

      在项目目录下,另外创建三个目录: src, classes, lib。

      在lib目录下,创建两个目录: hibernate和db。

      这样你有了如下的文件结构:

      c:\workspace\My1stHibernate\
      c:\workspace\My1stHibernate\src
      c:\workspace\My1stHibernate\classes
      c:\workspace\My1stHibernate\lib
      c:\workspace\My1stHibernate\lib\hibernate
      c:\workspace\My1stHibernate\lib\db

      4、将c:\dev\<的Hibernate包所在目录>hibernate2.jar文件copy到c:\workspace\My1stHibernate\lib\hibernate下。

      将c:\dev\<的Hibernate包所在目录>lib\下的所有文件同样copy到c:\workspace\My1stHibernate\lib\hibernate下。

      将你的JDBC Driver文件(一般是一个jar文件)copy到c:\workspace\My1stHibernate\lib\db下。

      创建数据库

      1、用你最喜爱的database软件,创建一个hibernate_test的数据库。

      2、在此数据库下,新建一个table名为CUSTOMER

    CREATE TABLE CUSTOMER
    (
     CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12)
    );

      编写Java文件

    public class Customer {
     private int id;
     private String username;
     private String password;

     public int getId() {
      return id;
     }

     public String getPassword() {
      return password;
     }

     public String getUsername() {
      return username;
     }

     public void setId(int id) {
      this.id = id;
     }

     public void setPassword(String password) {
      this.password = password;
     }

     public void setUsername(String username) {
      this.username = username;
     }

    }

      将此类存为c:\workspace\My1stHibernate\src\Customer.java文件。

      编写Test类

    import net.sf.hibernate.*;
    import net.sf.hibernate.cfg.*;

    public class Test {

     public static void main(String[] args) {
      try {
       SessionFactory sf = new Configuration().configure().buildSessionFactory();
       Session session = sf.openSession();
       Transaction tx = session.beginTransaction();

       for (int i = 0; i <200; i++) {
        Customer customer = new Customer();
        custoā?mer.setUsername("customer" + i);
        customer.setPassword("customer");
        session.save(customer);
       }

       tx.commit();
       session.close();
      } catch (HibernateException e) {
       e.printStackTrace();
      }
     }
    }

      将此类存为c:\workspace\My1stHibernate\src\Test.java文件。

      创建Hibernate映射文件

      因为这里只有一个Class --- Customer 和一个Table --- CUSTOMER,你只需要建立一个映射文件--- Customer.hbm.xml,来对应Customer类和CUSTOMER表之间的关系。

    <xml version="1.0"?>
    <DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

    <ibernate-mapping>
    <lass name="Customer" table="CUSTOMER">
    <d name="id" column="CID">
    <enerator class="increment" />
    <id>
    <roperty name="username" column="USERNAME" />
    <roperty name="password" column="PASSWORD" />
    <class>
    <hibernate-mapping>

      把此文件存为c:\workspace\My1stHibernate\src\Customer.hbm.xml,和Customer.java放在同一目录下。

      编写Ant build.xml文件

      你不一定要知道这个build.xml的细节,其实Ant也不是Hibernate所必须的。这里用Ant是为了简化一些任务,比如: 编译、copy、运行,等。

    <xml version="1.0" ?>

    <roject name="My1stHibernate" default="build" basedir=".">

    <roperty name="base.dir" value="." />
    <roperty name="src.dir" value="src" />
    <roperty name="lib.dir" value="lib" />
    <roperty name="build.dir" value="classes" />

    <ath id="myclasspath">
    <ileset dir="${lib.dir}">
    <nclude name="**/*.jar" />
    <fileset>
    <athelement location="${build.dir}" />
    <path>

    <arget name="init">
    <kdir dir="${build.dir}" />
    <target>

    <arget name="build" depends="init" description="compile the source files">
    <avac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
    <opy todir="${build.dir}" >
    <ileset dir="${src.dir}" >
    ā?<xclude name="**/*.java"/>
    <fileset>
    <copy>
    <target>

    <arget name="run" depends="build">
    <ava classpathref="myclasspath" classname="Test" fork="true" />
    <target>

    <arget name="clean">
    <elete includeEmptyDirs="true">
    <ileset dir="${build.dir}" />
    <delete>
    <target>

    <project>

      配置Hibernate描述文件

      Hibernate描述文件可以是一个properties或xml 文件,其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的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">

    <ibernate-configuration>

    <ession-factory name="java:/hibernate/HibernateFactory">

    <roperty name="show_sql">rue<property>
    <roperty name="connection.driver_class">
    oracle.jdbc.driver.OracleDriver <-- 这里是Oracle 9i的JDBC driver class名 -->
    <property>
    <roperty name="connection.url">
    jdbc:oracle:oci8:@hibernate_test <-- 这里是Oracle的hibernate_test数据库URL -->
    <property>
    <roperty name="connection.username">
    你的数据库用户名
    <property>
    <roperty name="connection.password">
    你的数据库密码
    <property>
    <roperty name="dialect">
    net.sf.hibernate.dialect.Oracle9Dialect <-- 这里是Oracle 9i的Dialect -->
    <property>

    <apping resource="Customer.hbm.xml" /><-- 指定Customer的映射文件 -->

    <session-factory>

    <hibernate-configuration>

      如果你用的不是Oracle 9i,可到C:\dev\<的Hibernate包所在目录>src\hibernate.properties文件里找到你的数据库,然后替换以上相对应的值。

      开始运行

      到c:\workspace\My1stHibernate下,运行ant run。如果你严格依照以上步骤,应该看到

    run:
    [java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
    [java] log4j:WARN Please initialize the log4j system properly.
    [java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
    BUILD SUCCESSFUL

      到你的hibernate_test数据库看一下,在CUSTMOR表里新添了200条记录,但你没有写任何JDBC code。

      以后如果你要更换数据库,只需要改变hibernate.cfg.xml描述文件里相应的值即可。

    (转载文章请保留出处:Java家(www.javajia.com))
  • 相关阅读:
    springmvc
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
    HDU 1815 Building roads
    CDOJ UESTC 1220 The Battle of Guandu
    HDU 3715 Go Deeper
    HDU 3622 Bomb Game
    POJ 3207 Ikki's Story IV
    POJ 3648 Wedding
    HDU 1814 Peaceful Commission
  • 原文地址:https://www.cnblogs.com/fengye/p/647310.html
Copyright © 2011-2022 走看看