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 持久化的对象只要设定不同字段就会发生更新

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

Session中的方法,布布扣,bubuko.com

时间: 2024-10-24 19:51:16

Session中的方法的相关文章

hibernate架构之session中get与load方法的区别

hibernate是一个用于连接数据库的升级版JDBC,与一般JDBC不同的是,hibernate架构是通过hql进行查找,通过session建立连接.其工作原理是:将实例分为瞬时状态.持久状态.游离状态,通过hql对持久状态的实例进行CRUD.在学习的过程中我们遇到了这样的一个现象:用Session对象调用get()方法和load()方法获取对象时,类似的代码会分为两种结果,get方法运行成功,load方法会报错,代码示例如下: get()方法源代码: Session session= Hib

ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Session,需要对Web Method做如下处理 [WebMethod(EnableSession = true)]public void usingSession(){    Session["Name"] = "Name";} 如果不加EnableSession = tru

扫盲:php session缓存至memcached中的方法

memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用.这是一套开放源代码软件,以BSD license授权协议发布.[1] memcached仅支持一些非常简单的命令 比如get(获取某个键值) set(用来设定或保存一个缓存): 其本身是缓存服务器,但本身无法决定缓存任何数据,其缓存机制依赖于服务端和客户端两者必不可少(存储是由服务端进行存储,但存储什么是由客户端进行决定的) 因此客户端

asp中设置session过期时间方法总结

http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载 asp中默认session过期时间为20分钟,很多情况下不够,今天有客户要求很多就要重新登录了,所以准备了这篇文章,方便需要的朋友 如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改 时间设置要放在前面

Hibernate 中 load() 方法导致的 noSession 异常

之所以要写这个,是因为最近碰到了一个延迟加载的 load() 导致出现 noSession 的异常. 解决这个问题需要用到一个本地线程的对象,也就是 ThreadLocal 类,之前写过关于这个对象,可以看这个博客[本地线程 ThreadLocal 类] 我在数据层中封装了一个 load() 方法,根据用户 Id 获取用户对象: public UserModel get(Long uuid) { return this.getHibernateTemplate().load(UserModel.

php自定文件保存session的实用方法

session.inc.php文件:定义session的文件存储,session解决方案,就是要提供在php脚本中定义全局变量的方法,使得这个全局变量在同一个session中对于所有的php脚本都有效,我们都知道,session不是一个简单的时间概念,一个session中还包括了特定的用户和服务器,因此更详细地讲,在一个session定义的全局变量的作用范围,是指这个session所对应的用户所访问的所有php,例如a用户通过session定义了一个全局变量$user="wind"中,

spring mvc将model存入到session中去

今天需要针对预览功能将参数通过window.open(url+参数)的方式请求后台方法,进行页面跳转,然而当参数太大时,通过url的方式会导致请求参数过长而失败.所以只能改用post方式,将参数以bean或者requestbosy的方式传递给controller,但是这种方会使原来能自动跳转的url不跳转,目前还没找到原因.通过redirect的方式会导致塞到model的参数无法获取,因此需要将model参数存入到session中去.参考了以下两篇原文,供大家参考. 原文参考:http://bl

ThreadLocal实现session中用户信息 的线程间共享(精)

ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像其它变量一样(局部.全局.静态)也是一种变量类型,只是他是线程变量,更直白的说他是一种变量作用域,即他的作用域是当前线程(比如用户的一个请求算一个线程),ThreadLocal用于在一个线程间共享. ThreadLocal的set(String,Object)方法就是设置这个变量的名称.同时给这个变量赋值.当然同时也给予了这个变量的类型. @SuppressWarnings("unchecked")

hibernate session中的load与get

一.get不支持lazy,load支持lazy. 二.采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常. 三.执行load()时,先从Session查找当前的对象是否存在,如果不存在,则从数据库中去查询,如果不存在这条记录,则扔异常:执行get()的时候,不论Session中是否存在当前对象,直接从数据库中去查询,如果不存在,则返回null. 四.load()方法可以返回实体的代理类实例,而get()永远只返回实体类. get的例子: public void testG