知识大全 编程技术分享:Hibernate开发心得

Posted

篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 编程技术分享:Hibernate开发心得相关的知识,希望对你有一定的参考价值。

编程技术分享:Hibernate开发心得  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  hibernate核心接口

  Session Transaction Query Configuration

  Configuration 配置 根启动Hibernate 创建SessionFactory对象

  SessionFactory 初始化Hibernate创建Session对象

  Sesssion 负责保存 更新 删除 加载和查询对象

  Transaction 管理事务

  Query和Criteria 执行数据库查询

  Query query = session createQuery( from Customer c where c name =:name );    query setParameter( name tom Hibernate STRING);

  Sessin 接口方法

  save()     updata()     delete()     load()     find()

  Session 通过 SessionFactory opensession()方法获得     控制事务一起Transaction    Session session = SessionFactory openSession();    Transaction tx = null ;    try        tx = session begionTransaction();        //逻辑方法        mit();        catch(Exception e)          e printStackTace();          if(tx != null)tx rollback();          thows e ;        finlly          session close();   

  //session save(customers)执行下列SQL语句

  insert into CUSTMERS (ID NAME EMAIL PASSWORD PHONE ADDRESS SEX IS_MARRIED DESCRIPTION       IMAGE BIRTHDAY REGISTERED_TIME ) VALUES ( TOM SHANGHAI M       I AM VERY HONEST @ NULL);

  //session find( from customer as c order by c name asc )执行下列SQL语句     select * from CUSTOMERS order by name asc ;

  //(customer)session load(customer class customer_id)执行下列SQL语句     select * from CUSTOMERS WHERE ID = ;    update CUSTOMERS SET NAME = TOM EMAIL = TOM@YAHOO ADDRESS = BEIJING WHERE ID = ;

  //session delete( from CUSTOMER AS C );执行下列SQL语句     select * from CUSTOMERS ;    DELETE FROM CUSTOMERS WHERE ID = ;    或是 session load(customers class id);          session delete(customer);    或是           session load(customers class new int( ));

  /////////////////映射对象标识符

  Hib中的标识符来建立内存中的对象和数据库表中记录的对应关系 对象的OID和数据库表的主键对应 为了保证OID的唯一性和不可变性 应该让Hib给OID赋值

  /////////////////映射一对多关联关系

  在关系数据库中 只存在外键参照关系 而且总是由many方参照one方 为了消除数据冗余 关系性数据库只能支持多对一或是一对一的单向关联

  /////////////////操作持久化对象

  session的实体对象状态分为三种 游离对象 持久化对象 临时对象

  临时对象 不处于session的缓存中 不和任何的session实例关联 数据库中无记录

  例 order o = new order() 通过new刚刚创建的java对象处于临时状态

  session的delete方法使游离态 持久化的对象转变为临时状态

  持久化对象 位于session的缓存中 总是被一个session实例关联 和数据库中记录对应

  session的save方法使临时态变为持久化

  session的load get方法返回对象总是处于持久化状态

  session的find方法返回list存放的都是持久化对象

  session的update saveOrUpdate lock方法使游离态转换为持久态对象

  一个持久化对象和临时对象有级联保存的时候session在清空缓存的时候会

  把临时对象转化为持久对象

  游离态对象 不位于session的缓存中 不被session关联 数据库中可能有记录

  session的close方法使缓存清空 缓存中的所有持久化对象变为游离态

  session的evict方法从缓存中删除一些持久化对象 不推荐使用应该通过

  查询语句来控制对象的深度           

  ////////////////session的保存 更新 删除和查询

  保存 session save();      customer c = new coustomer();      c setid(new log( )) ;      c setname ( tom );      session s = sessionF opensession();      transaction tx = s beginTransaction();      s save(c);      mit();      session close();        如果想改变OID的值应使用save的重载save(customer new long( ));不推荐使用        save方法是当session清理缓存时才会执行insert语句 如果在save以后又对对象进行   修改session会再执行一次update操作

  如果save方法已执行不能修改其OID属性

  更新 session update();      customer c = new customer();      c setname( tom );      session s = sessionF opensession();      Transaction tx = s beginTransaction();      s save(c);      mit();      session close();//游离态      c setname( too );      session update(c);      session close();//使session 和c关联都会执行一次update修改操作        session的saveOrUpdate方法同时包含了save和update方法 如果传入的是临时对象调  用save方法 如果传入是游离态就调用update方法如果传入是持久化 就直接返回

  查询 session的load get和find方法

  session的load和get方法根据给定的OID从数据库中加载一个对象 load方法在没有找  到对象时抛出notFoundException异常 get方法返回null

  get和load和其他查询方法返回的对象位于session的缓存中 修改了对象的属性后   session清理缓存时 会根据持久化对象的属性来更新数据库

  list CUSTOMER = SESSION FIND( FROM CUSTOMER AS C WHERE C ID = )返回关于 customer的一个集合

  删除 session delete方法 由于从数据库中删除对象对应的记录 如果出入的是持久化对象session就计划执行一个delete语句 如果出入的参数是游离态对象 先使它成为持久化对象 然后计划执行一个delete语句 session只有在清理缓存的时候才会执行delete语句 只有当调用session的close()方法时才会从session的缓存中删除对象

  session delete( from customer as c where c id > ) ;

  /////////////session的检索机制 load() get() find();

  用来对数据库中检索对象 load()和get()方法按照给定的OID加载一个持久化对象 find方法按照参数指定的HQL语句加载一个或多个持久化对象

