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

  • 相关阅读:
    开源爬虫综述
    html页面工具-htmlUnit
    Html JavaScript网页制作与开发完全学习手册
    移动互联网之路-李晓斌
    算法图解
    游戏编程算法与技巧
    一秒解决CentOS下service 功能 不能使用 bash: service: command not found
    LINUX企业应用案例精解 第2版 李晨光
    深入分析GCC
    嵌入式LINUX基础教程 第2版
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3868495.html
Copyright © 2011-2022 走看看