知识大全 编程技术分享: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编程学习心得 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在开发
知识大全 js原生appendChild的bug解决心得分享
js原生appendChild的bug解决心得分享 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Extjs4 Treegrid 使用心得分享(经验篇)
Extjs4Treegrid使用心得分享(经验篇) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
对于银屑病这种慢性皮肤病,由于银屑病易复发,所以多数患者一旦患病后疾病的病情反反复复,难以治疗,让患者痛苦不堪。然而正是因为这一点,就有些通过一定的治疗一级护理治愈了病情的患者,为了促使更多的患者,帮
对于银屑病这种慢性皮肤病,由于银屑病易复发,所以多数患者一旦患病后疾病的病情反反复复,难以治疗,让患者痛苦不堪。然而正是因为这一点,就有些通过一定的治疗一级护理治愈了病情的患者,为了促使更多的患者,帮
每个人都有自己的喜好,我的喜好就是养龙,在初期养龙时,我十分狂热并带有盲目性,一看到好龙就心痒一定要把它弄到手,相信这也是每位初养龙鱼爱好者必备的缺点;由于我的盲目性导致对龙鱼的饲养知识疏忽学习,管理
每个人都有自己的喜好,我的喜好就是养龙,在初期养龙时,我十分狂热并带有盲目性,一看到好龙就心痒一定要把它弄到手,相信这也是每位初养龙鱼爱好者必备的缺点;由于我的盲目性导致对龙鱼的饲养知识疏忽学习,管理
技术分享——开发Eclipse自定义控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在基于
从Hibernate的映射谈编程思想 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多java
ms最近好多人要去群殴哦我一辈子就群殴过4次,一次失败(三年前),两次成功,还有一次等待中做过1次群殴的面试官可能说得也不对大家可以一起讨论讨论啦其实前面大家说的都非常有道理啦就是要点太多可能到时候用