Hibernate
tianlincao
09年毕业后一直从事J2EE企业应用的开发工作,有丰富的应用软件开发和优化经验。喜欢运动,崇尚一切自由的东西,关注行业新动态。tip:如果你不能改变世界,那就改变自己。
展开
-
hibenate的面试总结.
hibenate的面试总结. 可能现在大家常常还会遇到一个些面试的时候问一些关于hibernate的问题,我个人觉得,这些东西一般做过开发的人在使用上没有任何的问题的,但是如果是要你来说就不一定能够说好的,下面是从goole上找的一些常见的面试。 1.Hibernate session接口的get和load方法有何异同? 答: 其实它们也没有什么不同的, 作用其实都是一样的,但是有一定的区别,get是每次都会从数据库取数据以保证数据的可靠性,而load会返回proxy,相当于是一个存根,它的值会去hiber转载 2010-11-27 19:35:00 · 792 阅读 · 0 评论 -
hibernate二级缓存配置模板
ehcache.xml:defaultCache节点为缺省的缓存策略maxElementsInMemory 内存中最大允许存在的对象数量eternal 设置缓存中的对象是否永远不过期overflowToDisk 把溢出的对象存放到硬盘上timeToIdleSeconds 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉timeToLiveSeconds 指定原创 2012-02-28 20:45:31 · 551 阅读 · 0 评论 -
Hibernate N+1 问题
Hibernate3中取得多层数据的所产生的n+1 selects问题的解决。其实这个问题在Hibernate in Action中已经有很多种解决办法了。但我觉得其中最好的办法是用Criteria的FetchMode来解决,但是Hibernate in Action中写的很不详细。我昨晚试了好长时间来的到答案。下面总结一下。需求这样的,我有四张表(one,two,three,four转载 2011-11-04 17:28:07 · 8671 阅读 · 1 评论 -
Hibernate注释说明
声明实体Bean@Entitypublic class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; }}@Entity 注解将一个类声明为实体 Bean, @Id 注解声明了该实体Bean的标识属性。Hibernate 可以对类的属性或者方法进行注解。属性对应field类别,方法的 getXxx()转载 2011-01-09 17:01:00 · 764 阅读 · 0 评论 -
Hibernate/JPA中的继承映射 实体extends的关系(每个子类独立一个表)
Hibernate/JPA中的继承映射 Hibernate中的继承映射<br /> <br /><br />Hibernate的继承映射包含了三种不同的策略:每簇类使用一个表; 每个子类一个表; 每个具体内一个表(有限制)。 <br />假设我们有四个类Animal,Dog,Cat,其代码如下:<br />文件名:Animal.javaclass Animal {<br /> private String identifier;<br /> private String name;<br />转载 2011-01-08 22:58:00 · 6033 阅读 · 0 评论 -
Hibernate openSession() 和 getCurrentSession的区别
Hibernate openSession() 和 getCurrentSession的区别getHiberanteTemplate 、getCurrentSession和OpenSession 采用getCurrentSession()创建的Session会绑定到当前的线程中去、而采用OpenSession()则不会。 采用getCurrentSession()创建的Session在commit或rollback后会自动关闭,采用OpenSession()必须手动关闭。 采用getCurrentSessi转载 2010-12-26 17:41:00 · 8135 阅读 · 0 评论 -
Hibernate的fetch
hibernate抓取策略fetch详解一、hibernate抓取策略(单端代理的批量抓取fetch=select(默认)/join)测试用例:Student student = (Student)session.get(Student.class, 1);System.out.println(student.getName());System.out.println(student.getClasses().getName());1)保持默认,同fetch="select",如转载 2010-12-18 16:01:00 · 24810 阅读 · 0 评论 -
hibernate抓取策略,,batch-szie在上的应用
<br /><br />hibernate抓取策略,,batch-szie在<class>上的应用<br />batch-size属性,可以批量加载实体类,<br />hbm.xml<br />classes.hbm.xml<br /><?xml version="1.0" encoding="utf-8"?><br /><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />"http://h转载 2010-12-18 15:05:00 · 1245 阅读 · 0 评论 -
Hibernate的ID生成策略/联合主键解决方案
<br />对于不同数据库的主键id,生成是不一样的.在Hibernate中也有相对应的策略.<br /> <br />可选的<generator>子元素是一个Java类的名字, 用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数, 用<param>元素来传递<br />所有的生成器都实现org.hibernate.id.IdentifierGenerator接口。<br /> <br />下面是一些内置生成器的快捷名字:<br />increment<br />用于为lo转载 2010-12-14 20:15:00 · 1391 阅读 · 2 评论 -
Hibernate 中boolean类型属性问题
<br /> 先看下实体Boolean类型属性:<br />private boolean leaf; <br />hibernate 配置:<br /><property name="leaf"></property><br /> <br /> 在MySQL 5 中,Hibernate 会将实体类中的Boolean类型属性映射成 bit(1) ;<br />结果就会报出 Date to long for column "leaf" at row 1 的错误,<br />MySQL 4 中原创 2010-12-12 13:28:00 · 8446 阅读 · 0 评论 -
Hibernate的session.flush做了什么呢?
这是在一次事务提交时遇到的异常。 an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)net.sf.hibernate.AssertionFailure: possible nonthreadsafe access to session注:非possible non-threadsafe access转载 2010-11-27 23:35:00 · 3412 阅读 · 0 评论 -
Hibernate update与Hibernate saveOrUpdate的区别
先来点概念,在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态: 1、未被持久化的VO,此时就是一个内存对象VO,由JVM管理生命周期。 2、已被持久化的PO,并且在Session生命周期内,此时映射数据库数据,由数据库管理生命周期。 3、曾被持久化过,但现在和Session已经detached了,以VO的身份在运行,这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理,此时它就成为PO的第二种状态了。这种PO实际上是跨了Session转载 2010-11-27 23:17:00 · 823 阅读 · 0 评论 -
Hibernate unsaved-value 属性
<br />Session的saveOrUpdate方法是由Hibernate来判断被操作对象究竟是一个持久化对象还是临时自由状态对象。这需要在对象映射文件的主键id中定义unsaved-value属性,如果不显式定义,则默认为unsaved-value=null。 <br /><br />unsaved-value可以是下列几个选项: <br />1)null:主键是对象类型,Hibernate判断操作对象的主键是否为null,来判断操作对象是否以被持久化,如果是,调用save方法,生成insert语句,原创 2010-11-27 22:18:00 · 7534 阅读 · 1 评论 -
hibernate 延迟加载
持久态:对象于数据库记录建立对应关系并保持同步。对象被绑定在持久化上下文当中,今后它的任何状态变化、数据变更均处于工作单元的管理之下,这就是持久态。session.load在hibernate3.2中提供的默认延迟加载方式,我觉得load出来的是一个代理,也可以说是持久态(自己这么理解的,如有误请个高手纠正)。了解延迟加载,对理解延迟加载有所帮助: 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提原创 2010-11-28 21:05:00 · 547 阅读 · 0 评论 -
Hibernate HQL 语法 及相关的外键关联
例如对于TUser类1.实体查询String hql = " from User"; 执行这条语句会返回User以及User子类的纪录。注: 如果 TUser 类具有外键, 查询结果不会报错,但结果中的外键为空值,访问就报空指针错误!解决方法: select 别名.属性 from 类 as 别名. 没有别名.属性仍然报错! //此方法不一定能解决,但不会错.转载 2013-08-10 21:11:09 · 5623 阅读 · 0 评论