hibernate框架的学习(二)

hibernate的核心配置和API

一:核心配置分为三大部分  必须的配置 、可选的配置和引入映射文件。

1.必须的配置 连接数据库的参数:驱动类  url路径  用户名  密码  方言

<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">000000</property>
        <!-- 他的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

  2.可选的配置 显示sql  整理sql语句的格式

<!-- 可选的配置 -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>

  3.引入映射文件

<mapping resource="com/itheima/domain/Customer.hbm.xml"/>


  二 映射的配置

  首先介绍里面的标签的属性

  

class标签的配置  作用:标签用来建立类与表的映射关系
         属性
              name:类的全路径
              talbe数据库的表名
   id标签的配置    作用:标签用来建立类中的属性与表中的主键的对应关系

    name:类的属性名,只要是name就去类中去找
    column类中的字段名
property标签的设置    作用:建立类中的普通属性与表的联系

    name:类中 的属性名
    column类中的字段名
l      ength长度 type     类型 not-null设置非空 unique设置唯一

<hibernate-mapping>
    <!-- 建立类与表的映射关系 -->
                        <!--当时这里后面少了个引号,直接导致后面的id变成蓝色 -->
    <class name="com.itheima.domain.Customer" table="cst_customer">
            <id  name="cust_id" column="cust_id">
                <!-- <generator class="native"/>     -->
                <generator class="native"/>
            </id>

            <!-- 与普通字段建立对应关系 -->
            <property name="cust_name" column="cust_name"/>
            <property name="cust_source" column="cust_source"/>
            <property name="cust_industry" column="cust_industry"/>
            <property name="cust_level" column="cust_level"/>
            <property name="cust_phone" column="cust_phone"/>
            <property name="cust_mobile" column="cust_mobile"/>

    </class>
</hibernate-mapping>

  三 核心的API

  Hibernate的API一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。

      1 SessionFactory

     SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

hibernate的二级缓存现在在企业中已经不用了,用redis来替换他了。 sessionFactory一个程序只须创建一次就行,那么我们就抽取一个工具类,这样效率会提升。

  抽取的工具类

public class HibernateUtils {
    public static final Configuration configuration;
    public static final SessionFactory sessionFactory;
    //写一个静态代码快
    static{
        configuration=new Configuration().configure();
        sessionFactory=configuration.buildSessionFactory();
    }
    public static Session openSession(){
        return sessionFactory.openSession();
    }
}

   2 Configuration

    作用:加载核心配置文件

   3 Session  :类似JDBC的connection对象是一个连接对象,是数据库交互的桥梁

      get方法和load方法的区别 (面试经常会问)
        get 采用立即加载 查询到的是对象本身 找不到对象的时候会返回空
        load就不一样了 采用的是延迟加载(Lazy懒加载) 查询后返回的是代理对象 查询不到一个对象的时候会抛异常
        在开发中用的比较多的还是get

  

           //上面的是get方法     Customer customer = session.get(Customer.class, 11l);//这里是long类型
        System.out.println(customer);      //下面的是load方法
        Customer customer = session.load(Customer.class, 4l);
        System.out.println(customer);    

  更新操作

      //第二种方式是先查询,再更新,推荐这种方式
        Customer customer = session.get(Customer.class,6l);
        customer.setCust_name("王宏");
        session.update(customer);

   删除操作

@Test
    public void demo4(){
        Session session = HibernateUtils.openSession();
        Transaction beginTransaction = session.beginTransaction();
        //先查询再删除,级联删除
        Customer customer = session.get(Customer.class,4l);
        session.delete(customer);
        beginTransaction.commit();
        session.close();
    }

  查询所有

  

@Test
    //查询所有
    public void demo5(){
        Session session = HibernateUtils.openSession();
        Transaction beginTransaction = session.beginTransaction();
        Query query = session.createQuery("from Customer");    //面向对象
        List list = query.list();
        for (Object object : list) {
            System.out.println(object);
        }
        beginTransaction.commit();
        session.close();
    }

  

原文地址:https://www.cnblogs.com/bao6/p/10335887.html

时间: 2024-10-11 21:29:55

