J2EE应用程序中的数据管理和数据持久性

本文分析了在 Java 平台上可用的两个数据管理策略:Java 对象序列化和 Java 数据库连接(JDBC)。尽管本质上这两种数据管理策略并不存在孰优孰劣的问题,但在管理企业信息系统时,JDBC 轻而易举地得以胜出。在本文中,Java 开发人员 G.V.B. Subrahmanyam 和 Shankar Itchapurapu 对序列化和 JDBC都进行了介绍,并通过讨论和实例来向您展示了 JDBC 是您的最佳选择的原因。

当您正在建立企业信息系统时,需要确保以某种有效的方式存储、检索和显示企业数据。对于所有业务而言,数据都是独一无二的最大资产。所有软件系统都涉及数据,因此,数据的重要性是无论如何强调都不过分的。

应用程序的数据管理功能包括四个基本操作,通常也需要对企业数据执行这四个操作,它们是: 建立、检索、更新和 删除(即 CRUD)。管理在企业系统的数据涉及在很长一段时间范围之内,始终如一地、成功地执行 CRUD 操作,而不必频繁地更改实际执行这些操作的代码。换句话说,管理数据意味着开发稳健的、可扩展和可维护的软件系统,以确保成功地进行 CRUD 操作,在软件的生命期中能够以一致的方式执行操作。

本文讨论了 J2EE 中的两种可用数据管理策略:Java 对象序列化和 Java 数据库连接(JDBC)。我们将查看这两种方法的优缺点。这两种数据管理策略实质上不存在孰优孰劣。在特定实现中,策略的可用性取决于项目的 范围(出现在系统环境中的活动的活动范围),系统的 上下文(驱动系统/子系统运行时的值的集合),以及其他的外部因素。然而,Java 序列化并不适合于企业系统,其数据需要用一种定义良好的结构(如RDBMS)来组织。我们首先将快速浏览 Java 对象序列化,然后查看 JDBC 更重要的一些方面,从而了解后者是如何实现前者所缺乏的一些关键特性的。

本文并不打算对 Java 对象序列化或者 JDBC 进行全面介绍。有关这两项技术的更多信息,请回顾 参考资料小节。

Java 对象序列化

对象序列化是最简单的 Java 持久性策略。对象序列化是一个将 对象图平面化为一个字节的线性序列的过程。对象图是作为对象继承、关联和聚合的结果而实现的一些关系式。对象的非暂态实例属性以字节的形式被写入到持久存储中。实例属性的值就是执行时间序列化时内存中的值。如果一个 Java 对象是可序列化的,那么它至少必须实现 java.io.Serializable 接口,该接口具有如下所示的结构:

package java.io;
public interface Serializable
{}

您可以看到, java.io.Serializable 接口并没有声明任何方法。它是一个 记号或者 标记接口。它告诉 Java 运行时环境,该实现类是可序列化的。列表 1 显示实现该接口的一个示例类。

列表 1. MySerializableObject.java

import java.io.Serializable;
public class MySerializableObject extends MySuperClass implements Serializable
{
  private String property1 = null;
private String property2 = null;
public String getProperty1()
{
  return property1;
}
public void setProperty1(String val)
{
  property1 = val;
}
public String getProperty2()
{
  return property2;
}
public void setProperty2(String val)
{
   property2 = val;
}
   private void writeObject(ObjectOutputStream out)
   throws IOException
   {
     out.writeObject (getProperty1 ());
     out.writeObject (getProperty2 ());
   }
   private void readObject (ObjectInputStream in)
   throws IOException, ClassNotFoundException
   {
    setProperty1 ((String) in.readObject ());
    setProperty2 ((String) in.readObject ());
   }
}

时间: 2024-09-15 18:53:26

J2EE应用程序中的数据管理和数据持久性的相关文章

如何集成Perf4j到Java应用程序中并生成性能数据

在实际部署的生产环境能够以较低的风险及成本实现对业务逻辑级别性能问题的追踪.本文将介绍如何集成 Perf4j 到 Java 应用程序中并生成性能数据. 系统日志是应用程序问题诊断及运行维护的重要工具.Logback.Log4j 是常用于 Java 平台的日志记录 API. 目前大部分产品只是将系统重要参数.状态的变化及异常信息通过日志输出.本文将要介绍的 Perf4j 是一款专门用于 Java 服务器端代码计时.记录日志和监控结果的开源工具包.Perf4j 对常用日志工具包进行了扩展,能够将得到

