Hibernate使用快速入门介绍

本文对Hibernate进行了一个快速入门,介绍如何使用,之后会对Hibernate进行进一步解析

1.Hiberate 概述

什么是框架

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

什么是Hibernate框架(重点)?

  1. hibernate框架是应用在javaee三层架构中dao层架构
  2. 在dao层里面作对数据库的crud操作,使用hibernate实现crud操作,hibernate 底层代码就是jdbc,hibernate对jdbc进行封装.
    使用hibernate好处:不需要写复杂的jdbc代码,不需要写sql语句实现
  3. hibernate是开源(免费的,源码随便看的)的轻量级(不需要很多jar包,不要其他什么东西)框架
  4. hibernate版本(3.x 4.x 5.x)

什么是orm思想
1. hibernate使用orm思想对数据库进行crud操作
2. 在web阶段用javabean,更正确的叫法 实体类
3. orm(object relational mapping): 对象关系映射
文字描述
(1)让实体类和数据库表进行一一对应
让实体类首先和数据库表对应
让实体类属性 和 表里面字段对应
(2)不需要直接操作数据库表,而操作表对应的实体类对象

              public class User{         ----------create table t_user(
                private int uid;          ----------uid int,
                private String username;  ---------username varchar(100),
                private String password;  ---------password varchar(100)
                //set and get...                 );
              }          

Hibernate入门

搭建ibernate环境

第一步 导入hibernate的jar包 lib\required lib\jpa

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

第二步 创建一个实体类
  public class User {
                    /* hibernate要求实体类有一个属性唯一的 */
                    private int uid;
                    private String username;
                    private String password;
                    private String address;
                    public int getUid() {
                        return uid; ...
                    }   

ps:使用hibernate时,不需要自己手动创建表,hibernate会帮你创建

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

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

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

映射配置文件名称和位置没有固定要求建议,在实体类所在的包中创建:实体类名称.hbm.xml
这里写图片描述

(2)配置是xml格式,在配置文件中首先映入xml约束
             学过约束dtd,schema,在hibernate里面引入的约束:dtd约束       
             在hibernate-mapping-3.0.dtd文件中找到

(3)配置映射关系
                   <hibernate-mapping>                     
                    
                        <class name="cn.itcast.entity.User" table="t_user">
                            
                            
                            <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>   

将注释去掉:

                      
                        <class name="cn.itcast.entity.User" table="t_user">
                                <id name="uid" column="uid">
                                    class="native">
                              id>
                              <property name="username" column="username">property>
                                <property name="password" column="password">property>
                                <property name="address" column="address">property>
                        class>
                      
第四步 创建hibernate的核心配置文件
          (1)核心配置文件的格式:xml   但是核心配置文件名称和位置固定的
              位置: 必须src下面
              名称: 必须hibernate.cfg.xml
          (2)引入dtd约束
              在hibernate-configuration-3.0.dtd中 
          (3)hibernate操作过程中.只会加载核心配置文件,其他配置文件不会进行加载

      
                  <hibernate-configuration>
                    <session-factory>
                        
                        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
                        <property name="hibernate.connection.url">jdbc:mysql:///day12property>
                        <property name="hibernate.connection.username">rootproperty>
                        <property name="hibernate.connection.password">124816qwertproperty>

                        
                        
                        <property name="hibernate.show_sql">trueproperty>
                        
                        <property name="hibernate.format_sql">trueproperty>
                        
                        <property name="hibernate.hbm2ddl.auto">updateproperty>
                         
                        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>    

                        
                        <mapping resource="cn/itcast/entity/User.hbm.xml"/>
                    session-factory>
                  hibernate-configuration>

实现添加操作

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

      第二步 创建SessionFacrory对象

      第三步 使用SessionFactory创建 session对象

      第四步 开启事务

      第五步 写具体逻辑 crud操作

      第六步 提交事务

      第七步 关闭资源
            @Test
            public void testAdd() {
                // 第一步 加载hibernate核心配置文件
                // 到src下面找到名称是hibernate.cfg.xml
                // 在hibernate中封装对象
                Configuration cfg = new Configuration();
                cfg.configure();

                // 第二步 创建SessionFacrory对象
                // 读取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("123");
                user.setAddress("成都");
                // 调用session中的方法实现添加
                session.save(user);

                // 第六步 提交事务
                tx.commit();
                // 第七步 关闭资源
                session.close();
                sessionFactory.close();
            }
      看到效果.
        (1)是否生成表
        (2)看表是否有记录

Hibernate配置文件详解

hibernate映射配置文件
1. 映射配置文件名称和位置没有固定要求
2. 映射配置文件中,标签name属性值写实体类相关内容
- (1) class标签的name属性值:属性值实体类全路径
- (2) id标签和property标签name属性值:实体类属性名称
3. id标签和property标签,column属性是可以省略的
- (1) 不写值就和name属性值一样
4. property标签的type属性,设置生成表字段的类型,自动对应类型

hibernate核心配置文件

          1.配置写位置要求
            
              
          2.配置三部分要求
            (1)数据库部分必须的
            (2)hibernate部分可选的
            (3)映射文件必须的
          3.核心配置文件名称位置应是固定的
            名称:src下面
            位置:hibernate.cfg.xml

   Hibernate核心api
           configuration configuration cfg=new Configuration();
           cfg.configure();
            (1)到src下面找到名称为hibernate.cfg.xml配置文件,创建对象,把配置文件
             放到对象里面去(加载核心配置文件)         

SessionFactory(重点)

1.使用configuration对象创建sessionFactory对象
            (1)创建sessionFactory对象过程中做事情
              根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据
              映射关系把表创建    
              update 
              (有表更新,没表创建)         
2.创建sessionFactory过程中,这个过程特别耗资源
            (1)在hibernate操作中,建议一个项目一般创建一个sessionFactory对象
3.具体实现
            (1)写工具类,写静态代码块实现
               静态代码块在类加载时候执行,执行一次 
                   public class HibernateUtils {
                    static Configuration cfg = null;
                    static SessionFactory sessionFactory = null;
                    // 静态代码块实现
                    //类中静态代码块只执行一次
                    static {
                        // 加载核心配置文件
                        cfg = new Configuration();
                        cfg.configure();
                        sessionFactory = cfg.buildSessionFactory();
                    }

                    // 提供方法返回sessionFactory
                    public static SessionFactory getSessionFactory() {
                        return sessionFactory;

                    }
                  }

Session(重点)

  1. session类似于jdbc中的connection
  2. 调用session里面不同的方法实现crud操作
    (1)添加:save方法
    (2)修改:update方法
    (3)删除:delete方法
    (4)根据id查询:get方法
  3. session对象单线程对象
    (1)session 只能自己用,不能共用

Transaction对象

  1. 开启事务
    Transaction tx=session.beginTransaction();
  2. 事务提交和回滚方法
    tx.commit();
    tx.rollback();
  3. 事务概念
    (1)事务四个特性
    原子性,一致性,隔离性,持久性

补充:解决配置文件没有提示的问题
1.可以上网就应该木问题
2.把约束文件引入到myeclipse中
Window—->preferences—->输入 xml calalog—->add—>
Location:
key type:URI
Key:http://www.hibernate.org/dtd/hibernate-mapping-3.0.dt

你可能感兴趣的:(入门,javaweb,hibernate,框架)