hibernate框架的学习(二)的相关文章

JAVA框架之Hibernate框架的学习步骤

首先介绍一下Java三大框架的关系 以CRM项目即客户关系管理项目示例 hibernate框架的学习路线: 1.学习框架入门,自己搭建框架,完成增删改查的操作 2.学习一级缓存,事物管理和基本查询 3.学习一对多和多对多的操作等 4.学习基本查询和查询的优化 本人正在学习hibernate框架,今天是第一天,愿意把自己的学习过程分享给大家,希望大家提出宝贵意见,留言给我,共同进步需要什么软件.资源.例程jar包等的,可以留下邮箱,我晚上会给大家发过去的,谢谢

Hibernate框架的学习-第二天

一. hibernate中的实体规则 1.   实体类创建的注意事项 1)  持久化类提供无参数构造 2)  成员变量私有,提供共有get/set方法访问.需提供属性 3)  持久化类中的属性,应尽量使用包装类型 4)  持久化类需要提供oid.与数据库中的主键列对应 5)  不要用final修饰class hibernate使用cglib代理生成代理对象.代理对象是继承被代理对象.如果被final修饰.将无法生成代理. 2. 主键类型 1)  自然主键(少见) 表的业务列中,有某业务列符合,必

浅谈JavaEE中的Hibernate环境的搭建(二)

从今天开始,我们一起来进入有关Hibernate框架的学习,Hibernate框架实际上是基于JDBC的高度封装的框架,所以对比起来Hibernate的运行效率没有JDBC效率高但是Hibernate的开发效率却比JDBC的要高,这也是企业级开发所追求的.所以目前大部分企业开发都不会使用JDBC.欲工善其事,必先利其器,首先我们熟悉下Hibernate环境搭建. Hibernate环境搭建步骤: 第一步:获取到Hibernate发布包,可以去Hibernate官网上去下载,或者去GitHub直接

一步步学习Hibernate框架(四):采用jpa实现一对多关联映射(二)

上篇博客已经采用jpa注解来实现了一对多关联映射,将这种关联映射以外键的形式处理,现在来看看怎么以第三张表的形式处理.采用jpa注解来映射数据库要使用的jar包见上篇博客: 一步步学习Hibernate框架(三):采用jpa实现一对多关联映射(一) 现在看第二种方式:以第三张表的关系来体现 Group.java package com.tgb.zhudan; import java.util.List; import javax.persistence.CascadeType; import j

Hibernate框架学习(二)——api详解

一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. 1 //1.创建,调用空参构造(还没有读配置文件) 2 Configuration conf=new Configuration(); 3 //2.读取指令配置文件=>空参加载方法,加载src下的hibernate.cfg.xml文件 4 conf.configure(); 5 6 //3.读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载 7 //conf.addResource(

二、框架学习 (一)Hibernate框架学习 (2)Hibernate概念和api使用

目录 1 实体类编写规则 2 hibernate主键生成策略 3 实体类操作 (1)crud操作 (2)实体类对象状态 4 hibernate的一级缓存 5 hibernate的事务操作 (1)事务代码规则写法 6 hibernate其他的api(查询) 正文 实体类编写规则 1 实体类里面属性是私有的 2 私有属性使用公开的set和get方法操作. 3 要求实体类有属性作为唯一值(一般使用id值) 4 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类 (1)八个基本数据类型对应的

JavaWeb学习之Hibernate框架(二)

hibernateAPI详解 Configuration 创建 加载主配置 创建sessionFactory SessionFactory session 获得事务 增 查 改 删 Transaction封装事务的操作 打开事务 提交事务 回滚事务 CRM练习:保存客户 CRM:customer relation manager 客户关系管理系统 1.创建web项目 2.导包 hibernate包.数据库驱动包.标签库包.BeanUtils包 3.引入静态页面 4.搭建hibernate框架 5

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

hibernate 框架学习笔记---网上摘抄的一个非常好的例子

编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao.查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考. 首先定义接口泛型DAO接口 GenericDao package com.th.huz; import java.io.Serializable;import java.util.Collection;import java.util.Iterator;import java.uti