关于Session方法

Session的load()方法和get()方法根据给定的对象id从数据库表中加载一条记录并转换为一个特定的持久类对象。load()方法在没有找到特定的持久类对象所对应的数据库表中的记录时,会抛出ObjectNotFoundException,而get()方法返回null。

get()方法和load()方法返回的对象位于Session的缓存中,因此党对他的属性进行修改后,Session清理缓存时,会根据持久化对象的属性来同步更新数据库。

load()和get()方法的区别:

(1)load()方法:如果load方法不能再缓存或者数据库中找到对象,会抛出异常;load()方法从不返回null;load()方法返回一个代理类的实例而不是真正的持久实例。代理是一个占位符,当第一次调用他时才装载真正的对象。

(2)get()方法:如果没有找到对象返回null,另一方面,get()方法从不返回代理类而是直接返回实体类。load()方法可以充分利用内部缓存和二级缓存中的现有数据,而get()方法仅仅在内部缓存中进行数据查找,如果没有发现对应的数据,将越过二级缓存,直接调用SQL完成数据读取。

该如何选择load()方法和get()方法:

(1)load()方法应用在对象存在的情况下加载

(2)利用get()方法可以首先判断对象是否存在,然后在获得它。

时间: 2024-11-07 04:36:14

关于Session方法的相关文章

Hibernate之Session方法

对象的状态: Session中  数库中 ----------------------- 临时 无无 持久化 有最终会有 游离 无有 删除 调用了delete()方法后 1,操作实体对象的Session方法 save() update() saveOrUpdate() delete() 2,操作缓存的Session方法 clear() 清空Session缓存,不会执行sql语句. evict() flush() 马上执行sql语句,不会清楚Session缓存. 3,查询实体对象的Session方

Struts2获取Session方法

Struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 方法1:IOC方式action类实现SessionAware接口,并创建一个MAP对象sessionpublic class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{ public void setServletRequest(Htt

if判断条件,session方法等

if条件判断中,0,NULL,''都是false session方法 session('_userID', $userInfo['userID']); //切换数据库 $infoClass = M()->db(1,C('DB_CONFIG_SYN'))->table('syn_userinfo'); //字符串替换<?phpecho strtr("Hilla Warld","ia","eo");?> 输出:Hello Wo

ThinkPHP函数详解:session方法

Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法 session($name, $value='') 参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值.获取或者操作.Value(可选):要设置的session值,如果传入null表示删除session,默认为空字符串 返回值 见详(根据具体的用法返回不同的值)

常用代码块模板,get,load区别,session.get(,)参数解释,session方法总结

设置模板代码步骤:window->java->Templates->new模板代码Session session = HibernateUtils.openSession(); try { HibernateUtils.startTransaction(); /** * 具体的业务代码 */ HibernateUtils.commitTransaction(); } catch (Exception e) { HibernateUtils.rollBackTransaction(); t

关于requests的session方法保持不了cookie的问题。

最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的set-cookie语句中的cookie.后来查了很多资料,才终于明白.原来requests只能保持 cookiejar 类型的cookie,而我们手动构建的cookie是dict类型的.所以要把dict转为 cookiejar类型,于是我又在网上查,在几乎打算放弃的时候终于找到了一个把dict转为c

php使用 memcache 来存储 session 方法总结

设置session用memcache来存储 方法I: 在 php.ini 中全局设置 session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211" 方法II: 某个目录下的 .htaccess php_value session.save_handler "memcache" php_value session.save_path "tcp://127.0.0.1:1

Struts清楚session方法

//第一种方法(继承SessionAware类来取得session,然后用invalidate()方法清理)public class ExitAction extends ActionSupport implements SessionAware{ @Overridepublic String execute() throws Exception {HttpServletRequest request = ServletActionContext.getRequest();HttpSession

Struts2后台使用Request和Session方法

在Struts2后台,如果需要使用Request和Session的话,可以通过下面的方法: 主要是利用了com.opensymphony.xwork2.ActionContext类以及ora.apache.struts2.ServletActionContext类,具体的方法如下所示.获得request对象:1).HttpServletRequest request = ServletActionContext.getRequest ();2).ActionContext ct= ActionC

形散神不散:Tomcat 下多个虚拟目录共享session方法

最近开发项目,碰到跟其他团队合作开发,虽然同为java,但是基础架构完全不同,为了避免冲突,我们采用同一web容器,部署不同的服务,共享session的机制,达到散文的精髓:形散神不散. 首先看tomcat配置,打开conf/server.xml,找到Host节点,增加两个Context节点如下: <Context path="/master" docBase="master" reloadable="true" crossContext=