相信在项目开发当中都曾经遇到过,有某些要储蓄到数据库当中的实体字段是不确定的,可能会动态变化,或者多个类型的字段同时存在或同时不存在,那创建数据库字段时,因为实体的字段不能确定,数据库的字段也就不能确定.
例子:
笔者参与开发的一个招生系统当中,每个课程都有各自的入学要求,而入学要求需要被保存到数据库当中被课程引用,但入学要求的实体是不确定的,入学要求可能是面试分数大于某个数字,亦可能是是否通过4级英语,那将是一个布尔类型的字段,而在进行某个操作时需要校验该申请人是否满足他申请课程的入学要求.
由于以上的需求,入学要求需要被保存到数据库,但数据库中没办法设立相应的字段保存所有的入学要求信息,所以项目当中我们抽象出多个入学要求的实体,将实体转换成XML的形式来保存到数据库中
public class XmlConverter {
private XmlConverter() {}
public static String toXml(Object obj) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(out);
encoder.writeObject(obj);
encoder.close();
String xml = out.toString().trim();
return xml;
}
public static Object fromXml(String xml) {
ByteArrayInputStream in;
try {
in = new ByteArrayInputStream(xml.trim().getBytes("UTF-8"));
XMLDecoder decoder = new XMLDecoder(in);
Object obj = decoder.readObject();
return obj;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Test test = new Test();
test.setId("1");
test.setUsername("Hello");
test.setPassword("World");
String xml = XmlConverter.toXml(test);
System.out.println(xml);
Test test1 = (Test) XmlConverter.fromXml(xml);
System.out.println("--------id:" + test1.getId());
System.out.println("--------name:" + test1.getUsername());
System.out.println("--------password:" + test1.getPassword());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_45" class="java.beans.XMLDecoder">
<object class="com.accentrix.vtc.apm.domain.Test">
<void property="id">
<string>1</string>
</void>
<void property="password">
<string>World</string>
</void>
<void property="username">
<string>Hello</string>
</void>
</object>
</java>
以上是通过toXml方法返回的xml样式,简简单单的两个方法就解决了数据库保存不确定字段的问题,如读者有更好的方法希望能指点一二,谢谢
分享到:
相关推荐
在软件开发过程中,通常需要将业务实体对象映射到数据库表中,以便于存储和检索数据。这种映射关系的设计对于确保数据的一致性和准确性至关重要。 - **映射类和属性**:业务实体对象中的每个属性对应数据库表中的一...
实体类通常代表数据库中的表,是业务逻辑与数据存储之间的桥梁。在本主题中,我们将聚焦于如何使用Eclipse集成开发环境和JDK1.7来根据数据库自动生成实体类,这可以显著提高开发效率并减少手动编码的工作量。 首先...
而"第六章_实体联系模型.ppt"可能进一步讨论了如何将E-R图转换成关系模型,这是数据库管理系统(RDBMS)能够理解的结构,这通常涉及到分解实体、属性和联系,确定主键和外键,以及规范化处理以消除数据冗余和提高...
数据库系统是计算机科学中的核心组成部分,它用于存储、管理和检索数据。本教程“数据库系统基础教程”涵盖了数据库领域的基础知识,适合初学者入门学习。这里我们将深入探讨其中的关键概念和技术。 一、数据库基础...
数据库是信息技术领域中不可或缺的一部分,它负责存储、管理和检索数据,是支撑现代信息系统运行的核心组件。数据库技术的发展历程悠久,从早期的层次型和网状型数据库,到关系型数据库的普及,再到如今的NoSQL...
概念数据模型是数据库设计的第一步,它关注的是业务实体、实体之间的关系以及它们的主要属性,而不涉及具体的数据库管理系统或表结构。通常,这个阶段会使用到如ER(实体关系)图来表示。CDM帮助我们理解业务需求,...
系统存储需求分析是为了确定数据库系统需要存储的数据量和类型,以确定合适的数据库管理系统和存储设备。例如,在3D打印模型数据库系统中,需要存储大量的3D模型数据和相关的元数据,因此需要选择适合的数据库管理...
根据提供的文档内容,我们可以归纳出Oracle数据库新手必备的知识点,主要涵盖数据库规范化、数据库设计、文件组成、数据库创建步骤以及与数据相关的存储过程等方面。以下是对这些知识点的详细阐述: ### 一、数据库...
在这个题目中,学生需要根据给定的实体关系模型,设计一个数据库,包括确定实体、属性和关系,设计实体关系图,并将其转换为关系数据库管理系统。 此外,本题目还涉及到数据库 normalization 的概念,旨在消除数据...
3. **选择存储过程**(可选):如果需要,可以选择从数据库中的表和视图生成模型,也可以选择存储过程。 4. **完成**:确认以上设置无误后,点击完成即可自动生成实体数据模型。 #### 设计实体数据模型 在上一步...
在逻辑设计阶段,我们需要确定数据库的概念模型,包括实体、属性、关系等。同时,我们还需要确定数据库的逻辑模型,包括表结构、字段类型、索引等。 数据库物理设计 数据库物理设计是数据库设计的第二步骤,涉及到...
- **逻辑结构设计**:E-R图转换为关系模型,确定了各个实体对应的表结构,如药品表、员工表、客户表、员工存入药品表、客户购买药品表、入库和出库信息表等。 - **物理结构设计**:基于关系模型定义表的字段、数据...
包括确定数据类型、设置主键(Primary Key)、选择合适的索引等,保证数据的有效存储和高效访问。 六、物理设计 物理设计关注数据库在特定数据库管理系统(DBMS)上的实现,包括表空间、分区、簇、索引策略等。这一...
1. 确定数据库的需求:确定应用系统的需求,包括数据的收集、存储和处理过程。 2. 数据流图设计:使用数据流图符号来描述数据流、数据存储和处理过程。 3. 实体关系图设计:使用实体关系图符号来描述数据库的逻辑...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序。...然而,需要注意的是,这种方法并不适用于所有情况,例如,对于大型复杂的数据库设计,可能需要更专业的数据库设计工具和更严谨的数据库管理策略。
其次,数据库系统提供了数据独立性,使得应用程序不受数据存储方式变化的影响。再者,它提供了用户友好的接口,便于用户进行数据操作。此外,数据库系统还具有数据控制功能,包括事务管理、并发控制、数据恢复、数据...