`
tiw
  • 浏览: 25745 次
  • 性别: Icon_minigender_1
  • 来自: 西边
文章分类
社区版块
存档分类
最新评论

value type vs entity

阅读更多

hibernate mapping的时候这value type 和 entity是很重要的概念

其区别我认为如下:

 

生命周期

  1. value type的生命周期是依赖于他所归属的对象的。比如user有一个property叫name,当一个用户删除之后他的名字也要同时删除,因为他的名字没有独自存在的意义。这里name就应该当作value type处理。他可以是java的内部的数据类型,比如String,也可以是一个类。当他是类的时候要标记这个类是user的一个component。
  2. entity都有自己的生命周期,不依赖于其他的对象。比如user有一个property叫school,当用户删除后,school还是存在的

database identifer

在数据库的层面上看

  1. value type没有自己的database identifier
  2. entity是有自己的identifier的

有待证实的问题:

 

根据在数据库的课程里学到的,我认为value type概念上其实是一个weak entity,但是weak entity是有自己的表的,不过他的主键是其依赖对象的主键和自己的一个id共同组成的,不知道hibernate如何处理这个问题的,jpa的annotation又该如何描述?

 

结论

做个一个有关map的实验,证实了确实是weak entity。

下面是一个entity的定义,里面有一个用Map实现的property

package test.jpa;

import java.util.Map;

import javax.persistence.*;
@Entity
@Table(name = "Metainfo")
public class Metainfo {
	@Id @GeneratedValue
	@Column(name="METAINFO_ID")
	private Long id;
	
	@org.hibernate.annotations.CollectionOfElements
	@JoinTable(
			name = "METAINFO_PROPERTIES",
			joinColumns = @JoinColumn(name = "MATEINFO_ID")
	)
	@org.hibernate.annotations.MapKey(
			columns = @Column(name = "PROPERY_NAME")
	)
	@Column(name = "PROPERTIES")
	protected Map<String, String> propertyMap;

	public Map<String, String> getPropertyMap() {
		return propertyMap;
	}

	public void setPropertyMap(Map<String, String> propertyMap) {
		this.propertyMap = propertyMap;
	}
	
}
  PRIMARY
PRIMARY

MATEINFO_ID
PROPERY_NAME
分享到:
评论

相关推荐

    Chinese Entity Linking Comprehensive

    be linked to an entity in the knowledge base), and entity type information for each of the queries. The data included in this package were originally released by LDC to TAC KBP coordinators and ...

    org.apache.http.entity.mime

    builder.addTextBody("key", "value"); builder.addBinaryBody("image", imageFile, ContentType.create("image/jpeg"), "image.jpg"); HttpEntity entity = builder.build(); HttpPost httpPost = new HttpPost(url...

    struts2中常用Result类型(type)的用法和出现的问题

    关于 MyEclipse 对 Struts2 配置文件的检查异常 Invalid result location value/parameter,有时候可以通过检查 struts.xml 文件中的配置来解决。例如,可以检查 result 元素中的 type 是否正确,location 是否正确...

    Mybatis Generator自动生成JavaEntity带中文注释和注解[Maven]工程

    &lt;javaClientGenerator targetPackage="com.your.package.name.mapper" targetProject="src/main/java" type="XMLMAPPER"&gt; &lt;property name="enableSubPackages" value="true"/&gt; ``` 配置完成后,你需要在...

    填充Excel列表工具Excel2Entity.zip

    Excel2Entity Excel2Entity实现了Java POI对xls文件的读取功能的封装,实现了批量导入Excel中的数据时自动根据Excel中的数据行创建对应的Java POJO实体对象的功能。 该类库也实现了在创建实体对象时对...

    EntityModel基础框架中包含的配置项说明1

    在实际应用中,建议明确列出需要的头部信息,例如`Authorization, Content-Type`等。 3. **`cors_allowMethods`**: - **描述**:此配置项指定了服务器端接受的HTTP请求方法。 - **示例**:`...

    EntityBean配置过程.txt

    ### EntityBean配置过程详解 #### 一、概述 本文档主要介绍了如何在JBoss服务器上配置EntityBean以连接Oracle数据库的过程。重点在于介绍一个表(One Table)模式下的配置细节,包括添加数据源、配置JNDI名称以及...

    SSD7 选择题。Multiple-Choice

    (c) The type of relationship between entities of one entity type (d) A never-ending type of relationship Correct answer is (c) 2. In an ER model, the cardinality ratio of a relationship type ...

    yii2-shop:简单店铺使用EAV(Entity-Attribute-Value)

    1. **实体(Entity)**:在本例中,实体可能是商店中的商品。每个商品都是数据库中的一个记录,具有一个唯一的标识符(如商品ID)。 2. **属性(Attribute)**:商品可以有多种属性,如颜色、尺寸、重量等。这些...

    使用EF操作Mysql(C#)

    newEntity.Property = "Value"; db.Set&lt;EntityType&gt;().Add(newEntity); db.SaveChanges(); } ``` 在添加实体到上下文并调用`SaveChanges()`方法后,实体将被添加到数据库。 #### 删除(Delete) 删除操作通常...

    Entity Relationship Modelling

    实体类型(Entity Type)是具有共同特性的实体的集合,实体类型在ER图中通常用矩形表示。实体(Entity)是属于某个实体类型的实例,例如具体的某个客户、某张发票或某位员工。属性(Attribute)描述了实体的特性,...

    Nullable转换问题

    public static bool CopyDataToModel(string fieldName, object fieldValue, DBEntity entity) { bool flag = false; if (entity.GetPropertyNames().Contains(fieldName)) { PropertyInfo[] infos = entity....

    hibernate映射枚举类型

    @Type(type = "org.hibernate.type.EnumType", parameters = { @Parameter(name = "enumClass", value = "com.example.Status"), @Parameter(name = "useNamed", value = "true")}) private Status status; } ``...

    magento产品名称及描述批量修改sql

    例如,如果只想修改特定类别的产品,可以添加`AND eav.entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_category')`。 以上就是使用SQL批量修改Magento产品名称...

    System.Data.SQLite.dll .net4.0版 64位 支持EntityFramework

    \Program Files\System.Data.SQLite\2010\bin拷贝System.Data.SQLite.dll System.Data.SQLite.Linq.dll 至工程目录并引用到工程2.App.Config新增以下配置&lt;appSettings&gt;&lt;add key="ConnectionString" value="Data ...

    Freemarker通用select下拉框

    例如,可以有一个`getDropdownList(String entityType)`方法,根据传入的实体类型返回对应的下拉框数据。 单元测试在这个过程中扮演了重要角色,确保不论输入什么样的参数,`getDropdownList`都能正确地构建出...

    第11章 枚举_注解_内部类.docx

    现在,当我们为`Entity2`对象设置类型时,只能选择`TypeEnum`枚举中的定义,如`entity.setType(TypeEnum.VIDEO)`,这既提高了代码的可读性,又确保了类型安全,降低了耦合性,并提高了扩展性。 接下来是注解...

    vs2013 mysql ef6 配置

    &lt;provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /&gt; &lt;provider invariantName="MySql.Data.MySqlClient" type="MySql....

    ofbiz入门教程-初学者开发指南

    更新客户信息,使用 EntityValue.update();删除客户,则调用 EntityValue.remove()。 6. 开发业务逻辑:Ofbiz 提供服务(Service)和事件(Event)机制来处理复杂的业务逻辑。服务是可复用的代码单元,通常对应一...

    ofbiz框架简单讲解

    &lt;make-value entity-name="GroupForum" value-name="newEntity"/&gt; &lt;sequenced-id-to-env sequence-name="GroupForum" env-name="newEntity.forumId"/&gt; &lt;field-to-result field-name="newEntity.forumId" result-...

Global site tag (gtag.js) - Google Analytics