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 ...
随机推荐
- The Triangle(DP-数塔问题)
题目链接:http://poj.org/problem?id=1163 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
- javase 基本运算符和三大流程
范围:-(2 ^ 字节 X 8 - 1)~(2 ^ 字节 X 8 - 1)- 1 主要区别是数据大小范围: 1. byte 一个字节 -128 ~ 127 2. short 两个 ...
- LCA(包含RMQ)
今天看了RMQ问题 ST的实质是动归 于是我来回顾一下LCA(的各种写法) 因为每次考试发现自己连LCA都写不好 费时 First of all, RMQ板子: [一维] #include<bi ...
- [LeetCode] Card Flipping Game 翻卡片游戏
On a table are N cards, with a positive integer printed on the front and back of each card (possibly ...
- 网络编程之socketserver以及socket更多方法
关于socketserver 关于socket的更多方法 服务端套接字函数: s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始tcp监听 s.accept () 被动接受tc ...
- 移动端无法复制:使用clipboard.js碰到的一个小问题
移动端无法复制:使用clipboard.js碰到的一个小问题 直接看下面的代码:在移动端访问,点击,能正常复制. <html> <head> <meta http-e ...
- css动画-animation各个属性详解(转)
CSS3的animation很容易就能实现各种酷炫的动画,虽然看到别人的成果图会觉得很难,但是如果掌握好各种动画属性,做好酷炫吊炸天的动画都不在话下,好,切入正题. 一.动画属性: 动画属性包括:①a ...
- superset安装配置
1.安装操作系统依赖 yum -y install vim net-tools yum upgrade python-setuptools yum -y install gcc gcc-c++ lib ...
- SQL语句之on子句过滤和where子句过滤区别
1.测试数据: SQL> select * from dept; DEPTNO DNAME LOC ------ -------------- ------------- ...