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. 英语口语练习系列-C40-电器-访友

    词汇-电器 dishwasher 洗碗机 fridge 电冰箱 washing machine 洗衣机 mobile phone 手机 digital camera 数码相机 intelligent ...

  2. 错误解决记录-------------验证启动HDFS时遇到的错误

    主要解决验证启动HDFS时: 1) jps:bash: jps: command not found... 原因:主要是java/bin 环境变量没配置好. 解决办法: 在  ~/.bash_prof ...

  3. JS AJAX 跨域

    原因: 浏览器的同源策略,不允许AJAX 访问 其他接口 协议,域名,端口 一个不同 就跨域了  http 端口(80) https(443) 可以跨域的三个标签: 1. img : 打点统计,没有浏 ...

  4. 解决sql_mode=only_full_group_by的问题

    1.mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_ ...

  5. JS基础学习1

    1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1)     核心(ECMAscript) (2)     文档对象模型(DOM)  Document object ...

  6. nginx/php的redis模块扩展

    redis模块介绍 redis2-nginx-module 可以实现 Nginx 以非阻塞方式直接防问远方的 Redis 服务,可以启用强大的 Redis 连接池功能,进而实现更多的连接与更快速的访问 ...

  7. [Codeforces Round #438][Codeforces 868C. Qualification Rounds]

    题目链接:868C - Qualification Rounds 题目大意:有\(n\)个题目,\(k\)个人,每个人可能做过这\(n\)个题里的若干道,出题方要在这\(n\)个题目里选若干个出来作为 ...

  8. Educational Codeforces Round 7

    622A - Infinite Sequence    20171123 暴力枚举\(n\)在哪个区间即可,时间复杂度为\(O(\sqrt{n})\) #include<stdlib.h> ...

  9. nginx + rtmp 搭建流媒体服务器

    一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...

  10. 日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...