相信在项目开发当中都曾经遇到过,有某些要储蓄到数据库当中的实体字段是不确定的,可能会动态变化,或者多个类型的字段同时存在或同时不存在,那创建数据库字段时,因为实体的字段不能确定,数据库的字段也就不能确定.
例子:
笔者参与开发的一个招生系统当中,每个课程都有各自的入学要求,而入学要求需要被保存到数据库当中被课程引用,但入学要求的实体是不确定的,入学要求可能是面试分数大于某个数字,亦可能是是否通过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)能够理解的结构,这通常涉及到分解实体、属性和联系,确定主键和外键,以及规范化处理以消除数据冗余和提高...
数据库系统是计算机科学中的核心组成部分,它用于存储、管理和检索数据。本教程“数据库系统基础教程”涵盖了数据库领域的基础知识,适合初学者入门学习。这里我们将深入探讨其中的关键概念和技术。 一、数据库基础...
数据库实体联系模型是信息领域中理解数据库结构的一种关键工具,它为将现实世界的复杂关系映射到数据存储方案提供了一种直观的方法。本文将详细介绍数据库实体联系模型的核心概念、组成要素、设计方法以及与关系模型...
2. **监控磁盘健康状态**:定期检查存储数据库文件的磁盘状态,及时发现并处理潜在问题。 3. **使用最新版本**:保持SQL Server为最新版本,以获得最新的安全性和稳定性改进。 4. **文件验证**:在附加数据库文件...
数据库是信息技术领域中不可或缺的一部分,它负责存储、管理和检索数据,是支撑现代信息系统运行的核心组件。数据库技术的发展历程悠久,从早期的层次型和网状型数据库,到关系型数据库的普及,再到如今的NoSQL...
- **物理结构设计**:确定数据库的具体存储方式和优化措施。 - **数据库的实施与维护**:创建数据库,编写应用程序,测试,运行,监控,优化和更新。 **二、SQL Server相关概念** 1. **SQL Server数据库文件组成...
概念数据模型是数据库设计的第一步,它关注的是业务实体、实体之间的关系以及它们的主要属性,而不涉及具体的数据库管理系统或表结构。通常,这个阶段会使用到如ER(实体关系)图来表示。CDM帮助我们理解业务需求,...
系统存储需求分析是为了确定数据库系统需要存储的数据量和类型,以确定合适的数据库管理系统和存储设备。例如,在3D打印模型数据库系统中,需要存储大量的3D模型数据和相关的元数据,因此需要选择适合的数据库管理...
根据提供的文档内容,我们可以归纳出Oracle数据库新手必备的知识点,主要涵盖数据库规范化、数据库设计、文件组成、数据库创建步骤以及与数据相关的存储过程等方面。以下是对这些知识点的详细阐述: ### 一、数据库...
3. **选择存储过程**(可选):如果需要,可以选择从数据库中的表和视图生成模型,也可以选择存储过程。 4. **完成**:确认以上设置无误后,点击完成即可自动生成实体数据模型。 #### 设计实体数据模型 在上一步...
在逻辑设计阶段,我们需要确定数据库的概念模型,包括实体、属性、关系等。同时,我们还需要确定数据库的逻辑模型,包括表结构、字段类型、索引等。 数据库物理设计 数据库物理设计是数据库设计的第二步骤,涉及到...
- **逻辑结构设计**:E-R图转换为关系模型,确定了各个实体对应的表结构,如药品表、员工表、客户表、员工存入药品表、客户购买药品表、入库和出库信息表等。 - **物理结构设计**:基于关系模型定义表的字段、数据...
包括确定数据类型、设置主键(Primary Key)、选择合适的索引等,保证数据的有效存储和高效访问。 六、物理设计 物理设计关注数据库在特定数据库管理系统(DBMS)上的实现,包括表空间、分区、簇、索引策略等。这一...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序。...然而,需要注意的是,这种方法并不适用于所有情况,例如,对于大型复杂的数据库设计,可能需要更专业的数据库设计工具和更严谨的数据库管理策略。
其次,数据库系统提供了数据独立性,使得应用程序不受数据存储方式变化的影响。再者,它提供了用户友好的接口,便于用户进行数据操作。此外,数据库系统还具有数据控制功能,包括事务管理、并发控制、数据恢复、数据...