• Java ORM Hibernate 入门笔记


    一、下载

    官网地址:http://hibernate.org/

    Hibernate下有ORM(关系型数据库)、OGM(NoSQL数据库)、Search(对象全文检索)、Validator的工具。

    ORM 5.2下载地址为:http://hibernate.org/orm/releases/5.2/

    使用时,将Hibernate Lib下的required Jar包引入即可,其他高级功能可继续引用相关包。

    二、工具

    Hibernate通过XML将对象映射到数据库表,可以通过Hibernate Tools自动生成XML、POJO等。

    除Hibernate Tools外,也可使用xdoclet来生成XML,xdoclet地址:http://xdoclet.sourceforge.net/index.html

    Hibernate Tools下载地址:http://tools.jboss.org/downloads/

    三、关键文件

    • Hibernate Configuration File(cfg.xml)

    配置数据库连接信息(JDBC)以及注册映射:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!--数据库连接配置-->
            <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <property name="hibernate.connection.password">password</property>
            <property name="hibernate.connection.url">jdbc:sqlserver://ipaddress:port;DatabaseName=dbname;SelectMethod=cursor</property>
            <property name="hibernate.connection.username">username</property>
            <property name="hibernate.default_catalog">dbname</property>
            <property name="hibernate.default_schema">dbo</property>
            <!--数据库方言-->
            <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
            <!--加载所有映射-->
            <mapping resource="lims/hibernate/LIMS_TESTS.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
    • Hibernate Console Configuration

    当使用File->New后,竟然发现找不到这个文件,正确的打开方式为:Run->Run Configurations。

    实质上,Hibernate Configuration File(cfg.xml)是与项目相关的,例如包括了该项目使用的数据库连接信息,而Hibernate Console Configuration则是在项目开发过程中工具使用相关的,即可通过它来生成代码。

    配置时,选择好项目及其配置文件路径,在Classpath中引入该项目所用的数据库的JDBC驱动。

    • Hibernate Reverse Engineering File(Revenge.xml)

    该文件为数据库逆向工程配置文件,如果先创建数据库表,则可通过已有的数据库表来创建POJO和ORM XML等文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
    
    <hibernate-reverse-engineering>
      <table-filter match-catalog="dbname" match-schema="dbo" match-name="tablename"/>
    </hibernate-reverse-engineering>

    根据该配置,使用Hibernate Tools可生成POJO和ORM XML等代码:

    使用Hibernate Tools生成代码时,指定Hibernate Reverse Engineering File:

    • Hibernate XML Mapping File(hbm.xml)

    Hibernate XML Mapping File是关键,各种映射都通过其实现。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="package name">
        <class name="class name" table="table name">
            <!-- 主键 ,id,映射-->
            <id name="property name" column="column name">
    <!--             <generator class="native"/> -->
            </id>
            <!-- 非主键,property,映射 -->
            <property name="property name" column="column name" ></property> 
        </class>
    </hibernate-mapping>

    一个简单的示例如上所示,配置包名、类名、类属性和表字段映射即可。

    复杂的应用,可以进一步配置字段的数据类型、长度、唯一约束等。

    ID可配置自动生成方式,自增序列值、GUID值等,或可不配置,此时在业务代码中根据业务规则生成并赋值到Java对象中。

    联合主键时,除了实体类外,需创建ID类,id替换为composite-id定义。

    外键通过many-to-one配置。

    四、示例代码

            // 对象
            tests test = new tests();
            test.setTestcode(1);
            test.setTestname("test");
            
            // 获取加载配置文件的管理类对象
            Configuration config = new Configuration();
            // 默认加载src/hibenrate.cfg.xml文件
            config.configure(); 
            // 创建session的工厂对象
            SessionFactory sf = config.buildSessionFactory();
            // 创建session (代表一个会话,与数据库连接的会话)
            Session session = sf.openSession();
            // 开启事务
            Transaction tx = session.beginTransaction();
            //保存-数据库
            session.save(test);
            // 提交事务
            tx.commit();
            // 关闭
            session.close();
            sf.close();    
  • 相关阅读:
    wifite+aimon-ng
    DC-2
    chrome插件开发
    mongoose的基本操作方法
    webpack中的require.context
    sequelize 数据类型 model
    React17 系统精讲 结合TS打造旅游电商平台
    2021必修 React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目
    21.8.2
    胡渊鸣《浅析信息学竞赛中概率论的基础与应用》学习笔记
  • 原文地址:https://www.cnblogs.com/mahongbiao/p/8660017.html
Copyright © 2020-2023  润新知