Hibernate快速入门实例
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快速入门实例的更多相关文章
- (转)Hibernate快速入门
http://blog.csdn.net/yerenyuan_pku/article/details/64209343 Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有 ...
- 实体框架(Entity Framework)快速入门--实例篇
在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...
- Hibernate快速入门之CRUD
一.Hibernate的基本概念 前言 Hibernate是一个ORM框架,ORM是Object Relational Mapping的缩写,即对象关系映射,也就是将面向对象思想的编程语言与关系型数据 ...
- 笔记44 Hibernate快速入门(一)
一.Hibernate简介 Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象. Hibernate 架构是分层的,作为数据访问层,你不 ...
- 01.Hibernate快速入门
第一步:下载Hibernate5的运行环境 https://sourceforge.net/projects/hibernate/files/hibernate-orm/ 第二步:在数据库创建表 Cr ...
- hibernate快速入门示例
hibernate概述 hibernate是一个java的全自动ORM框架,它可以自动生成SQL语句.自动建表.自动执行,使用者可以不使用SQL完成数据的CRUD操作,同时它也是基于JPA规则的一种实 ...
- hibernate快速入门
第一步:下载Hibernate的开发包: http://sourceforge.net/projects/hibernate/files/hibernate3 第二步:Hibernate框架目录结构: ...
- Structs+Spring+Hibernate快速入门
Structs+Spring+Hibernate,这是很经典的一个搭配,它的开发流程也比较程式化,下面以用户注册为例. 注册页面代码: <%@page contentType=" ...
- Rsync快速入门实例(转)
三种主要数据传输方式 单主机本地目录间数据传输(类似cp) Local: rsync [OPTION...] SRC... [DEST] 借助rcp,ssh等通道来传输数据(类似scp) Access ...
随机推荐
- SpringMVC中使用@Value给非String类型注入值
String类型的@Value注入方式 String类型的直接可以使用 @Value("陈婉清") private String name; 非String类型的@Value注入方 ...
- 使用Html5下WebSocket搭建简易聊天室
一.Html5WebSocket介绍 WebSocket protocol 是HTML5一种新的协议(protocol).它是实现了浏览器与服务器全双工通信(full-duplex). 现在,很多网站 ...
- Ubuntu热键控制spotify播放和音量调节
安装xbindkeys sudo apt-get install xbindkeys 新建配置文件 xbindkeys -d > ~/.xbindkeysrc 编辑热键 vim ~/.xbind ...
- while循环 操作列表与字典
1.在列表间移动元素 #!/usr/bin/env python #filename=list.py num1 = [1,3,5,7,9,11,13,15] num2 = [] while num1: ...
- 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))
Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...
- 通过demo学python
链接 Github项目地址 软件安装包(pycharm.注册码.解析器等) Python 一切皆对象 Python 编码规范 The Python Standard Library The Pytho ...
- android学习-第一讲
一.基础View控件 View类的常见XML属性,对应发放及说明 每个界面控件都需要设置Android:layout_height,Android:layout_width,指定控件的高度和宽度.通常 ...
- ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块
概述 上一篇简单介绍了Dapper的基本用法,数据的存储为SqlServer.那么这一篇就记录一下使用EFCore来操作MySql的一些方式,这种模式比较适合那种一个项目中需要操作多种数据库的模式.不 ...
- sql 经典面试题
如果数据库里两个日期型字段d1,d2,怎样用sql语句列出按月的所有区间,比如表结构如下localid d1 d21 2014-1-15 2014-3- ...
- 写个百万级别full-stack小型协程库——原理介绍
其实说什么百万千万级别都是虚的,下面给出实现原理和测试结果,原理很简单,我就不上图了: 原理:为了简单明了,只支持单线程,每个协程共享一个4K的空间(你可以用堆,用匿名内存映射或者直接开个数组也都是可 ...