Hibernate_day01

Hibernate课程安排

今天内容介绍

WEB内容回顾

JavaEE三层结构

MVC思想

Hibernate概述

什么是框架

什么是hibernate框架(重点)

什么是orm思想(重点)

Hibernate入门

搭建hibernate环境(重点)

实现添加操作

Hibernate配置文件详解

Hibernate映射配置文件(重点)

Hibernate核心配置文件

Hibernate核心api

Configuration

SessionFactory(重点)

Session(重点)

Transaction

解决配置文件没有提示问题

演示常见错误

Hibernate_day01

Hibernate课程安排

第一天 hibernate入门和基本操作

第二天 hibernate概念和api使用

第三天 hibernate配置一对多和多对多

第四天 hibernate查询操作

今天内容介绍

1 web内容回顾

(1)javaee三层结构

(2)mvc思想

2 hibernate概述

3 hibernate入门案例

4 hibernate配置文件

5 hibernate的api使用

WEB内容回顾

JavaEE三层结构

1 web层(视图层):struts2框架

2 service层(业务逻辑层):spring框架

3 dao层(持久化层):hibernate框架

(1)对数据库进行crud操作

MVC思想

1 model:模型

2 view:视图

3 controller:控制器

Hibernate概述

什么是框架

1 写程序,使用框架之后,帮我们实现一部分功能,使用框架好处,少写一部分代码实现功能

什么是hibernate框架(重点)

1 hibernate框架应用在javaee三层结构中 dao层框架

2在dao层里面做对数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂jdbc代码了,不需要写sql语句实现。

3 hibernate开源的轻量级的框架

免费开放源代码,不依赖其他jar包

4 hibernate版本

Hibernate3.x

Hibernate4.x

Hibernate5.x(学习)

lib:hibernate相关jar包

什么是orm思想(重点)

1 hibernate使用orm思想对数据库进行crud操作

2 在web阶段学习 javabean,更正确的叫法 实体类

3 orm:object relational mapping,对象关系映射

文字描述:

(1)让实体类和数据库表进行一一对应关系

让实体类首先和数据库表对应

让实体类属性 和 表里面字段对应

(2)不需要直接操作数据库表,而操作表对应实体类对象

画图描述:

Hibernate入门

搭建hibernate环境(重点)

第一步 导入hibernate的jar包

因为使用hibernate时候,有日志信息输出,hibernate本身没有日志输出的jar包,导入其他日志的jar包

不要忘记还有mysql驱动的jar包

第二步 创建实体类

(1)使用hibernate时候,不需要自己手动创建表,hibernate帮把表创建

在SQLyog中创建数据库hibernate_day01

第三步 配置实体类和数据库表一一对应关系(映射关系)

使用配置文件实现映射关系

(1)创建xml格式的配置文件

- 映射配置文件名称和位置没有固定要求

- 建议:在实体类所在包里面创建,实体类名称.hbm.xml

(2)配置是是xml格式,在配置文件中首先引入xml约束

- 学过约束dtd、schema,在hibernate里面引入的约束dtd约束

(3)配置映射关系

<hibernate-mapping>
<!-- 1.配置类和表对应
class标签
name属性:
table属性:数据库名称
-->
<class name="cn.itcast.entity.User" table="t_user">
<!-- 2.配置实体类id和表id对应
hibernate要求实体类有一个属性唯一值
hibernate要求表有字段作为唯一值
-->
<!-- id标签
name属性:实体类里面id属性名称
column属性:生成的表字段名称
-->
<id name="uid" column="uid">
<!-- 设置数据库表id增长策略
native:生成表id值就是主键自动增长
-->
<generator class="native"></generator>
</id>
<!-- 配置其他属性和表字段对应
name属性:实体类属性名称
column属性:生成表字段名称
-->
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>

第四步 创建hibernate的核心配置文件

(1)核心配置文件格式xml,但是核心配置文件名称和位置固定的

- 位置:必须src下面

- 名称:必须hibernate.cfg.xml

(2)引入dtd约束

(3)hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载

第一部分: 配置数据库信息 必须的

第二部分: 配置hibernate信息 可选的

第三部分: 把映射文件放到核心配置文件中

实现添加操作

第一步 加载hibernate核心配置文件

第二步 创建SessionFactory对象

第三步 使用SessionFactory创建session对象

第四步 开启事务

第五步 写具体逻辑 crud操作

第六步 提交事务

第七步 关闭资源

