hibernate fetch属性】的更多相关文章

fetch的属性值有:select(默认值).join.subselect 1)当fetch=”select”时,程序会先查询返回要查询的主体对象,然后根据lazy属性看是否懒加载. 2)当fetch=”join”时,程序会将主体对象和关联对象用一句连接查询的sql同时查询出来,这样以来,懒加载就无用武之地了. 3) subselect和select一样,不会一开始就将关联对象查出来. subselect与select的区别: 设置不执行懒加载: select是根据关联外键的id,每一个对象发一…
Hibernate配置属性 属性名 用途 hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.classname.of.Dialect hibernate.show_sql 输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug. eg. true | false hibernate.format_sql 在log和con…
Hibernate配置属性 hibernate.dialect Hibernate方言(Dialect)的类名 - 可以让Hibernate使用某些特定的数据库平台的特性 取值. full.classname.of.Dialect hibernate.default_schema 在生成的SQL中,scheml/tablespace的全限定名 取值. SCHEMA_NAME hibernate.session_factory_name 把SessionFactory绑定到JNDI中去. 取值. …
fetch=FetchType.LAZY 时,spring boot jackson 返回数据时会出错. 可配置使用Hibernate4Module 帮助解决: @Configurationpublic class JacksonConfig extends WebMvcConfigurerAdapter {    @Override    public void configureMessageConverters(List<HttpMessageConverter<?>> co…
hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的.inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联由对方控制.见例子: 一个Parent有多个Child,一个Child只能有一个Parent. package com.xian; public class Child { private Long id; private String name; private Parent parent; public Long ge…
Session的saveOrUpdate方法是由Hibernate来判断被操作对象究竟是一个持久化对象还是临时自由状态对象.这需要在对象映射文件的主键id中定义unsaved-value属性,如果不显式定义,则默认为unsaved-value=null. unsaved-value可以是下列几个选项: 1)null:主键是对象类型,Hibernate判断操作对象的主键是否为null,来判断操作对象是否以被持久化,如果是,调用save方法,生成insert语句,在数据库中增加一条记录,如果不是,设…
事务也是Hibernate持久层访问的重要方面,Hibernate不仅提供了局部事务支持,也允许使用容器管理的全局事务. Hibernate关于事务管理的属性: ⊙ hibernate.transaction.factory_class : 指定Hibernate所用的事务工厂的类型,该属性值必须是TransactionFactory的直接或间接子类. ⊙ jtaUserTransaction : 该属性值是一个JNDI名,Hibernate将使用JTATransactionFactory从应用…
lazy概念:要用到的时候,再去加载,对于关联的集合来说,只有当访问到的时候,才去加载它所关联的集合,比如一个user对应很多权限,只有当user.getRights()的时候,才发出select right的语句,在访问到rights之前,rights是一个PersisitSet对于实体类来说,只有当它的属性被访问到时,才会真正加载这个实体类,在它的属性没有被访问到之前,这个实体类是一个代理对象. 1.在集合中定义:<set><list>标签上 ,可以取值:true/false/…
修改街道对应的区道信息: 修改后会发现程序执行了两次修改操作: 原因: 区道与街道是一对多的关系: 由于Hibernate是双向维护外键,所以当修改区道中的街道时,会修改一次外键:在修改街道中的区道时,又会修改一次外键. 这样就会产生效率慢的问题,因为如果执行两次修改,那么第二次是无用的操作.利用inverse属性可以解决这一问题. 在区道表的映射文件里面的set标签中设置inverse属性为true; inverse的属性值如下: 1)默认值为false,表示我方不放弃维护外键的权利 2)tr…
lazy,延迟加载 Lazy的有效期:只有在session打开的时候才有效:session关闭后lazy就没效了. lazy策略可以用在: * <class>标签上:可以取值true/false * <property>标签上,可以取值true/false,这个特性需要类增强 * <set>/<list>等集合上,可以取值为true/false/extra * <one-to-one>/<many-to-one>等标签上,可以取值fa…