二、框架学习 (一)Hibernate框架学习 (1)Hibernate入门和基本操作

1 web内容回顾

  (1)  javaee三层结构

  (2)  mvc思想

2 hibernate概述

3 hibernate入门案例

4 hibernate配置文件

5 hibernate的api使用

Web内容回顾

JavaEE三层结构

1 web层:struts2框架、Spring mvc框架、Spring Boot框架

2 service层: Spring框架

3 dao层:Hibernate框架、mybatis框架

(1)       对数据库进行crud(增删改查)操作

MVC思想

         1 m:模型

         2 v:视图

         3 c:控制器

Hibernate概述

什么是框架

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

什么是 hibernate框架(重点)

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

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

3 hibernate开源的轻量级的框架

4 下载下来后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 :mysql-connector-java-5.0.4-bin.jar

第二步 创建一个实体类(例子User)

 1 package cn.itcast.entity;
 2 
 3 public class User {
 4     /*hibernate要求实体类中要有一个属性唯一的*/
 5     private int uid;
 6     private String username;
 7     private String password;
 8     private String address;
 9     
10     
11     public int getUid() {
12         return uid;
13     }
14     public void setUid(int uid) {
15         this.uid = uid;
16     }
17     public String getUsername() {
18         return username;
19     }
20     public void setUsername(String username) {
21         this.username = username;
22     }
23     public String getPassword() {
24         return password;
25     }
26     public void setPassword(String password) {
27         this.password = password;
28     }
29     public String getAddress() {
30         return address;
31     }
32     public void setAddress(String address) {
33         this.address = address;
34     }
35     
36     
37 }

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

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

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

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

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

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

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

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

 

(2)       配置映射关系(User.hbm.xml)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping>
 6     <!-- 1配置类和表对应
 7         c1ass标签
 8         name属性:实体类全路径
 9         tab1e属性:数据库表名称 
10     -->
11     <class name="cn.itcast.entity.User" table="t_user">
12     <!-- 2配置实体类id和表id对应
13         hibernate要求实体类有一个属性唯一值
14         hibernate要求表有字段作为唯一值
15     -->
16     <!-- id标签
17         name属性:实体类里面主d属性名称
18         co1umn属性:生成的表字段名称
19     -->
20     <id name="uid" column="uid">
21         <!-- 设置数据库表id增长策略
22             native:生成表id值就是主键自动增长 
23         -->
24         <generator class="native"></generator>
25     </id>
26     <!-- 
27         配置其他属性和表字段对应
28         name属性:实体类属性名称
29         column属性:生成表字段名称
30      -->
31     <property name="username" column="username"></property>
32     <property name="password" column="password"></property>
33     <property name="address" column=" address"></property>
34     </class>
35 </hibernate-mapping>

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


(1)核心配置文件格式xml,但是核心配置文件名称和位置固定的
  位置:必须src下面
  名称:必须 hibernate.cfg.xml

(2)引入dtd约束

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

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

第二部分:配置hibernate信息

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

<?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.url">jdbc:mysql:///hibernate_day01</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">343492</property>
    <!-- 第二部分:配置hibernate信息  可选的-->
    <!--输出底层sql语句 -->
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <!--hibernate帮创建表,需要配置后 
        update:如果已经有表,更新,如果没有,创建
    -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- 配置数据库的方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
    <!-- 第三部分:把映射文件放到核心配置文件中 -->
    <mapping resource="cn/itcast/entity/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

实现添加的操作

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

         第二步创建 Sessionfactory对象

         第三步使用 Sessionfactory创建 session对象

         第四步开启事务

         第五步写具体逻辑crud操作

         第六步提交事务

         第七步关闭资源

         看到效果:

                   (1)是否生成表

      

                   (2)看表是否有记录

      

      

 1 package cn.itcast.hibernatetest;
 2 
 3 
 4 import org.hibernate.Session;
 5 import org.hibernate.SessionFactory;
 6 import org.hibernate.Transaction;
 7 import org.hibernate.cfg.Configuration;
 8 import org.junit.Test;
 9 
