Hibernate 之 How
- Hibernate是一个开源框架,而我们在项目中使用框架的时候都要对所使用的框架进行相关的环境搭建,下面的步骤便是.
- 创建一个Java项目Hibernate_first
- 创建User
Library,从Hibernate核心文件中加入依赖包.- HIBERNATE_HOME/lib/*.jar
- HIBERNATE_HOME/hibernate3.jar
- 加入数据库驱动(此例子中用mysql驱动)
- 创建核心配置文件hibernate_cfg.xml
- 链接数据库相关的配置
- 配置数据库适配器.可以直接使用相关数据库的相关特点.
- <!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.connection.driver_class">com.mysql.jdbc.Driver</property>
- <!-- 数据库名称地址 -->
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
- <!-- 数据库用户名 -->
- <property name="hibernate.connection.username">root</property>
- <!-- 数据库密码 -->
- <property name="hibernate.connection.password">root</property>
- <!-- 配置数据库适配器.可以直接使用相关数据库的相关特点-->
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- 打印sql语句到控制台 -->
- <property name="hibernate.show_sql">true</property>
- <!-- 对打印的Sql语句进行格式化 -->
- <property name="hibernate.format_sql">true</property>
- <!-- 对资源进行映射 -->
- <mapping resource="com/tgb/hibernate/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
- 环境搭建完毕之后,接下来我们将会用面相对象的思想来完成对数据库表的创建.和我们以前的先建表有所不同,Hibernate是将类映射到关系库数据中的表.接下来建立User类.
- package com.tgb.hibernate;
- import java.util.Date;
- /**
- *
- * @title 创建User类
- * @author jnqqls
- * @group TGB
- * @version 1.0
- * @datetime 2012-11-30上午10:15:25
- * @comments
- */
- public class User {
- //编号
- private String id;
- //姓名
- private String name;
- //密码
- private String password;
- //创建时间
- private Date createTime;
- //失效时间
- private Date expireTime;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Date getCreateTime() {
- return createTime;
- }
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
- public Date getExpireTime() {
- return expireTime;
- }
- public void setExpireTime(Date expireTime) {
- this.expireTime = expireTime;
- }
- }
- 接下来是Hibernate中核心的地方:建立映射文件User.hbm.xml.如何将一个类映射成数据库中的一个表?它们之间的映射模型如下
- 映射模型
- 创建映射文件User.hbm.xml并完成相关映射.
- 映射模型
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <!-- class标签表示所要映射的java类,而table属性可以更改它在数据库中表的名字,默认是类名 -->
- <class name="com.tgb.hibernate.User" >
- <!-- 表的主键,有着不同的生存策略 -->
- <id name="id">
- <generator class="uuid"></generator>
- </id>
- <!-- 以下内容是对类的属性进行映射 -->
- <property name="name"/>
- <property name="password"/>
- <property name="createTime"/>
- <property name="expireTime"/>
- </class>
- </hibernate-mapping>
- 类建好,映射也完成,那么如何将类转化成数据库中的实际表呢?接下来我们将会把User类导入数据库表
- 为了让Hibernate识别实体类.需要将User.htm.xml加入核心配置文件Hibernate.cfg.xml中.
- <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
- 编写工具栏ExportDB.java,将我们描述的htm文件生成ddl.也就是hbm2ddl
- package com.tgb.hibernate;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- /**
- *
- * @title 将hbm生成ddl 将我们描述的htm文件生成ddl.也就是hbm2ddl
- * @author jnqqls
- * @group TGB
- * @version 1.0
- * @datetime 2012-11-30上午10:35:54
- * @comments
- */
- public class ExportDB {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //读取配置文件上面的信息
- Configuration cfg = new Configuration().configure();
- //将配置文件写成ddl.
- SchemaExport export = new SchemaExport(cfg);
- //将ddl打印大控制台并写入数据库中.
- export.create(true, true);
- }
- }
- 为了让Hibernate识别实体类.需要将User.htm.xml加入核心配置文件Hibernate.cfg.xml中.
- 测试打印数据:
- 查看数据库中的表:
- 建立客户端Client,添加用户数据到Mysql.
- 建立client
- package com.tgb.hibernate;
- import java.util.Date;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- /**
- * 客户端程序
- * @author jnqqls
- * @group TGB
- * @version 1.0
- * @datetime 2012-11-27上午9:31:32
- * @comments
- */
- public class Client {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // 读取hibernate.cfg.xml文件
- Configuration cfg = new Configuration().configure();
- // 建立SessionFactory,对应一个数据库的镜像.
- SessionFactory factory = cfg.buildSessionFactory();
- // 获得session
- Session session = null;
- try {
- // 工厂创建session,并获得.
- session = factory.openSession();
- // 手动开启事务
- session.beginTransaction();
- // 创建User实体
- User user = new User();
- user.setName("jnqqls");
- user.setPassword("jnqqls");
- user.setCreateTime(new Date());
- user.setExpireTime(new Date());
- // 保存user对象
- session.save(user);
- // 提交事务
- session.getTransaction().commit();
- } catch (Exception e) {
- // 这里只是简单打印一下堆栈,用于测试
- e.printStackTrace();
- //事务回滚.
- session.getTransaction().rollback();
- } finally {
- // session是否为null
- if (session != null) {
- // session是否打开
- if (session.isOpen()) {
- // 关闭session
- session.close();
- }
- }
- }
- 执行客户端程序.
- 在console上打印的内容如下:
- Hibernate:
- insert
- into
- User
- (name, password, createTime, expireTime, id)
- values
- (?, ?, ?, ?, ?)
- 查看数据库
分享自:
http://blog.csdn.net/jnqqls/article/details/8242520
在上一篇文章Hibernate
之 Why? 中对Hibernate有了一个初步的了解.接下来我们将从How的角度,也就是如何使用Hibernate来进行学习.
UserLiberty部分截图

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
drop table if exists User
create table User (id varchar(255) not null, name varchar(255), password varchar(255), createTime datetime, expireTime datetime, primary key (id))
总结:使用Hibernate可以让我们通过面向对象的思维来操作关系型数据库.并且在此文的实例中也有体现出在上一篇文章所谈到的Hibernate优点,例如原来插入数据的insert语句(console所打印的语句)现在只需要一句session.save(user)变能完成相同的功能.至此本文从Hibernate如何使用的角度介绍完毕,在接下来的文章中会继续对Hibernate中的内容进行学习和分享.
Hibernate 之 How的更多相关文章
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用
问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...
- hibernate多对一双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate中事务的隔离级别设置
Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下
- Hibernate中事务声明
Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...
- spring applicationContext.xml和hibernate.cfg.xml设置
applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...
- [原创]关于Hibernate中的级联操作以及懒加载
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
- hibernate的基本xml文件配置
需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- 1.Hibernate简介
1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发; b.大大减少代码量; c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...
随机推荐
- js事件 (包含call()方法使用特点)
1.焦点事件 获取焦点事件onfocus\失去焦点事件onblur 例: oText.onfocus=function(){} 焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么它就可 ...
- 学习vue之windows下安装live-server 超级详细篇
最近项目要求用vue2.0所以开始着手学习. 前期准备: 下载Node.js 地址:http://nodejs.cn/download/ 选择自己对应的版本,我下载的是.msi 64位的 然后就双击下 ...
- Google JavaScript代码风格指南
Google JavaScript代码风格指南 修正版本 2.28 Aaron Whyte Bob Jervis Dan Pupius Eric Arvidsson Fritz Schneider R ...
- Sublime Text 3使用方法
一.下载安装 Sbulime Text 3官网 参考网站:http://lucida.me/blog/sublime-text-complete-guide/注意在安装时勾选Add to expl ...
- 【网络流】codeforces C. Heidi and Library (hard)
http://codeforces.com/contest/802/problem/C
- 关于NSArray的去重
提到去重,第一反应就是for或while循环来遍历处理. 然后有了几种思路: 1) 两个循环嵌套 对比 然后去重: 但是这种方法会数据丢失, arr为要去重的数组 ; i<arr.count; ...
- [Usaco2007 Oct] Super Paintball超级弹珠
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 489 Solved: 384[Submit][Status][Discuss] Description ...
- windows7 下安装使用memcached
Memcached 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网 http:/ ...
- .net core webapi jwt 更为清爽的认证 ,续期很简单(2)
.net core webapi jwt 更为清爽的认证 后续:续期以及设置Token过期 续期: 续期的操作是在中间件中进行的,续期本身包括了前一个Token的过期加发放新的Token,所以在说续 ...
- HUST 1328 String
11: KMP next 的强大 题意求前缀在S中出现的次数之和 next[j] 表示 S[0....NEXT[J]]==S[J-NEXT[J].....J]; 于是我们得到..后加入一个字符所得到新 ...