用pb12开发两个程序,这两个程序中要传递一些数据

问题描述 用pb12开发两个程序,这两个程序中要传递一些数据 用pb12开发两个程序,这两个程序中要传递一些数据,该怎么去实现简单一点,具体用哪些方法去实现.这两个程序是放在局域网中的.需要导入哪些插件或.pbl等吗? 解决方案 共享数据库.文件(windows共享文件)

在Visual Web JSF应用程序中转换和验证数据

在本教程中,您将学习 JSF 1.2(Woodstock)中的转换器和验证器.转换器用来将字符串输入转换为数据型 Java 数据类型,以达到计算之类的多种目的.验证器用来核实用户输入是否落在指定的范围内.您将使用 Visual Web JSF 框架来创建一个将温度从摄氏转换为华氏的应用程序.该应用程序使用一个转换器来将用户输入从一个字符串值转换为数值型 Java 数据类型,应用程序就能用它来进行计算.该应用程序还是用一个验证器来检查数据是否落在指定的范围内,并通过一个消息组件来报告验证错误.然后

对Android应用程序中的用户、数据对象和文件执行云存储和查询

Parse 移动 SDK 为 iOS.Android 和 Windows® 应用程序提供了基于云的 API 和服务.Parse SDK 还提供了 JavaScript 和 REST API.使用 Parse API,您可以极快地以最少工作量让您的移动应用程序支持云处理.集成了 Parse API 的移动应用程序可以轻松地在 Parse 云上存储数据对象和文件,发送并侦听推送通知,管理用户,处理地理位置数据,并使用 Twitter 和 Facebook 等社交媒体平台.对于需要扩展的移动应用程序,

ASP程序中使用断开的数据记录集

我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连接打开的时间要比它需要打开的时间长得多.因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称为断开的记录集. 下面我们就通过一个实例来说明这种技术的使用方法(NorthWind.mdb是Microsoft Access97自带的一个数据库,文件adovbs.inc可在C:

ASP程序中使用断开的数据记录集的代码_应用技巧

因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称为断开的记录集. 下面我们就通过一个实例来说明这种技术的使用方法(NorthWind.mdb是Microsoft Access97自带的一个数据库,文件adovbs.inc可在C:\Program Files\Common Files\System\ADO下找到): 复制代码 代码如下: <% @LANGUAGE = VBScript %> <!--

ASP程序中使用断开的数据记录集的代码

因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称为断开的记录集. 下面我们就通过一个实例来说明这种技术的使用方法(NorthWind.mdb是Microsoft Access97自带的一个数据库,文件adovbs.inc可在C:\Program Files\Common Files\System\ADO下找到): 复制代码 代码如下: <% @LANGUAGE = VBScript %> <!--

大量数据计算在程序中还是存储过程

问题描述 大量数据计算在程序中还是存储过程 大量数据(几十万条)计算在程序中还是存储过程效率,哪位有过工程经验的同学帮助一下.顺找一位精通oracle sql的同学做一系列存储过程. 解决方案 首先.效率肯定是存储过程高,因为它省去了数据网络传输的时间.这个其实可以直接做个对比,存储过程和程序取数的时间差别.其次.你要考虑计算的复杂度,太复杂的算法用存储过程编写不方便.调试更麻烦.如果算法复杂.网络传输的消耗还可以承受,可以用程序:否则用存储过程. 解决方案二: 效率肯定是存储过程高,这是DB产

教你使用TSAM扩展来管理J2EE应用程序

Tivoli Service Automation Manager 7.2.2 引入了扩展 的概念,该扩展是一组 TSAM 软件组件,可以向 TSAM 平台添 加更多功能.一个扩展通常(但不限于)可以实现以下功能: 可以实现一个新的 IT 服务自动化解决方案,该解决方案在 TSAM 中称为服务定义:例如,一个存储即服务解决方案可 以为一所大学的学生提供主目录. 可以向现有服务定义添加功能:例如,将开箱即用 TSAM 扩展为一个服务解决方案,使它能够将除启动磁盘以外的更多 磁盘连接到虚拟机中. 这