hibernate框架的简单入门
1.什么是框架
框架是一个半成品,框架帮我们实现了一部分的功能。
2.使用框架的最大好处
使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能。
3.什么是hiberbnate框架
(1)hibernate框架应用在javaEE三层结构中的dao层框架
(2)hibernate底层的代码就是jdbc,hibernate就是对jdbc的封装,使用hibernate就不需要写jdbc复杂的代码了,而且可以不写sql语句,就能实现对数据库的基本的,增,删,改,查。
(3)hibernate是轻量级的框架。
4.hibernate的思想
(1)hibernate使用orm思想对数据库进行增,删,改,查。
(2)什么是orm思想?
orm:object relational mapping 对象关系映射,让实体类和数据库的表进行对应,也就是实体类中的属性与数据库中表的列进行一一的对应。且实体类的名称与数据库的表名对应。
这样我们就可也不需要对数据库中的表进行操作,而是直接对实体类对象进行操作,再映射到数据库的表中,从而达到对数据库表的操作。
5.搭建hibernate环境
(1)导入所需jar包。

(2)创建实体类
package com.bean;
public class User {
private int uid;
private String username;
private String password;
private String address;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
这样使用hibernate框架,不需要自己手动创建表,hibernate会帮我们把表建好。
(3)配置实体类和数据库表的一一对应的关系(映射关系)
使用配置文件来实现实体类和数据库表的映射关系。
创建xml文件,文件的名称和位置没有固定的要求,但是建议在实体类的文件夹中建xml文件名称为:实体类名称.hbm.xml
配置文件的创建首先要引入约束:
xml文件的约束分为dtd约束和schema约束,hibernate是引入dtd约束
配置文件(实体类名.hbm.xml)引入约束(dtd格式)
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping> 配置文件的根节点
配置映射关系
<class name="实体类的全路径" table="实体类映射到数据库中的表的名字">在此节点内配置实体类
hibernate要求实体类中有一个属性是唯一的值也就是对应表中的主键
<id name="实体类中对应的属性的名称" column="表中对应的字段的名称(也就是主键)">
设置主键的增长策略
<generator class="native"></generator>
其中的class的值可以等于下图中的一些值

</id>
下面就是对实体类的其他属性和表中除去主键外的字段进行一一对应的配置了
<property name="实体类属性名称" column="表中对应的列名"></property>当然这就要看实体类或者是表中有多少个除去主键的列了,有几列就对应的配置几列了
</class>
</hibernate-mapping>
(4)配置核心的配置文件(hibernate.cfg.xml)
同样是先引入核心配置文件的约束(dtd格式)
<?xml version='1.0' encoding='UTF-8'?> <!--引入约束dtd格式-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory>
<!--配置数据库-->
<property name="dialect">
org.hibernate.dialect.SQLServerDialect<!--配置数据库的方言,目前是SQLServer数据库的方言,说白了就是为了让hibernate识别你的数据语句-->
</property>
<property name="connection.url">
jdbc:sqlserver://localhost:1433;databaseName=logPublish<!--配置你数据库的连接-->
</property>
<property name="connection.username">sa</property><!--配置数据库的登录名-->
<property name="connection.password">sa</property><!--配置数据库的密码-->
<property name="connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver<!--配置数据库的加载驱动-->
</property>
<property name="myeclipse.connection.profile">sqlserver</property> <!--配置hibernate-->
<property name="show_sql">true</property><!--为了让hinbernate输出执行的底层的sql语句-->
<property name="current_session_context_class">thread</property><!--hinbernate绑定当前session-->
<property name="format_sql">true</property><!--让输出的底层执行的sql语句有一定的格式--> <!--引入实体类的配置文件-->
<mapping resource="com/bean/LogInfo.hbm.xml" /><!--引入LogInfo实体类的配置文件--> </session-factory> </hibernate-configuration>
核心的配置文件中引入实体类的配置文件可以是多个,但是resource属性的值必须是实体类配置文件的全路径。
需要知道的是在hibernate的操作中只会加载核心的配置文件,不会加载其他的配置文件(所以在核心配置文件中才会引入我们的实体类的配置文件,这样在hibernate的操作过程中就可以加载到实体类的核心配置文件了)
6.Hibernate的过程
(1)加载hibernate核心配置文件(hibernate.cfg.xml)
(2)创建SessionFactory对象
(3)使用SessionFactory对象创建Session对象
(4)使用Session对象开启事务
(5)对数据库的增,删,改,查操作
(6)提交事务
(7)回滚事务
(8)关闭资源
7.hibernate中的核心API
(1)Configuration(用于加载核心配置文件)
Configuration cfg=new Configuration();
cfg.configure();
执行这个语句的时候hibernate会找到核心的配置文件hibernate.cfg.xml进行加载
(2)SessionFactory(用于打开(创建)一个会话,在这里的会话其实也就是对数据库的一次连接到关闭数据库的连接是一次会话)
sessionFactory = configuration.buildSessionFactory();
Configuration对象创建SessionFactory对象
根据核心配置文件中数据库中的配置进行数据库中表的创建。
需要注意的是一个项目只有一个SessionFactory对象,因为这个对象对资源的消耗很大。
(3)Session(用于开启事物(其实这里的Session对象就相当于Jdbc中的Connection))
Session对象里面的方法对数据库实现增,删,改,查的操作。
Session对象中的方法:
(1)saveOrUpdate()
(2)save()
(3)update()
(4)delete()
(5)get()
(6)load()
(7)CreateQuery()
(8)CreateSQLQuery()
(9)CreateCriteria()
最主要的是Session是单线程对象(不能共用)只能自己用不能被其他线程所用
(4)Transaction(用于提交对数据的操作)
事物的四个特性
(1)原子性 即是不可分割,一组操作要么都失败要么都成功
(2)一致性 操作之前和操作之后数据的总数是不变的,就比说转账,小明转给小红500,那么小明的账户要减去-500,小红的账户要+500,但是总的来说小明的钱的总数加上小红的钱的总数,转账的前后是没有改变的
(3)隔离性 多个事物操作同一个数据不会互相影响
(4)持久性 事物提交,在数据库中是生效的
hibernate框架的简单入门的更多相关文章
- 一篇文章带你了解网页框架——Vue简单入门
一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...
- Hibernate入门第一讲——Hibernate框架的快速入门
Hibernate框架的概述 什么是框架? 框架指的是软件的半成品,已经完成了部分功能. JavaEE开发的三层架构 了解框架的基本概念之后,我们就来看看Hibernate框架处于JavaEE开发的经 ...
- 2.0、Hibernate框架的简单搭建
一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句 ...
- hibernate 框架的简单使用
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...
- Hibernate框架学习(一)——入门
一.框架是什么 1.框架是用来提高开发效率的 2.封装好了一些功能,我们需要使用这些功能时,调用即可,不需要手动实现 3.框架可以理解成一个半成品的项目,只要懂得如何驾驭这些功能即可 二.hibern ...
- 权限框架 - shiro 简单入门实例
前面的帖子简单的介绍了基本的权限控制,可以说任何一个后台管理系统都是需要权限的 今天开始咱们来讲讲Shiro 首先引入基本的jar包 <!-- shiro --> <dependen ...
- 框架之 hibernate简单入门
hibernate框架的搭建 Hibernate框架的概述 1. Hibernate框架的概述 * Hibernate称为 * Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JD ...
- Hibernate框架第一天
**框架和CRM项目的整体介绍** 1. 什么是CRM * CRM(Customer Relationship Management)客户关系管理,是利用相应的信息技术以及互联网技术来协调企业与顾客间 ...
- 深入浅出学习Hibernate框架(二):JDBC基础操作
上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...
随机推荐
- C# .net 中 Timeout 的处理及遇到的问题
C# 中 Timeout 的处理 前言 最近在项目中要实现一个功能,是关于 Timeout 的,主要是要在要在 TCP 连接建立的时间 和 整个请求完成的时间,在这两个时间层面上,如果超出了设置的时间 ...
- ef core的外键约束笔记
ef core设置可选外键,有如下几种方式:1.在依赖实体AAA中,并不显式设置外键属性XXXId 2.手动设置外键属性XXXId为可空类型(int?等类型) 3.在实体类与数据表进行映射时,配置狭隘 ...
- python 字符串常用操作
字符串常用方法 capitalize() String.capitalize() 将字符串首字母变为大写 name = 'xiaoming' new_name = name.capitalize() ...
- PostgreSQL自学笔记:5 数据类型和运算符
5 数据类型和运算符 5.1 PostgreSQL 数据类型介绍 5.1.1 整数类型 整型类型 字节 取值范围 smallint 2字节 -2^15 ~ 2^15 int integer 4字节 - ...
- centos6.8 安装jdk
一.卸载CentOS自带的Java 1. 查看CentOS的Java的信息 [root@bogon /]# java -version java version "1.7.0_9 ...
- <c:forEach var="role" items="[entity.Role@d54d4d, entity.Role@1c61868, entity.Role@6c58db, entity.Role@13da8a5]"> list 集合数据转换异常
<c:forEach var="role" items="[entity.Role@d54d4d, entity.Role@1c61868, entity.Role ...
- Java作业一 (2017-9-10)
/*程序员龚猛*/ 1.3 public class Helloworld{ public static void main(String[] args) { System.out.printl ...
- Sublime Text 3 使用心得
1.Ctrl + Shift + P : package control install package == > ConvertToUTF82.列模式: 苹果:OS X -鼠标左键+Optio ...
- python中剔除字典重复项,可以使用集合(set)。
使用集合(set)剔除字典中的重复项(value). 1)具体例子: #甲乙丙丁使用的编程语言programming_languages = { '甲':'java', '乙':'python', ' ...
- 树莓派3 之 启动显示和wifi相关参数设置
最近将树莓派操作系统重新安装了,然后发现了一些问题.这里分享出来给大家 问题一:连接外置显示器黑屏 解决方法:将SD卡 插入电脑,在电脑中找到SD卡 修改其中的config.txt文件 #强制使用HD ...