Hibernate常用的接口和类---Session接口☆☆☆☆☆

一.特点

  • Session是在Hibernate中使用最频繁的接口。也被称之为持久化管理器。它提供了和持久化有关的操作,比如添加、修改、删除、加载和查询实体对象
  • Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
  • Session是线程不安全的
  • 所有持久化对象必须在 session 的管理下才可以进行持久化操作
  • Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处
  • 持久化类与 Session 关联起来后就具有了持久化的能力

二.注意

  • Session不是线程安全的。应避免多个线程使用同一个Session实例
  • Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例
  • Session有一个缓存,被称之为Hibernate的一级缓存。每个Session实例都有自己的缓存

三.常用的方法

1.save

   /**
     * 测试session.save();
     */
    @Test
    public void TestSave(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        // 编写保存代码
        Customer c = new Customer();
        // c.setCust_id(cust_id);   已经自动递增
        c.setCust_name("xx");
        c.setCust_mobile("110");

        // 保存客户
        session.save(c);

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }

2.get(Class,id)

    /**
     * 测试Session.get(class,id)
     */
    @Test
    public void TestGet(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        //查询数据
        Customer c = session.get(Customer.class, 1L);

        System.out.println(c.toString());

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }

 3.delete(obj)

    /**
     * 测试Session.delete(obj)
     * 凡是删除或修改,都先查询在操作
     */
    @Test
    public void TestDelete(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        //查询数据
        Customer c = session.get(Customer.class, 1L);

        //删除数据
        session.delete(c);

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }

 4.update(obj)

    /**
     * 测试Session.update(obj)
     * 凡是删除或修改,都先查询在操作
     */
    @Test
    public void TestUpdate(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        //查询数据
        Customer c = session.get(Customer.class, 2L);

        //修改数据
        c.setCust_name("YYYY");

        //删除数据
        session.update(c);

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }

 5.saveOrUpdate(obj)

    /**
     * 测试Session.saveOrUpdate(obj);
     * 凡是删除或修改,都先查询在操作
     */
    @Test
    public void TestSaveOrUpdate(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        //查询数据
        Customer c = session.get(Customer.class, 2L);

        //修改数据
        c.setCust_name("zzzz");

        //删除数据
        session.saveOrUpdate(c);

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }

 6.CreateQuery();

    /**
     * 测试Session.createQuery();
     * 查询表
     */
    @Test
    public void TestQuery(){

        // 创建session对象
        Session session = HibernateUtils.openSession();

        // 开启事务
        Transaction tr = session.beginTransaction();

        //创建查询接口
        Query qr = session.createQuery("from Customer");

        List<Customer> list = qr.list();
        for (Customer customer : list) {
            System.out.println(customer.toString());
        }

        // 提交事务
        tr.commit();

        // 释放资源
        session.close();
    }
时间: 2024-08-02 19:02:36

Hibernate常用的接口和类---Session接口☆☆☆☆☆的相关文章

Hibernate中的五大核心类和接口

Hibernate中的五大核心类和接口 Configuration(类) : 加载配置文件hibernate.cfg.xml文件中的配置信息,从而得到: 1).hibernate的底层信息: 数据库连接,jdbc驱动,方言(dialect),用户名 ,密码 2).hibernate的映射文件(*.hbm.xml) SessionFactory(接口): 通过configuration创建的sessionFactory, 可以用来获得session openSession(); sessionFa

数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结

一.数据结构:4种--<需补充> 1.堆栈结构:     特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素;     代表类:Stack;     其它:main方法最后一个出去; 2.数组结构:     特点:一片连续的空间;有索引,查找快;增删慢;     代表类:ArrayList;     应用场景:用于查询多的场景,如天气预报; 3.队列结构:     特点:FIFO(先进先出);入口/出口在两侧;     代表:Queue接口     应用场景

SpringMVC核心类与接口

DispatcherServlet   -- 前置控制器 HandlerMapping接口 -- 处理请求的映射 HandlerMapping接口的实现类: SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上 HandlerAdapter接口 -- 处理请求的映射 AnnotationMethodHandlerAdapter类

Spring MVC学习------------核心类与接口

核心类与接口: 先来了解一下,几个重要的接口与类.现在不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServlet   -- 前置控制器 HandlerMapping接口 -- 处理请求的映射 HandlerMapping接口的实现类: SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上

精进不休(1) php - 数据类型、变量、常量、函数、类、接口、特性

1.数据类型php有八种基本的数据类型,包含了:四种标量类型:boolean(布尔型).integer(整型).float(浮点型).string(字符串)两种复合类型:array(数组).object(对象)两种特殊类型:resource(资源).NULL要想知道某个变量是属于某个类型,可以使用gettype()函数,例如: <?php $a = 100; echo gettype($a); //integer 2.变量php中定义变量以$开头,变量名首字母必须为字母(a-z A-Z),下划线

类继承接口、使用接口实例化 与 使用类实例化

一. 接口不能实例化,用接口的实现类可以实例化,将实现类的对象在内存中的地址指向接口,这个接口就可以使用了 二. 实现接口的类 实例 = new 实现接口的类()// 这样用不好吗? //这样已经不是好不好的问题了,这样的话,要接口有什么用? //用接口就是让实例和实现类的耦合度降低. //让程序更加容扩展. 以下是问题之外的知识,想看可以往下,不想看跳过. 接口 实例 = new 实现接口的类A() 接口 实例 = new 实现接口的类B() 接口 实例 = new 实现接口的类C() 这样的

Hibernate常用接口

Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进一步熟悉,为我们下一步的编码做好充分的准备. ORM是复杂的,可以看看Hibernate发布里的javadoc,100+MB.如果我们单单去阅读它的API,估计一年你才能看完.然而,我们仅仅是使用他,并不需要对它了解的十分完全.我们只需要了解它的常用核心类和接口就行了.就像数据库是非常复杂的,然而我

hibernate相关类与接口

Configuration 类: •Configuration 类负责管理 Hibernate 的配置信息.包括如下内容: –Hibernate 运行的底层信息:数据库的URL.用户名.密码.JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件). –持久化类与数据表的映射关系(*.hbm.xml 文件) •创建 Configuration 的两种方式 –属性文件(hibernate.properties): Configuration cfg =

Hibernate核心类和接口详细介绍

一.hiobernate核心类和接口预览图 二.hibernate.properties 这个文件是以前老版本使用的 类似于hibernate.cfg.xml文件:作用和hibernate.cfg.xml一致. 三.hibernate.cfg.xml (1)详细介绍 ①该文件主要用于指定各个参数,是hibernate核心文件 ②默认放在src目录下,也可以放在别的目录下. ③指定连接数据库的驱动.用户名.密码.url.连接池.. ④指定对象关系映射文件的位置. ⑤也可使用hibernate.pr