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

什么是hibernate框架(重点)
1 hibernate框架应用在javaee三层结构中 dao层框架

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

3 hibernate开源的轻量级的框架

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包

第二步 创建实体类

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

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

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

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

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

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

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

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

(3)配置映射关系

  <hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称
-->
<class name="cn.itcast.entity.User" table="t_user">
<!-- 配置实体类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操作

 

第六步 提交事务

 

第七步 关闭资源

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

看到效果:

(1)是否生成表

(2)看表是否有记录

代码实践:

 package org.model;

 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;
} }

继续在该包下创建映射配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--.配置类和表的对应关系 name属性 :类的全路径 table:是数据库中的表名称 -->
<class name="org.model.User" table="t_user">
<!-- .hibernate要求属性有一个属性唯一值
hinernate要求表中有一个字段 作为唯一值
name:实体中的id属性的名称 column:表中的主键列名称 一般和实体类中的名称一样 但是不一样也可以-->
<id name="uid" column="uid">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id>
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>

在src下面创建核心配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--. 配置数据库信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">jay571018</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate1_demo1</property>
    <!--<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate1_demo1</property> 上句代码和此句一样 多出了/表示是 本地的3306端口--> <!--. 配置hibernate信息 可选的 -->
<!-- 自动建立表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 控制台打印底层sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化控制台打印的sql语句 -->
<property name="format_sql">true</property> <!-- 定义方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!--. 把映射文件放到核心配置文件中 resource属性:给出关系映射文件的路径-->
<!-- 类的全路径 和文件的全路径是不同的 user类的全路径是:org.model.User User.hbm.xml文件的全路径是:
/Hibernate1_Demo1/src/org/model/User.hbm.xml 但是因为核心配置文件的位置是在src下 所以/org/model/User.hbm.xml即可
ctrl单击 如果到达指定的文件 说明路径配置正确-->
<mapping resource="org/model/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

测试程序:

 package org.testdemo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import org.model.User; public class TestDemo {
@Test
public void test() { // 第一步 加载hibernate核心配置文件
14 Configuration config=new Configuration();
15 config.configure();
16
17 // 第二步 创建SessionFactory对象
18 SessionFactory sessionfactory=config.buildSessionFactory();
19
20 // 第三步 使用SessionFactory创建session对象
21 //注意这里的session和javaweb中的不是同一个概念
22 Session session=sessionfactory.openSession(); // 第四步 开启事务
Transaction tran=session.beginTransaction(); // 第五步 写具体逻辑 crud操作
//hibernate对原始jdbc进行了封装,对数据库的操作通过对象关系映射变为对实体类的操作
User u=new User();
u.setUsername("jay");
u.setPassword("");
u.setAddress("台湾");
session.save(u);
// 第六步 提交事务
tran.commit();
// 第七步 关闭资源
session.close();
sessionfactory.close();
}
}

本程序在运行之前只创建了数据库hibernate1_demo1

运行程序之后,hibernate根据配置文件中的信息,帮我们创建出了表  并且表中也有了user这个对象的数据

控制台打印:

 Hibernate:
insert
into
t_user
(username, password, address)
values
(?, ?, ?)

完成了数据的保存。

注意:

以上3个文件在hibernate的jar包中都可以搜索到

第一个文件:核心配置文件中的属性的值  都可以在该文件中找到

建立表的属性:

数据库配置属性:

核心配置文件中引入的约束在第二个文件中可以找到

对象关系映射文件中引入的约束在第三个文件中可以找到

参考视频:http://v.itcast.cn/course/203.html

欢迎大家转载,但请注明原创链接:http://www.cnblogs.com/Joke-Jay/p/6517021.html

搭建hibernate环境的更多相关文章

  1. Hibernate框架 初识 ORM概念 搭建Hibernate环境 Hibernate Api

    ORM概念 在学习 Hibernate 之前,我们先来了解ORM   对象关系映射 O, Object  对象 R,Realtion 关系  (关系型数据库: MySQL, Oracle…) M,Ma ...

  2. eclipse搭建hibernate环境

    一.打开eclipse,help=>Install New Software 输入:http://download.jboss.org/jbosstools/updates/stable/kep ...

  3. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  4. Hibernate环境搭建超详细

    前言 环境搭建其实可以简单到导入相关jar包即可. 但是对于学习来说,这个环境搭建的内容还是挺多的,目的是提供一个让我们如何快速学习和掌握类库的学习环境.作为程序猿,学习和使用类库是必须掌握的技能.如 ...

  5. Maven搭建struts2+spring+hibernate环境

    Maven搭建struts2+spring+hibernate环境(一) 本文简单的使用STS的自带的maven插件工具搭建ssh(struts2+spring+hibernate)开发环境,图文并茂 ...

  6. Hibernate 再接触 基础配置 搭建Log4j环境 Junit日志环境等

    <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.aut ...

  7. 手把手在MyEclipse中搭建Hibernate开发环境

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53414303冷血之心的博客) 在MyEclipse中如何搭建Hib ...

  8. Hibernate之Hibernate环境搭建

    Hibernate之Hibernate环境搭建 一.Hibernate环境搭建的步骤 1.添加Hibernate && SQLServer 的Jar antlr-2.7.7.jar d ...

  9. Hibernate环境搭建

    Hibernate的环境搭建,主要步骤分为一下四步: 首先创建一个工程,在工程里创建一个实体类User,在这个实体类中必须包含无参的构造器,和这个类对属性的存取方法(getter and setter ...

随机推荐

  1. YII 1.0 (7) 登录信息调取 session使用

    登陆信息调取 Yii::app()->user->name,调取登陆的session信息 登录时 调用了 $LoginForm->login() 这个方法上面就能够取到登录的用户名 ...

  2. TortoiseSVN使用简介(收藏)

    TortoiseSVN使用简介 1.安装及下载client 端 2.什么是SVN(Subversion)? 3.为甚么要用SVN? 4.怎么样在Windows下面建立SVN Repository? 5 ...

  3. CSS设置图片居中的方法

    如果是应用了表格,那么设置单元格为align="center"就可以使其中的一切内容居中.如果没有应用表格要想设置图片居中就有点困难了.困难来自不按"常规出牌" ...

  4. leetcode难度及面试频率

    转载自:LeetCode Question Difficulty Distribution                 1 Two Sum 2 5 array sort           set ...

  5. HibernateTemplate实现查询distinct构造对象

    1,hql代码 select distinct new UserLogins( u.username,u.person,u.accName) from UserLogins u where u.ipA ...

  6. SQL Server 手把手教你使用profile进行性能监控

    200 ? "200px" : this.width)!important;} --> 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自 ...

  7. 2017《JAVA技术预备作业》 1502 陈明宇

    1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我期望的师生关系应该是亦师亦友的关系,美丽的校园是我们学生居住生活最久的地方而老师则是和我们接触最为密切的人.在课堂上,老师是辛勤的园丁,向我 ...

  8. [html5] 学习笔记-bootstrap介绍

    1.Bootstrap介绍 Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 2.下面对于官网上给出的最简单的一个bootstra ...

  9. 说说 bash 的 if 语句

    说说 bash 的 if 语句 在开始先给大家列出几个术语,不做解释,不懂的可以参考其它资料. 术语和符号: 退出状态码 $? [...] (中括号,方括号) [[...]] (双中括号,双方括号) ...

  10. Linux驱动技术(一) _内存申请

    先上基础,下图是Linux的内存映射模型,其中体现了Linux内存映射的几个特点: 每一个进程都有自己的进程空间,进程空间的0-3G是用户空间,3G-4G是内核空间 每个进程的用户空间不在同一个物理内 ...