• 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的事务提交时才同步.不常用.

  • 相关阅读:
    【学习笔记】数据库设计那些事
    django rest-farme-work 的使用(3)
    django rest-farme-work 的使用(2)
    docker 的安装
    中国电信线CTF线下选拨writeup
    django rest-farme-work 的使用(1)
    谈谈python里面关于任务队列
    kubernetes 部署
    凯撒密码的加密解密
    Linux 密码的暴力破解
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3868495.html
Copyright © 2020-2023  润新知