前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java ORM Hibernate 入门笔记

Java ORM Hibernate 入门笔记

作者头像
用户1637609
发布2018-04-12 15:42:22
1.1K0
发布2018-04-12 15:42:22
举报
文章被收录于专栏:马洪彪马洪彪

一、下载

官网地址: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)以及注册映射:

代码语言:javascript
复制
<?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等文件。

代码语言:javascript
复制
<?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是关键,各种映射都通过其实现。

代码语言:javascript
复制
<?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配置。

四、示例代码

代码语言:javascript
复制
        // 对象
        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();    
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载
  • 二、工具
  • 三、关键文件
  • 四、示例代码
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档