
d_hibernate
文章平均质量分 67
李_逍遥
J2EE开发工程师
展开
-
Session的几个主要方法
Session的几个主要方法 1.save,persist保存数据,persist在事务外不会产生insert语句。 2.delete,删除对象 3.update,更新对象,如果数据库中没有记录,会出现异常。 4.get,根据ID查,会立刻访问数据库。 5.Load,根据ID查,(返回的是代理,不会立即访问数据库)。 6.saveOrUpdate,merge(根据ID和ve原创 2013-03-18 21:03:00 · 604 阅读 · 0 评论 -
懒加载
概念Lazy的概念就是只有在真正使用对象时,才会去创建。对hibernate而言,就是真正加载时才发出加载Sql语句。 延迟加载机制是为了避免一些无谓的性能开销而提出来的。重点牢记1.Load支持延迟加载,get不支持延迟加载。2.lazy的生命周期与session相同,lazy加载必须依赖于session一直开启。3.Hibernate lazy属性,在3.x后是默认打开的,原创 2013-03-19 19:47:51 · 479 阅读 · 0 评论 -
类继承关系映射
类继承关系映射(1)DB表之间不存在继承关系,要把JavaBean中的继承关系映射到关系数据库中的有三种映射方式:·每个类建一张表·所有类建一张表·只为具体类建表eg. 以公司Company(一方)和员工Employee(多方),Employee有两个子:类小时工HourlyEmployee和正式员工SalariedEmployee1)每个类建一张表可以有效减少数据原创 2013-03-19 19:48:09 · 506 阅读 · 0 评论 -
一对多与多对一关联关系
一对多与多对一关联关系在hibernate中关联关系一般都是通过外键来关联的,(我在学习的时候也有个错误的理解,这个外键不是在数据库表上建立的,经过试验在数据库中不建立外键关系,只在hibernate中设置完全可以实现同样的效果),这时的关联可以分为单向与双向两种。所谓的单向就是说,在两端中的任一端不知知道另一端的存在,而另一端确清楚的小的另一端;双向当然就是双方互知了。1、单向关联原创 2013-03-18 21:05:28 · 1036 阅读 · 0 评论 -
组件关联关系
组件(Component)映射Component(组件)是一个被包含的对象,它作为值类型被持久化,而非一个被引用的实体。“component(组件)”这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。在hibernate中可借助Component节点的定义,完成对复杂数据表的细分。在hibernate语义中,将某个实例对象中的一个逻辑组成称为Component(组件)。C原创 2013-03-18 21:06:51 · 1019 阅读 · 0 评论 -
多对多关联
多对多关联关系多对多关联关系的建立需要借助第三个表来存储多对多关联关系信息的表。在介绍这个关系前先介绍一个小案例,前一阵子web2.0星期的时候,也流行一个应用,就是一般blog或者信息分类网站常用的一个技术——Tag。在下面的例子里我也将建立一个Tag应用。在写博客的时候,我们的文章并不一定只属于一种分类,比如我写了一篇文章吧,就拿现在这个为例,我可以说它是属于DataBase类的,原创 2013-03-18 21:06:21 · 529 阅读 · 0 评论 -
一对一关联
一对一关联根据各种教科书的例子,一对一关联可通过两种方式实现,通过主键关联和通过外键关联,这里我只介绍一下通过外键关联。在做一个例子,我在上面的程序中有一个User表,这里我在做一个IDCARD表,表里的内容设置了user的一些具体信息,他们是一对一的关系。IDCARD表的SQL:CREATE TABLE `idcard` ( `crd_id` int(11) NOT NUL原创 2013-03-18 21:05:53 · 582 阅读 · 0 评论 -
对象的集中状态
1、瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。2、持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。3、脱管(detached):数原创 2013-03-18 21:03:44 · 580 阅读 · 0 评论 -
HQL和Criteria
HQL(Hibernate Query Language) 面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创建方式: Query q = session.createQuery(hql);from Personfrom User u原创 2013-03-18 21:04:46 · 421 阅读 · 0 评论 -
inverse属性
Hibernate中的inverse在表关系映射中经常应用inverse的值有两种,“true”和“false”。inverse="false"是默认的值inverse的作用:在hibernate中是通过inverse的设置来决定是有谁来维护表和表之间的关系的。我们说inverse设立不当会导致性能低下,其实是说inverse设立不当,会产生多余重复的SQL语句甚至致使JDBC exc原创 2013-03-19 19:48:21 · 806 阅读 · 0 评论