zoukankan      html  css  js  c++  java
  • 二、框架学习 (一)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)事务四个特性

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

  • 相关阅读:
    jQuery使用工具集
    JQuery解决鼠标单双击冲突问题
    线程池
    配置文件application.properties参数详解
    SpringBoot整合SpringDataJPA
    获取数据库的自增主键(六)
    【使用篇二】邮箱自动化配置集成(18)
    Quartz自动化配置集成
    Cron表达式详解
    标准盒模型和怪异盒模型的区别
  • 原文地址:https://www.cnblogs.com/zhangchengbing/p/8288271.html
Copyright © 2011-2022 走看看