• 002---第一个Hibernate示例


    Hibernate压缩文件结构

    下载Hibernate压缩文档,下面为文件结构:

    Hibernate3.jar:为Hibernate的核心jar包;

    build.xml:重新打包配置文件

    build.bat:运行在windows系统中打包;

    build.sh:运行在Unix系统上打包;

    doc:Hibernate API文档

    eg:一个简单的实例

    etc:Hibernate中需要使用的配置文件的模板

    lib:Hibernate所需要使用的一些Jar包

    src:Hibernate的源代码

    test:测试代码(单元测试代码)

    搭建Hibernate的使用环境:

    1、   建立项目(我们这里建立Java Project)

    例:hibernate_first

    2、   引入hibernate所需要的jar包

    利用User Library库引入jar包,以后项目如何需要使用这此jar包,只要引入这个库就可以了。

    方法:

    第一步: window→Preferences → Java → Build Path → User Libraries → “New” 按钮→ 然后输入库名→点击“OK”

    第二步:加入所需要的JAR包:点击“Hibernate3”项→“Add JARs…”按钮→在弹出的对话框选择需要的JAR包(hibernate3.jar、lib目录下的所有JAR包),还有数据库的JDBC驱动(例如Mysql驱动)

    为项目引入hibernate JAR

    右键项目→Properties→Java Build Path→右边点击”Libraries”选项卡→“Add Library…”按钮→User Library→”next”按钮→选中我们刚刚建的”Hibernate3 JAR库”→Finish→OK

    1、   创建Hibernate的配置文件(hibernate.cfg.xml)

    Hibernate支持两个格式的配置文件:hibernate.properties(不常用)和hibernate.cfg.xml(建意使用)

    将hibernate.cfg.xml文件复制到ClassPath的根下(src目录下)(hibernate.cfg.xml位于hibernate_home/etc目录下)

    <session-factory>

            <!--

                具体的配置信息可参见hibernate_home/etc/hibernate.properties相关配置项

                如何要移植数据时,只要将下面数据库信息修改就可以了。

             -->

            <!-- 配置mysql数据库连接串 -->

            <property name="hibernate.connection.url">jdbc:mysql://localhost:3036/hibernate_first</property>

            <!-- 配置mysql数据库jdbc驱动 -->

            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

            <!-- 配置mysql数据库连接用户名 -->

            <property name="hibernate.connection.username">root</property>

            <!-- 配置mysql数据库连接用户密码 -->

            <property name="hibernate.connection.password">root</property>

            <!--配置数据库适配器(使用何中数据库)-->

            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

             <!-- 是否显示hibernate的SQL语句 -->

            <property name="hibernate.show_sql">true</property>

          <!-- 实体类导出至数据库时,如果存在的表处理方式:

                hibernate.hbm2ddl.auto :(create-drop、create、update、validate)

             -->

            <property name="hibernate.hbm2ddl.auto">update</property>

       

     

    <!-- 配置实体类映射文件 位于property之后

                映射文件要求为完整路径,目录之前使用/隔开

    -->

           <mapping resource="com/wjt276/hibernate/User.hbm.xml"/>

     

    </session-factory>

    1、   创建日志的配置文件(log4j.properties),为了便于调试最好加入log4j配置文件

    将模板文件复制到ClassPath根下(src目录下)

    为了不需要多于的提示信息,可以将此配置文件中一些配置项取消了。但要保留log4j.rootLogger=warn, stdout

    2、   定义实体类

    (Hibernate先定义实体类,再生成表)

    例如:User实体类

    3、   定义User类的映射文件(重要、关键)—User.hbm.xml

    映射文件可位于任何位置,但一般位于实体类同一目录下。

    映射文件是描述实体类和实体类的属性的。

    源数据:描述实体类及实体类属性之间的关系的。

    映射类标签:<classs></class>

    <!--

            class标签 实体类映射到数据表

            * name属性:实体类的完整路径

            * table属性:实体类映射到数据库中的表名,如果省略,则为实体类的类名称

        -->

        <class name="com.wjt276.hibernate.User" table="t_user">

            <!-- 映射数据库主键 映射到数据表中的字段名默认为类属性名,但可以利用column重新指定-->

            <id name="id" column="id">

                <!-- generator设置主键生成策略

                    uuid:一万年内生成唯一的字符串

                -->

                <generator class="uuid"/>

            </id>

            <!-- property 映射普通属性  映射到数据表中的字段名默认为类属性名,但可以利用column重新指定-->

            <property name="name" column="name"/>

            <property name="password"/>

            <property name="createTime"/><!-- Hibernate会自动根据实体类属性类型生成数据库表中字段类型 -->

            <property name="expireTime"/>

        </class>

    1、   将User.hbm.xml文件加入到hibernate配置文件中(hibernate.cfg.xml),因为hibernate并不知道这个文件的存在。

    <!-- 配置实体类映射文件 位于property之后

                映射文件要求为完整路径,目录之前使用/隔开

    -->

           <mapping resource="com/wjt276/hibernate/User.hbm.xml"/>

    1、   使用hibernate工具类将对象模型生成关系模型(hbm to ddl)

    (也就是实体类生成数据库中的表),完整代码如下:

    package com.wjt276.hibernate;

     

    import org.hibernate.cfg.Configuration;

    import org.hibernate.tool.hbm2ddl.SchemaExport;

     

    /**

     * Hibernate工具<br/>

     * 将对象模型生成关系模型(将对象生成数据库中的表)

     * 把hbm映射文件转换成DDL

     * 生成数据表之前要求已经存在数据库

     * 注:这个工具类建立好后,以后就不用建立了。以后直接Copy来用。

     * @author wjt276

     * @version 1.0 2009/10/16

     */

    public class ExportDB {

        public static void main(String[] args){

            /*

             * org.hibernate.cfg.Configuration类的作用:

             * 读取hibernate配置文件(hibernate.cfg.xml或hiberante.properties)的.

             * new Configuration()默认是读取hibernate.properties

             * 所以使用new Configuration().configure();来读取hibernate.cfg.xml配置文件

             */

            Configuration cfg = new Configuration().configure();

           

            /*

             * org.hibernate.tool.hbm2ddl.SchemaExport工具类:

             * 需要传入Configuration参数

             * 此工具类可以将类导出生成数据库表

             */

            SchemaExport export = new SchemaExport(cfg);

           

            /*

             * 开始导出

             * 第一个参数:script 是否打印DDL信息

             * 第二个参数:export 是否导出到数据库中生成表

             */

            export.create(true, true);

           

        }

    }

    1、   运行刚刚建立的ExportDB类中的main()方法,进行实际的导出类。

    2、   开发客户端,完整代码如下:

    package com.wjt276.hibernate;

     

    import java.util.Date;

     

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import org.hibernate.cfg.Configuration;

     

    public class Client {

     

        public static void main(String[] args){

           

            //读取hibernate.cfg.xml文件

            Configuration cfg = new Configuration().configure();

           

            /*

             * 创建SessionFactory

             * 一个数据库对应一个SessionFactory

             * SessionFactory是线线程安全的。

             */

            SessionFactory factory = cfg.buildSessionFactory();

           

            //创建session

            //此处的session并不是web中的session

            //session只有在用时,才建立concation,session还管理缓存。

            //session用完后,必须关闭。

            //session是非线程安全,一般是一个请求一个session.

            Session session = null;

           

            try {

               

                session = factory.openSession();

               

                //手动开启事务(可以在hibernate.cfg.xml配置文件中配置自动开启事务)

                session.beginTransaction();

               

                User user = new User();

                user.setName("张三");

                user.setPassword("123");

                user.setCreateTime(new Date());

                user.setExpireTime(new Date());        

                /*

                 * 保存数据,此处的数据是保存对象,这就是hibernate操作对象的好处,

                 * 我们不用写那么多的JDBC代码,只要利用session操作对象,至于hibernat如何存在对象,这不需要我们去关心它,

                 * 这些都有hibernate来完成。我们只要将对象创建完后,交给hibernate就可以了。

                 */

                session.save(user);

               

                //提交事务

                session.getTransaction().commit();

               

            } catch (Exception e) {

                e.printStackTrace();

                //回滚事务

                session.getTransaction().rollback();

            } finally {

                if (session != null) {

                    //关闭session

                    session.close();

                }

            }      

        }

    }

    注:为了方便跟踪sql语句执行,可以在hibernate.hbm.xml中加入下以代码:

    <property name="hibernate.show_sql">true</property>

  • 相关阅读:
    arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)
    arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
    arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
    arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
    arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)
    Java里面获取当前服务器的IP地址
    Flutter at Google I/O 2018
    Modbus RTU 协议使用汇总
    plsql 创建表空间、用户、赋予权限
    Oracle:ODP.NET Managed 小试牛刀
  • 原文地址:https://www.cnblogs.com/crazylqy/p/4076293.html
Copyright © 2020-2023  润新知