博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中Session的几个方法的简单说明
阅读量:7155 次
发布时间:2019-06-29

本文共 4094 字,大约阅读时间需要 13 分钟。

       Hibernate对普通JDBC的操作进行了轻量级的封装,使得开发人员可以利用Session对象以面向对象的思想来实现对关系数据库的操作。

一般通过Configuration对象读取相应的配置文件来创建SessionFactory,然后通过SessionFactory对象获取Session对象,获取Session对象之后,我们就可以相关数据的操作了。

下面来介绍一下Session对象的几种方法:

 

1、Session.save()
     Session.save(Object obj):把瞬时状态对象obj加入到Session缓存中,使之成为持久化对象;选用映射文件指定的标识生成ID;当Session缓存被清理时,向数据库发出一条insert语句,在数据库中新增一条与该持久化对象相应的记录。
     在执行Session.save(obj)后,Session清理缓存之前,如果obj对象属性被修改,那么最终存入数据库的值将是最后修改后的值,此过程中ID不能被修改。
1 //新增一个用户对象    2 public void addUser(User user) {   3         Session session = HibernateUtil. currentSession ();   4         Transaction ts = null ;   5         try {   6             ts = session.beginTransaction();   7             session.save(user);   8             ts.commit();   9         } catch (Exception e){  10             ts.rollback();  11             System. out .println( "---error---" );  12             e.printStackTrace();  13         } finally {  14             HibernateUtil. closeSession ();  15         }  16     }

 

2、Session.delete()
       使用delete()方法删除数据。如果传入的参数是持久化对象,Session就计划执行一个delete语句。如果传入的参数是游离态对象,就会是游离态对象被Session关联,使它变为持久化对象,然后计划执行一个delete语句。
       Session只有在清理缓存的时候才执行delete语句;只有当调用Session的close()方法是,才会从Session的缓存中删除该对象。
1 public void removeUser() {   2         Session session = HibernateUtil. currentSession ();   3         Transaction ts = null ;   4         User user = null ;   5         try {   6             ts = session.beginTransaction();   7             user = (User)session.get(User. class , new Integer( 1 )); //加载一个持久化对象   8             session.delete(user); //计划执行一个deleted操作   9             ts.commit(); //在清理缓存时,数据库执行deleted操作  10         } catch (Exception e){  11             ts.rollback();  12             System. out .println( "---error---" );  13             e.printStackTrace();  14         } finally {  15             HibernateUtil. closeSession (); //从缓存中删除User对象,关闭Session  16         }  17     }  18   19   20         Session session = HibernateUtil. currentSession ();  21         Transaction ts = null ;  22         try {  23             ts = session.beginTransaction();  24             /** 25             * 假设user是一个游离态对象,调用session.delete(user)会使其先变为 一个持久化对象,然后再计划执行一个deleted操作 26             */  27             session.delete( user );  28             ts.commit(); //在清理缓存时,数据库执行deleted操作  29         } catch (Exception e){  30             ts.rollback();  31             System. out .println( "---error---" );  32             e.printStackTrace();  33         } finally {  34             HibernateUtil. closeSession (); //从缓存中删除User对象,关闭Session  35     }

 

3、Session.get()
     如果不确定数据库中是否有匹配的记录存在,即可使用get()方法加载对象,使用get()方法会立刻访问数据库,如果数据库中不存在匹配的记录,则会返回null。
1 //使用get()方法加载一个指定id的User对象    2 public   void  getUserById( int  id) {   3         Session session = HibernateUtil. currentSession ();   4         Transaction ts =  null ;   5         User  user  =  null ;   6          try {   7             ts = session.beginTransaction();   8             user = (User)session.get(User. class , id);   9             ts.commit();  10         } catch (Exception e){  11             ts.rollback();  12             System. out .println( "---error---" );  13             e.printStackTrace();  14         } finally {  15             HibernateUtil. closeSession ();  16         }     17   }

 

4、Session.load()
     load()方法返回对象的代理,只有在返回对象被调用是Hibernate才会发出SQL语句查询对象。如果指定的记录不存在,则会抛出异常,这个与get()方法是不同的。
1 //使用load()方法加载一个指定id的User对象    2 public   void  getUserById( int  id) {   3         Session session = HibernateUtil. currentSession ();   4         Transaction ts =  null ;   5         User  user  =  null ;   6          try {   7             ts = session.beginTransaction();   8             user = (User)session. load (User. class , id);   9             ts.commit();  10         } catch (Exception e){  11             ts.rollback();  12             System. out .println( "---error---" );  13             e.printStackTrace();  14         } finally {  15             HibernateUtil. closeSession ();  16         }     17   }

 

待补充:

5、Session.update()
 
6、Session.beginTrasaction()
 
7、Session.close()
 
8、Session.connection()
 
9、Session.saveOrUpdate()

转载地址:http://qiegl.baihongyu.com/

你可能感兴趣的文章
触发器、存储过程和函数三者 区别
查看>>
xmake高级特性之合并静态库
查看>>
xmake 描述语法和作用域详解
查看>>
openstack测试工具使用二 --- tempest 的部署和使用
查看>>
CHGRP(1)
查看>>
我的友情链接
查看>>
实战LVS_DR模式(手把手了)
查看>>
LC3视角:Kubernetes下日志采集、存储与处理技术实践
查看>>
K8s中Pod健康检查源代码分析
查看>>
ansible命令(二)
查看>>
手机QQ轻聊版,3.2.0升级3.3.1区别
查看>>
OpenvSwitch概念和原理
查看>>
UE设置,不生成.bak文件
查看>>
Zabbix监控redis 状态
查看>>
Webdriver-PageObject模式之PageFactory 测试组 Tomi
查看>>
Objective-C中实现“多继承”
查看>>
Mysql--error:no query specified
查看>>
文件下载【PHP】
查看>>
iostat命令介绍及C++对其返回值的提取处理
查看>>
手机剩余内存计算方法
查看>>