cha138/Article/program/Java/ky/201311/28682

相关参考

知识大全 用Delphi进行OpenGL编程学习心得

用Delphi进行OpenGL编程学习心得  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在开发

知识大全 js原生appendChild的bug解决心得分享

js原生appendChild的bug解决心得分享  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Extjs4 Treegrid 使用心得分享(经验篇)

Extjs4Treegrid使用心得分享(经验篇)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

分享银屑病的护理心得

对于银屑病这种慢性皮肤病,由于银屑病易复发,所以多数患者一旦患病后疾病的病情反反复复,难以治疗,让患者痛苦不堪。然而正是因为这一点,就有些通过一定的治疗一级护理治愈了病情的患者,为了促使更多的患者,帮

分享银屑病的护理心得

对于银屑病这种慢性皮肤病,由于银屑病易复发,所以多数患者一旦患病后疾病的病情反反复复,难以治疗,让患者痛苦不堪。然而正是因为这一点,就有些通过一定的治疗一级护理治愈了病情的患者,为了促使更多的患者,帮

分享怎样饲养龙鱼的心得

每个人都有自己的喜好,我的喜好就是养龙,在初期养龙时,我十分狂热并带有盲目性,一看到好龙就心痒一定要把它弄到手,相信这也是每位初养龙鱼爱好者必备的缺点;由于我的盲目性导致对龙鱼的饲养知识疏忽学习,管理

分享怎样饲养龙鱼的心得

每个人都有自己的喜好,我的喜好就是养龙,在初期养龙时,我十分狂热并带有盲目性,一看到好龙就心痒一定要把它弄到手,相信这也是每位初养龙鱼爱好者必备的缺点;由于我的盲目性导致对龙鱼的饲养知识疏忽学习,管理

知识大全 技术分享——开发Eclipse自定义控件

技术分享——开发Eclipse自定义控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在基于

知识大全 从Hibernate的映射谈编程思想

从Hibernate的映射谈编程思想  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多java

知识大全 我也来分享些群面心得吧

ms最近好多人要去群殴哦我一辈子就群殴过4次,一次失败(三年前),两次成功,还有一次等待中做过1次群殴的面试官可能说得也不对大家可以一起讨论讨论啦其实前面大家说的都非常有道理啦就是要点太多可能到时候用