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框架的简单入门的更多相关文章

  1. 一篇文章带你了解网页框架——Vue简单入门

    一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...

  2. Hibernate入门第一讲——Hibernate框架的快速入门

    Hibernate框架的概述 什么是框架? 框架指的是软件的半成品,已经完成了部分功能. JavaEE开发的三层架构 了解框架的基本概念之后,我们就来看看Hibernate框架处于JavaEE开发的经 ...

  3. 2.0、Hibernate框架的简单搭建

    一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句 ...

  4. hibernate 框架的简单使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...

  5. Hibernate框架学习(一)——入门

    一.框架是什么 1.框架是用来提高开发效率的 2.封装好了一些功能,我们需要使用这些功能时,调用即可,不需要手动实现 3.框架可以理解成一个半成品的项目,只要懂得如何驾驭这些功能即可 二.hibern ...

  6. 权限框架 - shiro 简单入门实例

    前面的帖子简单的介绍了基本的权限控制,可以说任何一个后台管理系统都是需要权限的 今天开始咱们来讲讲Shiro 首先引入基本的jar包 <!-- shiro --> <dependen ...

  7. 框架之 hibernate简单入门

    hibernate框架的搭建 Hibernate框架的概述 1. Hibernate框架的概述 * Hibernate称为 * Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JD ...

  8. Hibernate框架第一天

    **框架和CRM项目的整体介绍** 1. 什么是CRM * CRM(Customer Relationship Management)客户关系管理,是利用相应的信息技术以及互联网技术来协调企业与顾客间 ...

  9. 深入浅出学习Hibernate框架(二):JDBC基础操作

    上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...

随机推荐

  1. 美团小程序框架mpvue蹲坑指南

    美团小程序框架mpvue(花名:没朋友)蹲坑指南 第一次接触小程序大概是17年初,当时小程序刚刚内侧,当时就被各种限制折腾的死去活来的,单向绑定, 没有promise,请求数限制,包大小限制,各种反人 ...

  2. Elasticsearch大规模时序索引如何治理和规划

    什么是时序索引? 其主要特点体现在两个方面, 一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通 ...

  3. Hibernate使用sql语句实现多表关联查询

    /** * <查找list> * * @return 返回页面需要显示的数据 */ @SuppressWarnings("unchecked") public List ...

  4. react-native 引入某些低三方库时出现的Command `run-android` unrecognized,命令不识别错误

    在使用第三方库时react-native-swiper,执行 npm install react-native-swiper --save 再次运行react-native run-android时直 ...

  5. 2019-2-20C#开发中常用加密解密方法解析

    C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...

  6. [POJ1050]To the Max (矩阵,最大连续子序列和)

    数据弱,暴力过 题意 N^N的矩阵,求最大子矩阵和 思路 悬线?不需要.暴力+前缀和过 代码 //poj1050 //n^4暴力 #include<algorithm> #include& ...

  7. react中constructor()和super()的具体含义以及如何使用

    1.constructor()---super( )的基本含义 constructor()--构造方法 这是ES6对类的默认方法,通过new命令生成对象实例时自动调用该方法.并且,该方法是类中必须有的 ...

  8. Node.js_express_route 路由

    route 路由   (kiss my ass ヾ(゚∀゚ゞ) 请求方式        get / post /  put / delete____查 / 增 / 改 / 删 路由路径         ...

  9. Node.js_express_临时会话对象 session

    临时会话对象 session 也是用来 解决 http 无状态协议的问题(无法区分多次请求是否发送自同一客户端) npm install express-session npm install con ...

  10. 【LookLook文档】通过less 定制自己的Bootstrap 样式

    闲话 学习还是看文档最快,看文档要仔细点,不可走马观花.感谢 “Bootstrap中文网” 思路 1.早在2015开始接触,由于公司中使用的是easyui 固一直没完全使用Bootstrap,开始接触 ...