• Session中的方法


    Session

    管理一个数据库的任务单元,即管理数据库中的增删改查操作,提交事务.

    方法CRUD:save(),delete(),load(),get(),update(),saveOrUpdate(),clear().flush()

    session.beginTransaction();

    session.save(Object obj);

    session.getTransaction().commit();

    session.close();

    get()load()的区别

    l  查找时,都会优先从session的缓存中查找.

    l  查找不存在对应记录时,表现不一样.load方法查找不到当时不会报错(用的时候报错),get查找不到时会报错.

    l  Load返回的是代理对象,等到真正要用到对象的内容时才发起SQL语句.get直接发起SQL语句从数据库中取出,不会延迟.

    Update()方法

    1 更新detached对象,更新完成之后成为persistent.

    2 更新transient对象会报错. 更新自己设定id(前提是id在数据库中存在)的transient对象可以.

    3 更新persistent对象只要设定不同字段就会发生更新

    4 更新部分更改的字段(三种方法)

    l  XML设定property标签的update=true|false属性,

    annotation设定@Column(updatable=false)属性,这种方式少用,不z灵活.

    l  XML设定class标签的dynamic-update=”true”属性,

    同一个session中可以,跨session不行.跨session时的实现方法不过可以用session的merge().merge方法会先从数据库load,将得到的和数据库中的进行对比,再update更改过的字段.

    JPA1.0 Annotation没有对应的属性,Hibernate

    l  使用HQL(EJBQL)(建议使用)

    clear()方法:

    load()和get()方法查找会优先查找session缓存。调用clear()方法会强制清除session缓存,不会与数据库打交道.

    flush()方法:

    flush()方法强制从内存(session缓存)到数据库的同步。默认情况下是session的事务提交时才同步.不常用.

  • 相关阅读:
    深入理解委托、匿名方法和 Lambda 表达式
    常见SQL问题
    LeetCode题解——四数之和
    把中台说清楚
    程序员们的三高:高并发、高性能、高可用
    论文查重是怎么查的
    LeetCode题解——最长回文子串
    六百字读懂 Git(转)
    SQL中ON和WHERE的区别
    链表排序之堆排序
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3868495.html
Copyright © 2020-2023  润新知