10 import cn.itcast.entity.User;
11 
12 public class HibernateDemo {
13     
14     @Test
15     public void  testAdd(){
16 //        第一步 加载hibernate核心配置文件
17         //在hibernate里面封装了对象
18         Configuration cfg = new Configuration();
19         cfg.configure();
20         
21         
22 //        第二步创建 Sessionfactory对象
23         //读取hibernate核心配置文件内容,创建ssssionFactory
24         //在过程中,根据映射关系,在配置数据库里面把表创建了
25         SessionFactory sessionFactory = cfg.buildSessionFactory();
26         
27 //        第三步使用 Sessionfactory创建 session对象
28         //类似于连接
29         Session session = sessionFactory.openSession();
30         
31 //        第四步开启事务
32         Transaction tx = session.beginTransaction();
33         
34 //        第五步写具体逻辑crud操作
35         //添加功能
36         User user=new User();
37         user.setUsername("小王");
38         user.setPassword("250");
39         user.setAddress("日本");
40         //调用session的方法实现添加
41         session.save(user);
42         
43         
44 //        第六步提交事务
45         tx.commit();
46         
47 //        第七步关闭资源
48         session.close();
49         sessionFactory.close();
50     }
51 }

  

Hibernate配置文件详解

      Hibernate映射配置文件

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

                   2 映射配置文件中,标签name属性值写实体类相关内容

                            (1) class标签name属性值实体类全路径

                            (2) id标签和property标签name属性值实体类属性名称

                   3 id标签和 property标签, column属性可以省略的

                   (1)不写值和mame属性值一样的

                   4 property标签type属性,设置生成表字段的类型,自动对应类型

      Hibernate核心配置文件

      

                   1  配置写位置要求

                 

                   2  配置三部分要求

                            (1)数据库部分必须的。

                            (2) hibernate部分可选的

                            (3)映射文件必须的

                   3  核心配置文件名称和位置固定的

                            (1)位置:src下面

                            (2)名称: hibernate cfg.xml

Hibernate核心api

Configuration

        

         (1)到src下面找到名称 hibernate.cfg.xm配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)

SessionFactory

         1使用configuration对象创建sessionFactory对象

                   (1)创建 sessionFactory过程中做事情:

                   根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据映射关系把表创建

                  

                  2创建 sessionFactory过程中,这个过程特别耗资源的

      (1)  在 hibernate操作中,建议一个项目一般创建一个 sessionFactory对象

                  3具体实现

                   (1)写工具类,写静态代码块实现。

                   *静态代码块在类加载时候执行,执行一次

       

 1 package cn.itcast.utils;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7 
 8 public class HibernateUtils {
 9     private final static Configuration cfg;
10     private final static SessionFactory sessionFactory;
11     //静态的代码块
12     static {
13 //        第一步 加载hibernate核心配置文件
14         //在hibernate里面封装了对象
15         cfg = new Configuration();
16         cfg.configure();
17         
18         
19 //        第二步创建 Sessionfactory对象
20         //读取hibernate核心配置文件内容,创建ssssionFactory
21         //在过程中,根据映射关系,在配置数据库里面把表创建了
22         sessionFactory = cfg.buildSessionFactory();
23     }
24     
25     public static SessionFactory getSessionFactory(){
26         return sessionFactory;
27     }
28 }

Session

         1 session类似于jdbc connection

         2 调用 session里面不同的方法实现crud操作,

                   (1)添加 save方法

                   (2)修改 update方法

                   (3)删除 delete方法

                   (4)根据id查询get方法

         3 session对象单线程对象

                   (1) session对象不能共用,只能自己使用

Transaction

  1 事务对象

  2 事务提交和回滚方法

         3事务概念

         (1)事务四个特性

         原子性、一致性、隔离性、持久性

原文地址:https://www.cnblogs.com/zhangchengbing/p/8288271.html