Hibbernate详解一
这里先做一个简单的入门,后面有详解
记住图解原理:
这里只是没有整合spring等项目使用的hibernate的使用详解。
一、Hibernate简介
1、Hibernate在开发中所处的位置
2、ORM映射
Object :面向对象领域的
Relational:关系数据库领域的
Mapping:映射
mapping:就是将object和Relational联系起来。
二、搭建开发环境
1、下载Hibernate的资源包
前往官网下载:http://hibernate.org/
创建一个java项目。命名hibernate01
2、准备Hibernate运行的必备jar包
前提准备:数据库的驱动jar包
hibernate的必须jar包
共11个jar包
其中如何添加到项目中,有两种方法,这里将其一。可以在项目中建立一个lib文件夹。然后右键 build path 之后 add puild path 即可。
3、建立hibernate配置文件,配置数据源信息
在classpath下(根路径),建立一个默认名称为hibernate.cfg.xml配置文件(许多开发项目中未必见到hibernate.cfg.xml这个名称的xml文件,后期做详解)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 拷贝要引入的dtd约束。该dtd文件在hibernate的核心jar包的 org/hibernate/hibernate-configuration-3.0.dtd-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 配置一个Session的工厂。 负责生产Session对象
Session对象就相当于JDBC中的Connection和Statement的组合体-->
<session-factory>
<!-- 这些key value 的位置在:hibernate-distribution-3.6.10.Final\project\etc\hibernate.properties中定义着-->
<!-- 配置连接数据库的基本信息。细节:他们都是以hibernate开头的。hibernate写不写都行。 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/student_database</property>
<property name="connection.username">root</property>
<property name="hibernate.connection.password">123456</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>
<!-- 自动生成ddl语句
SQL:DDL数据定义语言 DML数据操作语言 DQL数据查询语言 Transaction PL事务处理语言 DCL数据控制语言 Cursor CL指针控制语言
create-drop:创建表结构,只要SessionFactory工厂一结束,表结构没了
create:创建表结构,每次执行都重新创建
update:每次检查表结构的变化,如果不一致,更新表结构
validate:检查表结构
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 请注意:配置映射关系 -->
<mapping resource="net/gbicc/domain/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
其中hibernate-distribution-3.6.10.Final是下载下来的hibernate压缩包解压缩后的目录。(注意这里的url后面的/student是数据库名称,下面我用的是student_database数据库做的案例。若要重复我的操作请注意这点)
基本数据源连接的配置要根据你安装的mysql 数据库,或者其它数据库的定义而进行相关的配置。如果还是不懂,请学习jdbc相关内容。
到这环境已经准备完毕。开始入门案例。
三、第一个入门案例(把学生信息保存到数据库)
1、建立数据模型(实体类)
注意:要根据数据库的设计存储结构一一对应。
2、建立实体类和数据库表的对应关系
在实体类所在的包中,建立一个“类名.hbm.xml”名称(不是必须的后期详解)的映射文件。
3、编写保存学生信息的代码
然后运行发现抛出错误
注意运行需要用log4j.properties。因为hibernate需要此文件
原因:我们虽然写了mapping映射文件,我们并没有告诉hibernate,实体javabean和表的映射 ,hibernate不知道,如何让他知道呢?那就是将他们联系起来。
配置映射关系:就是将主配置文件和映射文件建立关系
<?xml version="1.0" encoding="UTF-8"?>
<!-- 拷贝要引入的dtd约束。该dtd文件在hibernate的核心jar包的 org/hibernate/hibernate-configuration-3.0.dtd-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 配置一个Session的工厂。 负责生产Session对象
Session对象就相当于JDBC中的Connection和Statement的组合体-->
<session-factory>
<!-- 这些key value 的位置在:hibernate-distribution-3.6.10.Final\project\etc\hibernate.properties中定义着-->
<!-- 配置连接数据库的基本信息。细节:他们都是以hibernate开头的。hibernate写不写都行。 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/student_database</property>
<property name="connection.username">root</property>
<property name="hibernate.connection.password">123456</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>
<!-- 自动生成ddl语句
SQL:DDL数据定义语言 DML数据操作语言 DQL数据查询语言 Transaction PL事务处理语言 DCL数据控制语言 Cursor CL指针控制语言
create-drop:创建表结构,只要SessionFactory工厂一结束,表结构没了
create:创建表结构,每次执行都重新创建
update:每次检查表结构的变化,如果不一致,更新表结构
validate:检查表结构
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 请注意:配置映射关系 -->
<mapping resource="net/gbicc/domain/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
然后再次执行结果成功了(数据库中对应的表有内容了)
4、案例的执行过程
其它问题详见下一章
Hibbernate详解一的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- C++ 关于MFC多线程编程中的一些注意事项 及自定义消息的处理
在多线程编程中,最简单的方法,无非就是利用 AfxBeginThread 来创建一个工作线程,看一下这个函数的说明: CWinThread* AFXAPI AfxBeginThread( AFX_T ...
- 慕容小匹夫 Unity3D移动平台动态读取外部文件全解析
Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一 ...
- 对于目标识别的一些idea-传递特征的position而不是特征或特征图
我们在目标识别中通常是识别到目标的,通过proposals回归的方式,但是如果我们可以在 训练过程中识别到特征以后,将特征的位置信息传到下一层网络这样是否会训练收敛更快, 精度更高. 可能这也是以后机 ...
- 学习-HTML5
@@ 学习HTML5发现对我们开发工作者来说要方便很多,它现在还在发展阶段,在未来肯定会是主流. 我们知道HTML5目的是取代HTML4.01和XHTML1.0标准,他希望能够减少互联网富应用(RIA ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- Unity中的四个路径
Application.database:当前工程的Assets文件夹(编辑器) Application.StreamingAssets:IO流路径 当前工程的StreamingAssets文件夹(编 ...
- day21 xml模块 ATM+购物车
1. xml模块 <father name="jack"> # 属性的值必须加双引号 <son> 标签的关闭顺序,与开启顺序相反, 最先开启的最后关闭,最后 ...
- TP3.23 与Laypage 结合进行分页
demo地址:http://tp.ytlwin.top 控制器 <?php namespace Home\Controller; use Think\Controller; class Inde ...
- ss源码学习--工作流程
ss的local端和server端的工作流程相似,因此复用了TCPRelay类和TCPRelayHandler类. 两端均是使用TCPRelay类监听连接,并使用TCPRelayHandler类处理请 ...
- 关于slavetable
slavetable有两种情况, 从表有三个要素 1.自己主键字段的idfield 2.对应主表的主键字段masterIdField 3.对应主表主键的值 模式一.MasetrEdit模式 也就是主 ...