zoukankan      html  css  js  c++  java
  • 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的事务提交时才同步.不常用.

  • 相关阅读:
    数组指针:a pointer to an array,即指向数组的指针
    爬取人人网新鲜事python版本
    python的专用类方法
    北邮校园网管登陆python脚本
    北邮人论坛python模拟登录程序
    结对项目四则运算“软件”升级版
    了解大数据的特点、来源与数据呈现方式
    第一次作业:准备
    第二次作业:分布式版本控制系统Git的安装与使用
    第三次作业 四则运算
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3868495.html
Copyright © 2011-2022 走看看