一、下载

官网地址: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();

Java ORM Hibernate 入门笔记的更多相关文章

  1. Hibernate入门笔记

    相关基础概念请从其它教材简单了解,这里仅记录下第一个Hibernate程序的实现步骤. 环境说明: java开发工具:eclipse MARS.2 Release(4.5.2) hibernate版本 ...

  2. Hibernate学习笔记(一)—— Hibernate概述及入门

    一.Hibernatea概述 1.1 什么是Hibernate? 在介绍什么是Hibernate之前,我们先讨论一下什么是框架?框架是用来提高开发效率的,框架封装好了一些功能,我们需要使用这些功能时, ...

  3. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  4. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  5. 三大框架之hibernate入门

    hibernate入门   1.orm      hibernate是一个经典的开源的orm[数据访问中间件]框架           ORM( Object Relation Mapping)对象关 ...

  6. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  7. Hibernate day01笔记

    框架体系结构   hibernate入门 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational:关系,二维表 ...

  8. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  9. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

随机推荐

  1. dojo省份地市级联之省份Dao接口类(三)

    dojo省份地市级联之省份Dao接口类 ProvinceDao.java: /** * 省份-Dao */ package com.you.dao; import java.util.List; im ...

  2. 不解,排名靠前那么多的人为什么抄袭我的activit博文??

    刚才也是无意搜了下自己的最近发表的activiti系列博文,无意中发现居然在别人的csdn博客中也成了原创. ......

  3. freemarker写select组件报错总结(三)

    1.错误描述 <html> <head> <meta http-equiv="content-type" content="text/htm ...

  4. Flex中TabNavigator隐藏和显示选项卡

    1.问题背景 遇到这样一个问题:有四个Tab选项卡,根据不同的参数隐藏和显示选项卡 2.实现实例 (1)隐藏"春季" protected function springClickH ...

  5. openfec的学习笔记

    openfec实现了多种纠删码的算法实现,就包括Reed-Solomon算法.其基本使用流程为:输入n个原始包的分组后,计算生成k个额外的冗余包,后续将这n+k包送到接收端,若发生原始包丢包,但只要总 ...

  6. SpringMVC拦截器(包括自定以拦截器--实现HandlerInterceptorAdapter)(资源和权限管理)

    一,springmvc的配置 <!-- 访问拦截 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping ...

  7. 在ASP.NET 中检测手机浏览器(转)

    引言 之前做的项目中需要在浏览器查看PDF文件.在电脑端没有问题,但是手机端网页打开失败. 后来使用了pdf.js,个人认为pdf.js的页面不够清爽,就希望网站能自动检测登录设备,电脑端保持原样,手 ...

  8. 在TextBox中敲击回车执行ASP.NET后台事件

    1.在TextBox中敲击回车执行ASP.NET后台事件   0.说明 页面中有一个用于搜索的TextBox,希望能在输入内容后直接回车开始搜索,而不是手动去点击它旁边的搜索按钮 但因为该TextBo ...

  9. BZOJ 2683: 简单题(CDQ分治 + 树状数组)

    BZOJ2683: 简单题(CDQ分治 + 树状数组) 题意: 你有一个\(N*N\)的棋盘,每个格子内有一个整数,初始时的时候全部为\(0\),现在需要维护两种操作: 命令 参数限制 内容 \(1\ ...

  10. 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)

    [BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...