史上最简单的Hibernate入门简介

解放双手!利用海康VM全局脚本+通讯管理打造自动化视觉控制系统 本文深入探讨了如何利用海康VisionMaster(VM)的全局脚本和通讯管理功能,打造高效自动化视觉控制系统。通过全局变量实现数据共享与动态调整,结合多协议通讯管理,提升系统响应速度与智能化水平,适用于工业4.0环境下的复杂视觉检测与决策场景。 阅读详情
其实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大道的一个起点。



解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题 阅读详情

相关推荐

Java中Hibernate框架的多数据库支持配置

在企业级应用开发中,支持多数据库环境是常见需求。Hibernate作为Java持久化层的核心框架,通过标准化的ORM(对象关系映射)机制屏蔽底层数据库差异。数据库方言(Dialect)的工作原理与配置方法多数据源(DataSource)的管理策略连接池(Connection Pool)的优化配置跨数据库事务处理与隔离级别设置传统XML配置与Spring Boot自动配置的差异对比背景介绍:明确技术目标与核心概念核心概念与联系:剖析数据库方言、数据源、连接池的架构关系配置原理与实现步骤。

AI开发架构师 1223

Hibernate支持哪些技术和数据库

Hibernate 简介 简介 Hibernate 是由 Gavin King 于 2001 年创建的开放源代码的对象关系框架。它强大且高效的构建具有关系对象持久性和查询服务的 Java 应用程序。 Hibernate 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。 Hibernate 是传统 Ja...

qq_36760873的博客 1549

电网络理论习题解.pdf

电网络理论习题解.pdf

扩展 Hibernate 对各类数据源支持

本文将介绍两种如何在 Hibernate 项目中使用自定义数据源的方法。Hibernate内嵌了对C3P0,Proxool,JNDI数据源等数据库连接池的支持。但当我们需要使用除了这几个数据源外的其他数据源的时候就有问题了,例如我们需要用Apache的开源连接池项目DBCP,或者说我们想要使用多数JDBC驱动程序中自带的XxxxDataSource时,Hibernate就没有提供对这方面的支持

在水一方 919

Hibernate

Hibernate,是什么】Hibernate 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象。 Hibernate,功能】 Hibernate 所支持的数据库Hibernate 支持几乎所有的主要 RDBMS,如MySQL、OracleHibernate,支持的技术】XDoclet Spr

Abner's Technology Blog 3413

Hibernate01-入门

一、搭建Hibernate环境 1、Hibernate框架简介 Hibernate是数据持久化工具,也是一个开放源代码的ORM解决方案。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。 Hibernate是ORM解决方案 :基于ORM,Hibernate在对象模型和关系数据库的表之间建立了一座桥梁。通过Hibernate,程序员就不需要再使...

weixin_43094361的博客 560

Spring整合Hibernate

1 概述 Spring支持大多数流行的ORM框架,包括Hibernate、JDO、TopLink、Mybatis和JPA。 Spring对这些ORM框架的支持是一致的,因此可以把和Hibernate整合技术应用到其他ORM框架上. Spring 2.0同时支持Hibernate 2.x和3.x。但Spring 2.5只支持Hibernate 3.1或更高版本。 对于Hibernate而言,必须从原生的Hibernate API中构建SessionFactory。 此外,应用程序也无法利用Sprin

naumy的博客 775

学习史上最简单Hibernate入门简介有感

一直想学hibernate,感觉很神秘。下面这个例子让我改变了想法。我要努力!!史上最简单Hibernate入门简介 其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDo

Arqui Standard 1633

史上最简单Hibernate入门简介 doodoofish [原作]

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

笑看人参----JAVA,WEB2.0,SOA... 2041

Hibernate 中配置各种数据库

hibernate 中,可以配置很多种数据库,例如 MySql 、 Sql Server 和 Oracle 。下面介绍几个主要的数据库 1. MySql 连接配置 MySql 数据库hibernate 连接设置,在 hibernate.cfg.xml 文件中 各属性的配置 --> —为 true 表示将 Hibernate

liupeng900605的专栏 782

Hibernate 下载、安装和使用

一、下载 Hibernate 下载地址:http://hibernate.org/orm/downloads/ 二、将解压缩路径中 lib 路径下的 required、jpa 子目录下所有 JAR 包添加到应用的类加载路径中。(数据库操作别忘了加入 JDBC 驱动) 三、Hibernate数据库操作     1. 低侵入式设计  PO (persistant 

liuyinghui523的专栏 1497

Hibernate - 基础入门详解

【1】什么是Hibernate 一个框架,一个Java领域的持久化框架,一个ORM框架。 ① 什么是对象的持久化 狭义的理解,“持久化”仅仅指把对象永久保存到数据库中。 广义的理解,“持久化”包括和数据库相关的各种操作: 保存:把对象永久保存到数据库中。 更新:更新数据库中对象(记录)的状态。 删除:从数据库中删除一个对象。 查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载...

小小默:进无止境 2806

Hibernate概览

这篇博客不是写什么技术性的文章,只是想着,接触Hibernate那么久了,也看了一些资料,敲了些代码,现在想整理一下Hibernate在我的知识体系里面处在一个什么样的位置上,对知识应该有一个整体的认识才好。 Hibernate是什么? Hibernate是一个开源的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。 Hibernat

孙晴 1247
上一篇: Java陷阱一箩筐----面试题集
下一篇: Eclipse迎来新时代, 全面支持C++
doodoofish
博客等级 码龄24年 73粉丝 23原创
评论 116
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值