• 简单的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://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip

    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();
                    customer.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">

    <hibernate-mapping>
        <class name="Customer" table="CUSTOMER">
            <id name="id" column="CID">
                <generator class="increment" />
            </id>
            <property name="username" column="USERNAME" />
            <property 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" ?>

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

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

        <path id="myclasspath">
            <fileset dir="${lib.dir}">
                <include name="**/*.jar" />
            </fileset>
            <pathelement location="${build.dir}" />
        </path>

        <target name="init">
            <mkdir dir="${build.dir}" />
        </target>
        
        <target name="build" depends="init" description="compile the source files">
            <javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
            <copy todir="${build.dir}" >
                <fileset dir="${src.dir}" >
                    <exclude name="**/*.java"/>
                </fileset>
            </copy>
        </target>

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

        <target name="clean">
            <delete includeEmptyDirs="true">
                <fileset 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">

    <hibernate-configuration>
        
        <session-factory name="java:/hibernate/HibernateFactory">
            
            <property name="show_sql">true</property>
            <property name="connection.driver_class">
                oracle.jdbc.driver.OracleDriver <!-- 这里是Oracle 9i的JDBC driver class名 -->
            </property>
            <property name="connection.url">
                jdbc:oracle:oci8:@hibernate_test <!-- 这里是Oracle的hibernate_test数据库URL --> 
            </property>
            <property name="connection.username">
                你的数据库用户名
            </property>
            <property name="connection.password">
                你的数据库密码
            </property>
            <property name="dialect">
                net.sf.hibernate.dialect.Oracle9Dialect <!-- 这里是Oracle 9i的Dialect -->
            </property>
            
            <mapping 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描述文件里相应的值即可。


    结论

    此文是一篇门槛极低的入门介绍。我给一个完全不懂Hibernate的朋友看,他用了不到30分钟就运行了他的第一个Hibernate程序,从此引起了 他对Hibernate的兴趣。但读者必须认识到这只是一个开始,此文实乃窥Hibernate冰山一角上的一颗小冰晶。千里之行始于足下,你可以把此文 当作迈向Hibernate大道的一个起点。

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/pangguoming/p/5452377.html
Copyright © 2020-2023  润新知