public class HibernateDemo {
@Test
public void testadd() {
/**
* 第一步 加载hibernate核心配置文件
* 到src下面找到名称是hibernate.cfg.xml
* 在hibernate里面封装对象
*/
Configuration cfg = new Configuration().configure();
/**
* 第二步 创建SessionFactory对象
* 读取hibernate核心配置文件内容,创建sessionFactory
* 在过程中,根据映射关系,在配置数据库里面把表创建
*/
SessionFactory sessionFactory = cfg.buildSessionFactory();
/**
* 第三步 使用SessionFactory创建session对象
* 类似于连接
*/
Session session = sessionFactory.openSession();
//第四步 开启事务
Transaction tx = session.beginTransaction();
/**
* 第五步 写具体逻辑 crud操作
* 添加功能
*/
User user = new User();
user.setUsername("小王");
user.setPassword("250");
user.setAddress("日本");
//调用session的方法实现添加
session.save(user);
//第六步 提交事务
tx.commit();
//第七步 关闭资源
session.close();
sessionFactory.close();
}
}

看到效果:

(1)是否生成表

(2)看表是否有记录

Hibernate_day01--课程安排_Hibernate概述_Hibernate入门的更多相关文章

  1. Struts2_day01--课程安排_Struts2概述_入门

    Struts2_day01 Struts2课程安排 今天内容 Struts2概述 Struts2框架入门 导入源文件 Struts2执行过程 查看源代码 Struts2的核心配置文件 标签packag ...

  2. Struts2_day03--课程安排_OGNL概述入门_什么是值栈_获取值栈对象_值栈内部结构

    Struts2_day03 上节内容 今天内容 OGNL概述 OGNL入门案例 什么是值栈 获取值栈对象 值栈内部结构 向值栈放数据 向值栈放对象 向值栈放list集合 从值栈获取数据 获取字符串 获 ...

  3. 01Mybatis_课程安排

    课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发)问题总结 mybatis框架原理   (掌握) m ...

  4. mybatis由浅入深day01_1课程安排_2对原生态jdbc程序中问题总结

    mybatis 第一天 mybatis的基础知识 1 课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开 ...

  5. 中科院 2014年GCT考前辅导课程安排

    : 2014年GCT考前辅导课程安排 发布时间: 2014-07-14 阅读次数:1225                       默认字体                   9pt       ...

  6. SpringMVC由浅入深day02_1课程安排_2包装类型pojo参数绑定_3集合类型绑定

    springmvc第二天 高级知识 复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器: ...

  7. 01_Python 基础课程安排

    Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...

  8. Linux:课程安排、Linux简介、虚拟机安装、课前准备(常用设置和操作)

    一.课程安排 1)Linux 的作用 商业服务器基本上都是 Linux: 开源软件都先支持 Linux: 大数据分析.机器学习首先选 Linux: 整个互联网地基靠Linux撑起来: Linux 系统 ...

  9. cogs——644. 课程安排问题

    644. 课程安排问题 ★   输入文件:curriculum.in   输出文件:curriculum.out   简单对比时间限制:1 s   内存限制:128 MB 问题描述 一个软件专业的学生 ...

随机推荐

  1. mysql 如何查看sql语句执行时间

    查看执行时间 1 show profiles; 2 show variables;查看profiling 是否是on状态: 3 如果是off,则 set profiling = 1: 4 执行自己的s ...

  2. Python-多线程学习总结

    我们在做软件开发的时候很多要用到多线程技术.例如如果做一个下载软件象flashget就要用到.象在线视频工具realplayer也要用到因为要同时下载media stream还要播放.其实例子是很多的 ...

  3. spring注解 annotation

    @Resourse(name="  xxx") 意味从上下文找xxx名字一样的然后引入 @Repository("personDao") 意味生成一个 bean ...

  4. Experience on Namenode backup and restore --- checkpoint

    Hadoop version: Hadoop 2.2.0.2.0.6.0-0009 Well, We can do this by building Secondary Namenode, Check ...

  5. Acquiring Heap Dumps

      Acquiring Heap Dumps HPROF Binary Heap Dumps Get Heap Dump on an OutOfMemoryError One can get a HP ...

  6. jmap 查看内存使用直方图

    jps   -- 查看进程号 jmap -histo pid  查看堆内存中的对象数目.大小统计直方图, 如果带上live则表示先进行一次fullgc 再统计内存使用情况,如下: jmap -hist ...

  7. 跟着百度学PHP[9]-session会话

    参考:http://www.w3school.com.cn/php/php_sessions.asp session变量用于存储有关用户的会话的信息,或更改用户会话的设置,session变量保存的信息 ...

  8. LeetCode -- 推断链表中是否有环

    思路: 使用两个节点.slow和fast,分别行进1步和2步.假设有相交的情况,slow和fast必定相遇:假设没有相交的情况,那么slow或fast必定有一个为null 相遇时有两种可能:1. 仅仅 ...

  9. JavaScrip——简单练习(输出方式,简单表单验证)

    <script> //输出方式 document.write(Date());//获取当前时间 document.write(1); document.write("<p& ...

  10. svn:ignore 的用处

    用svn管理代码,一直以来都受到一件不爽事情的困扰: 1)有些文件或文件夹不想在commit的时候看到,虽然他们是non-versioned,比如*.bak.*.class,*.scc(vss文件), ...