动态实体、动态字段设计

本文探讨了在软件开发中如何处理动态实体和字段的需求,分析了动态数据模型的设计策略,包括如何在数据库和应用程序中实现动态字段,以及这种设计在灵活性和性能之间的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.wxl.app.domain;

public class FieldType {
	private Long id;
	private String name;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


package com.wxl.app.domain;

import java.util.Set;
import java.util.TreeSet;

public class Entity {
	private Long id;
	private String name;
	private String table;
	private Set<Field> fields = new TreeSet<Field>();

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getTable() {
		return table;
	}

	public void setTable(String table) {
		this.table = table;
	}

	public Set<Field> getFields() {
		return fields;
	}

	public void setFields(Set<Field> fields) {
		this.fields = fields;
	}

}

package com.wxl.app.domain;

public class Field {
	private Long id;
	private String label;
	private String name;
	private FieldType type;
	private Entity entity;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public FieldType getType() {
		return type;
	}

	public void setType(FieldType type) {
		this.type = type;
	}

	public Entity getEntity() {
		return entity;
	}

	public void setEntity(Entity entity) {
		this.entity = entity;
	}

}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
        SYSTEM
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

	<class name="com.wxl.app.domain.FieldType" table="d_field_types">
		<id name="id" column="t_id">
			<generator class="sequence" />
		</id>
		<property name="name" column="t_name" type="string" />
	</class>

</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
        SYSTEM
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

	<class name="com.wxl.app.domain.Entity" table="d_entities">
		<id name="id" column="e_id">
			<generator class="sequence" />
		</id>
		<property name="name" column="e_name" type="string" />
		<property name="table" column="e_table" type="string"></property>
		<set name="fields">
			<key column="entity_id"></key>
			<one-to-many class="com.wxl.app.domain.Field" />
		</set>
	</class>

</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
        SYSTEM
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

	<class name="com.wxl.app.domain.Field" table="d_fields">
		<id name="id" column="f_id">
			<generator class="sequence" />
		</id>
		<property name="label" column="f_label" type="string"></property>
		<property name="name" column="f_name" type="string"></property>
		<many-to-one name="entity" column="entity_id"
			class="com.wxl.app.domain.Entity"></many-to-one>
		<many-to-one name="type" column="type_id"
			class="com.wxl.app.domain.FieldType"></many-to-one>
	</class>

</hibernate-mapping>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值