Hibernate工程项目创建基本步骤:导包(Hibernate依赖包、SQL驱动包)、编写实体类、编写ORM映射配置文件、编写核心配置文件、编写测试驱动。

项目工程代码已经上传到GitHub:https://github.com/wanyouxian/Hibernate  工程名:HibernateQuickStart

整个工程项目结构如下图:

一、导包

  笔者使用的是MySQL数据库,因此导入数据包如下图:

二、编写实体类

  实体类就是与数据库里表对应的实体类,其编写有一定的规则:

1、提供私有成员变量和公有的get/set方法

2、提供空构造器:Hibernate反射需要使用该构造器

3、成员变量的类型尽量使用包装类:如果是long类型,则尽量使用Long类型

4、不能使用final关键字修饰实体类:主要用于hibernate延迟加载时创建代理对象,即该代理对象是实体类的子类,因此不能使用final修饰,延迟加载主要用于hibernate性能优化

5、必须提供用于生成主键OID的属性:如果不提供则不能使用Hibernate框架,hibernate是通过oid来区分是否为同一个对象

 package com.rocky.domain;

 public class User
{
private Integer uId;
private String uName;
private Integer uAge;
public User()
{
super();
}
@Override
public String toString()
{
return "User [u_id=" + uId + ", uName=" + uName + ", uAge=" + uAge + "]";
}
public Integer getuId()
{
return uId;
}
public void setuId(Integer uId)
{
this.uId = uId;
}
public String getuName()
{
return uName;
}
public void setuName(String uName)
{
this.uName = uName;
}
public Integer getuAge()
{
return uAge;
}
public void setuAge(Integer uAge)
{
this.uAge = uAge;
}
}

三、编写ORM映射文件

  一个实体类对应于一个ORM映射文件,主要用于指定实体类与表的映射规则。

 <?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="com.rocky.domain">
<!--指定实体类和表的对应关系 -->
<class name="User" table="tb_user">
<!--指定主键 -->
<id name="uId">
<!--指定主键生成策略,assigned:代表生成自然主键,实际开发中我常使用native:根据配置选择主键 -->
<generator class="assigned"></generator>
</id>
<!--指定实体类属性和表的列的对应关系,如果不填写column属性则创建的表和实体属性名相同,
具体情况看公司表的设计和要求 -->
<property name="uName"></property>
<property name="uAge"></property>
</class>
</hibernate-mapping>

四、编写主配置文件

  一个项目工程只有一个核心配置文件,用于配置和数据连接的参数和引入ORM映射配置文件

 <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory> <!--指定数据库的参数 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://192.168.100.100:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1</property> <!--指定hibernate是否显式SQL语句及其格式化 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property> <!--指定表的生成方式-即是否由hibernate自动创建表,其取值为:create-drop、
create、validate、update-->
<property name="hibernate.hbm2ddl.auto">update</property> <!--引入 ORM配置文件 -->
<mapping resource="com/rocky/domain/User.hbm.xml"/>
</session-factory> </hibernate-configuration>

五、编写测试类

 package com.rocky.testdriver;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.rocky.domain.User; public class TestDriver
{ public static void main(String[] args)
{ //加载配置文件
Configuration cfg = new Configuration();
cfg.configure();
//创建会话工厂
SessionFactory factory = cfg.buildSessionFactory();
//获取非线程绑定会话
Session session = factory.openSession();
//开启事务
Transaction tx = session.beginTransaction();
//创建User对象
User user = new User();
user.setuId(1);
user.setuName("rocky");
user.setuAge(28); //将数据插入数据库
session.save(user); //提交事务
tx.commit();
//关闭会话
session.close();
} }

Hibernate快速入门实例的更多相关文章

  1. (转)Hibernate快速入门

    http://blog.csdn.net/yerenyuan_pku/article/details/64209343 Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有 ...

  2. 实体框架(Entity Framework)快速入门--实例篇

    在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...

  3. Hibernate快速入门之CRUD

    一.Hibernate的基本概念 前言 Hibernate是一个ORM框架,ORM是Object Relational Mapping的缩写,即对象关系映射,也就是将面向对象思想的编程语言与关系型数据 ...

  4. 笔记44 Hibernate快速入门(一)

    一.Hibernate简介 Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象. Hibernate 架构是分层的,作为数据访问层,你不 ...

  5. 01.Hibernate快速入门

    第一步:下载Hibernate5的运行环境 https://sourceforge.net/projects/hibernate/files/hibernate-orm/ 第二步:在数据库创建表 Cr ...

  6. hibernate快速入门示例

    hibernate概述 hibernate是一个java的全自动ORM框架,它可以自动生成SQL语句.自动建表.自动执行,使用者可以不使用SQL完成数据的CRUD操作,同时它也是基于JPA规则的一种实 ...

  7. hibernate快速入门

    第一步:下载Hibernate的开发包: http://sourceforge.net/projects/hibernate/files/hibernate3 第二步:Hibernate框架目录结构: ...

  8. Structs+Spring+Hibernate快速入门

    Structs+Spring+Hibernate,这是很经典的一个搭配,它的开发流程也比较程式化,下面以用户注册为例.     注册页面代码: <%@page contentType=" ...

  9. Rsync快速入门实例(转)

    三种主要数据传输方式 单主机本地目录间数据传输(类似cp) Local: rsync [OPTION...] SRC... [DEST] 借助rcp,ssh等通道来传输数据(类似scp) Access ...

随机推荐

  1. [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成Html代码

    在web开发中经常会遇到在内部代码中获取Html,这些Html是需要和数据进行一起渲染.并不是直接把Html代码返回给客户端.这样的做法有很多应用场景,例如分页.Ajax一次性获取几段Html片段.生 ...

  2. [编织消息框架][netty源码分析]2 eventLoop

    eventLoop从命名上看是专门处理事件 事件系统主要由线程池同队列技术组成,有以下几个优点 1.任务出队有序执行,不会出现错乱,当然前提执行线程池只有一个 2.解偶系统复杂度,这是个经典的生产者/ ...

  3. win10下装mysql-5.7.18-winx64

    步骤1 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择手动安装版: 解压到D盘mysql文件夹下: 比以往的版本里缺少了两个.ini文件,直接copy ...

  4. JAVA网络编程TCP通信

    Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...

  5. 总结scala(一)

    由于笔记太多,分为了几部分,进入我的博客,查看其它的笔记 scala:面向对象,函数式编程 一.声明变量 1.变量的类型 Byte,Char,Short,Int,Long,Float,Double,B ...

  6. 【知识整理】惊现RecyclerView内部Bug???别急,我们慢慢解决它~

    一.写在前面 这也是久违的一整个月没有写Blog,也是由于近期给妹纸找工作,各种坑蒙拐骗,然而都没卵用.额,广大朋友们,成都需要软件测试.线上运维.产品助理的伙伴,赶紧私聊我了.这妹纸,学习能力挺好, ...

  7. Xmpp学习之Smack发送消息JID变乱码

    Xmpp学习之Smack发送消息JID变乱码 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6947723 ...

  8. 初学JVM

    最近在读周志明的<深入理解Java虚拟机:JVM高级特性与最佳实践>,从中学到了很多,有些人可能会问为什么我们要学习JVM,他有什么用?在这里我想说一下,并不是这本书是大家都推荐的说有用处 ...

  9. charles连接手机抓包

    写给我自己: 如果是使用charles抓包.一定要tm的保证手机和电脑连的是一个网. 1.proxy setting,查看charles,端口 2.勾选 3.ipconfig,查看自己电脑的ip地址 ...

  10. javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...