Hibernate—— 创建与配置

第1章 Hibernate初识

1-2 什么是ORM?

· ORM(Object/Relationship Mapping):对象/关系映射

——利用面向对象思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,于是要编写很多和底层数据库相关的SQL语句

Hibernate就是一种可行的ORM框架技术


1-3 Hibernate简介

1-4  Hibernate开发前准备

Hibernate Tools for Eclipse plugins

插件下载路径:

http://sourceforge.net/projects/jboss/files/JBossTools/JBossTools4.1.x/hibernatetools-Update-4.1.2.Final_2014-03-18_15-46-19-B706.zip/download

配置方法:help—>Install New SoftWare——>点击Add——>选择路径  

    然后点击安装,需要重启。检查是否安装成功(空白处右键 new——>other 看看有没有Hibernate)


重点


1-5 编写第一个Hibernate例子

第一步:创建Hibernate的配置文件 (hibernate.cfg.xml)

第二步:创建持久化类

第三步:创建对象——关系映射文件

第四步:通过Hibernate API编写访问数据库的代码

使用的版本:Hibernate 4.2.4 +Mysql6.0


具体的实现步骤:

第一步:创建一个工程

第二步:导入Hibernate必须的jar包

           下载地址:http://img.mukewang.com/down/558ca82d0001766100000000.rar

第三步:导入Mysql的jdbc驱动(mysql-connector-java-5.1.11-bin.jar)

第四步:导入Junit4的jar包 (junit-4.10.jar)

导入包步骤1
导入包步骤2

具体按照1-5 实现配置的具体步骤:

这里讲的是Eclipse,如果是MyEclipse;具体方法参照:

http://jingyan.baidu.com/article/456c463b99f4370a583144a8.html


第一步 hibernate配置文档

注意:如果使用Eclipse生成的配置文档没有智能提示时,需要自己导入dtd文档的支持

寻找dtd文档的路径
hibernate.cfg.xml
配置hibernate.cfg.xml

第二步 创建持久化类 (跟JavaBean的写法一样)

Student.java

第三步 创建对象-关系映射文件和数据库

操作步骤
映射文件 Student.hbm.xml
添加到 hibernate.cfg.xml
创建数据库

补充一步:JUnit 进行单元测试

注解:@Before:是一个初始化方法

          @Test:是一个测试方法

           @After:释放资源

JUnit 测试

第四步:通过Hibernate API编写访问数据库的代码

接着补充那步写

测试类  StudentTest.java

右键运行(JUnit Test)

数据库 hibernate



详细讲解 上面出现的一些配置文档或者.....

讲解——hibernate常用配置

常用配置

使用的时候,hibernate前缀可以去掉。如 hibernate.dialect === dialect

default_schema:在执行sql语句的时候,对所有的表名前面加上 这个数据库的前缀(数据库名.                             表名)

hbm2ddl.auto介绍:

       create:表示每次生成新的表结构(如果原来的表存在,会先删除原来的表,再创建新                              表,并且添加记录)

       update:在原来表的基础上面进行更新(原来的测试数据会保留)

      create-drop:先创建再删除

      validate:对原来的表结构进行验证(如果现在的表结构与原来的不相同,就不会创建表结                        构)


讲解——session简介

1.不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库

2.session可以理解为 操作数据库的  对象

3.session与connetion,是多对一关系,每一个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。

4.要想把对象保存在关系数据库中需要调用session的各种方法。

如:save(), update(), delete(), createQuery()等


讲解——session详解

一、如何获取session对象?

1. openSession()

2. getCurrentSession()

使用 getCurrentSession()
Session 测试用例

二、openSession 与 getCurrentSession 的区别

1.getCurrentSession 在事务提交或者回滚之后会自动关闭,而openSession需要你手动关闭。如果使用openSession而没有手动关闭,多次之后会导致连接池溢出。

2.openSession每次创建新的session对象,getCurrentSession使用现有的session对象

2.  testOpenSession()方法里面改
2.  testGetCurrentSession()方法里面改

体现第一点区别:

testSaveStudentWithGetCurrentSession()
testSaveStudentWithOpenSession()

讲解—— hbm配置文档

hibernate-mapping 标签


class 标签
id 标签
生成策略

讲解—— transaction简介

· hibernate对数据库的操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。

· 如果你想让hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式(注意:通常并不推荐这样做)

注意:不开启事务就不能将对象保存到数据库中!

如果不使用事务!改相应的代码

不使用事务的情况下

补充,Hibernate 操作数据库的 增删改查

插入/查询 效果
修改数据效果
删除数据效果

E:\student\java\java框架学习\Hibernate\Hibernate_demo1


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 本文包括: 1、CRM 项目的整体介绍 2、Hibernate 框架概述 3、Hibernate 快速入门 4、H...
    廖少少阅读 3,463评论 9 66
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 1,956评论 0 27
  • 本文中我们介绍并比较两种最流行的开源持久框架:iBATIS和Hibernate,我们还会讨论到Java Persi...
    大同若鱼阅读 4,300评论 4 27
  • 本文包括:1、Hibernate的持久化类2、Hibernate 持久化对象的三个状态(难点)3、Hibernat...
    廖少少阅读 1,433评论 0 13
  • 1、有什么比生命更重要。昨天晚上在看《解忧杂货铺》,看到《深夜的口琴声》,还是蛮感慨的。那首《重生》虽然后来成了名...
    一颗花菜阅读 240评论 0 0