Hibernate中value type与entity type

在Hibernate框架中,为了更好的配合数据库,将类型分为value type和entity type。

entity type特征

1.有identifier(标识符)作为类对象的唯一标识。

2.一般可以被解析为一张table(表)。

3.通过identifier(标识符)可以被引用。

value type特征

1.无identifier(标识符),每一个类对象都是唯一的。

2.不会被解析成一张表。

3.不会被引用,value type会被存储在entity type中。

附上Hibernate手册中对于value type和entity type的解释。

This is an example of an association between two equally important classes : two entities. As mentioned earlier, there are other classes and types in a typical model, usually "less important". Some you have already seen, like an int or a java.lang.String. We call these classes value types, and their instances depend on a particular entity. Instances of these types do not have their own identity, nor are they shared between entities. Two persons do not reference the same firstname object, even if they have the same first name. Value types cannot only be found in the JDK , but you can also write dependent classes yourself such as anAddress or MonetaryAmount class. In fact, in a Hibernate application all JDK classes are considered value types.

You can also design a collection of value types. This is conceptually different from a collection of references to other entities, but looks almost the same in Java.

  

时间: 2024-10-01 03:55:39

Hibernate中value type与entity type的相关文章

hibernate中写配置文件xxx.hbm.xml时那个成员变量的类型type如何写的问题

hibernate中的类型就是8种基本类型的包装类首字母变为小写,有integer,long,short,float,double,charchter,byte,boolean,当然还包括其他类型如:yes_no,true_false hibernate中的类型的作用是匹配数据库表中字段的类型和Java类中属性的类型不匹配的问题的一种解决方案,比如string完成从java.lang.String到VARCHAR的映射,所以在xxx.hbm.xml映射文件中我们写属性的类型时会写成如type="

hibernate中对于数据库的Text注解出现 No Dialect mapping for JDBC type: -1解决方法

hibernate中对于数据库的Text数据类型不支持. hibernate 使用hql查询包含text类型字段的时候很好.如果使用native sql也就是使用  createSQLQuery方法查询text类型的时候总是报错: org.hibernate.MappingException: No Dialect mapping for JDBC type:-1 atorg.hibernate.dialect.TypeNames.get(TypeNames.java :56) 是hiberna

Cannot find any information on property 'User' in a bean of type 'com.entity.user'

故障码: 严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Cannot find any information on property 'User' in a bean of type 'com.entity.user' at org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLi

swift 中Value Type VS Class Type

ios 中Value Type 和 Class Type 有哪些异同点,这个问题是在微信的公共帐号中看到的,觉得挺有意思,这里梳理一下. 1.swift 中为什么要设置值类型? 值类型在参数传递.赋值的过程中采用的是Copy的过程,copy的"值"是该值所在的内存块,相比于class类型,copy更直接,没有对象中方法调用(饮用计数.copy方法等),因此效率更高.猜测swift引入的值类型主要是为了提高效率. 2.swift 存在哪些值类型 swift中常见的值类型有 struct,

Hibernate中的Entity类之间的继承关系之一MappedSuperclass

在hibernate中,Entity类可以继承Entity类或非Entity类.但是,关系数据库表之间不存在继承的关系.那么在Entity类之间的继承关系,在数据库表中如何表示呢? Hibernate提供了4种兼容JPA的策略,解决Entity类的继承与关系数据库表的对应不匹配问题.这里介绍第一种MappedSuperclass. 在这种策略中,存在如下特征: 只在Entity类之间存在继承关系,其中的父Entity类使用@javax.persistence.MappedSuperclass标注

hibernate中的缓存机制

一.为什么要用Hibernate缓存? Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 二.Hibernate缓存原理是怎样的?Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存. 1.Hibernate一级缓存又称为“Session的缓存”. Sessio

使用SQLQuery 在Hibernate中使用sql语句

session.createSQLQuery.转载 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 1.标量查询(Scalar queries) 最基本的SQL查询就是获得一个标量(数值)的列表. sess.createSQLQuery("SELECT * FROM CATS").list();sess.createSQLQuery("SELECT ID,

Hibernate中Session与本地线程绑定

------------------siwuxie095 Hibernate 中 Session 与本地线程绑定 1.Session 类似于 JDBC 的连接 Connection 2.Session 对象是单线程对象,只能自己使用,不能共用 将 Session 与本地线程绑定,保证 Session 对象绝对是一个单线程对象 3.Hibernate 帮助我们实现了 Session 与本地线程绑定(底层是 ThreadLocal) 4.获取与本地线程绑定的 Session (1)在 Hiberna

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID. 游离状态:当Session关闭,缓存中不存在这个对象数据而数据库中有这个对象的数据并且有OID为游离状态. 注:OID为了在系统中能够找到所需对象,我们需要为每一个对象分配一个