zoukankan      html  css  js  c++  java
  • 最简单的历史Hibernate获得短暂的

    其实Hibernate本身就是一个单独的帧,不管它不需要web server或application server支持。

    然而,最Hibernate简介已经加入了非常多的非Hibernate事,例: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。

    这easy让人产生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一个出发点大道。



  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4587627.html
Copyright © 2011-2022 走看看