`
iihero
  • 浏览: 259835 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象存取在Sybase ASE15.0中的解决方案

阅读更多

iihero原创,如若转载,请务必注明出处。

数据库发展到今天, RDBMS( 关系型数据库管理系统 ) ODBMS( 对象数据库管理系统 ) 的界限已经变得模糊了,取而代之的是 ORDBMS( 对象关系型数据库管理系统 ) ,对此, Oracle DB2 早年前都给出了自己的解决方案,即采用类似以下的抽象语法:

create type Point is object

(

x int,

y int,

......

)

Sybase ASE 数据库,发展到现在 15.0.3 ,在语法上,似乎并没有对这种抽象语法的直接支持。它采取的是另一种解决方案,即可以由用户直接定义一个 Java 类,让这个 Java 类直接成为一种抽象类型。那就是 Sybase ASE 数据库的 Java 服务选件,它是一种功能非常强大的组件。

比如,我们要提供一个解决方案,直接支持二维点 Point 类型的存取。怎么实现呢?

<!-- [if !supportLists]-->

  • 环境:

<!-- [endif]-->

确定你的 ASE 数据库安装并拥有 Java Options 选项,如何得知呢?从 Sybase Central ,连接到 ASE 服务器,右键 à 属性 à 版本 à 详细信息,可以得到如下信息: ASE_JAVA ,有相应的版本和有效期信息,示例如下图,它支持 Java ,有效期到 2020 1 20

 

 

 

除此以外,还得让服务器启动时也支持 Java

D:\ASE150>isql -Usa -Psybase1

1> sp_configure "enable java", 1

2> go

(1 row affected)

配置选项改变 . 因为选项是静态的 ,Adaptive Server 必须重启 , 以使改动生效 .

如果将 'enable java' 更改为 '1' ASE 使用的内存量就能增加 580K

(return status = 0)

然后重启 Sybase ASE 数据库,即可生效,开始完全支持 Java

 

 

  • 实现

 

首先,实现 Point 类。 ASE 支持 Java 对象类型,有一个条件,它必须实现了序列化接口。同时,编译为 class 文件时,编译的目标版本最好是 1.1( 为了保持兼容 )

Point 类的一个简单实现如下:

public class Point implements java.io.Serializable

{

private static final long serialVersionUID = -2550063311147977493L;

public double _x;

public double _y;

public Point()

{

_x = 0;

_y = 0;

}

public Point(double x, double y)

{

_x = x;

_y = y;

}

public Object clone()

{

return new Point(_x, _y);

}

public String toString()

{

return "(" + _x + ", " + _y + ")";

}

public static double distance(Point a, Point b)

{

return (double)Math.sqrt((a._x - b._x)*(a._x - b._x)

+ (a._y - b._y)*(a._y - b._y));

}

public static void main(String[] args)

{

Point a = new Point(1.0, 1.0);

Point b = new Point(5.0, 4.0);

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println(Point.distance(a, b));

}

}

 

设定好 jdk 路径和 classpath 之后 , 编译打包:

javac -g -target 1.1 *.java

jar -cvf0 Point.jar *.class

  •  

    装载 java 包到目标数据库

    如下图所示:进入具体的数据库 iihero à Java 对象 à Jar 文件,右键 à 新建,即可把刚才打好的 java Point.jar 装载到数据库 iihero 当中。

 

 

面向对象应用的实际效果

 

D:\ASE150>isql -Uspring -Pspring1

1> use iihero

2> go

创建含对象类型 Point 列的表:

1> create table testpoint(id int primary key, p Point)

2> go

使用对象特性插入数据并查询:

1> insert into testpoint values (1, new Point(1.0, 1.0))

2> insert into testpoint values (2, new Point(5.0, 4.0))

3> insert into testpoint values (3, new Point(6.0, 13.0))

4> go

(1 row affected)

(1 row affected)

(1 row affected)

1> select * from testpoint

2> go

id p

----------- --------------------------------------------------

1 (1.0, 1.0)

2 (5.0, 4.0)

3 (6.0, 13.0)

(3 rows affected)

直接取属性值:

1> select id, p>>_x, p>>_y from testpoint

2> go

id

----------- --------------------------- ---------------------------

1 1.000000 1.000000

2 5.000000 4.000000

3 6.000000 13.000000

 

(3 rows affected)

查询两点间的距离:

1> select a.id, b.id, Point.distance(a.p, b.p) from testpoint a, testpoint b whe

re a.id < b.id

2> go

id id

----------- ----------- ---------------------------

1 2 5.000000

1 3 13.000000

2 3 9.055385

 

(3 rows affected)

 

以距离作为条件查询点 ( 查询两点间距离小于 6.0 的点对 )

1> select a.id, b.id from testpoint a, testpoint b where Point.distance(a.p, b.p

) <6.0 and a.id > b.id

2> go

id id

----------- -----------

2 1

(1 row affected)

<!-- [if !supportLists]-->二、 <!-- [endif]-->总结

在到 ASE 数据库服务器内部,它对 Java 类作了如下映射:

select 出对象列的值,就是 Java 对象的 toString() 值。

静态方法可以直接在 select 语句里当作函数进行调用,如上例中的 Point.distance() 方法

直接可以取类的成员值,如果那个成员是公有成员,并且有相应的 SQL 类型映射,如上例中的 p>>_x, p>>_y ,使用 ”>>” 操作符来提取。

按照上述原理,用户完全使用内置的 Java 包实现非常复杂的逻辑,然后在 SQL 语句中直接加以利用。尤其是那种接近于面向对象数据库的应用。

总之,使用内置 Java 支持对对象类型的存取,是一种很直观易用的方法,也便于用户进行扩充。从这个角度来看, Sybase ASE 也可以算是支持面向对象的数据存取了。

 


分享到:
评论

相关推荐

    Sybase ASE 15.0简体中文技术参考手册.7z

    SybaseASE15.0 中的JAVA.pdf SybaseASE15.0 分布式事务管理.pdf SybaseASE15.0 参考手册-表.pdf SybaseASE15.0 参考手册_命令.pdf SybaseASE15.0 参考手册_构件块.pdf SybaseASE15.0 参考手册_过程.pdf SybaseASE...

    SYBASE ASE 15.0-ASE15.0的新增功能

    综上所述,SYBASE ASE 15.0 通过引入一系列新功能和技术改进,在提升产品竞争力的同时也更好地满足了不同行业用户的需求。无论是从性能优化、安全性加强还是用户体验方面来看,都体现出了开发团队对于产品质量...

    Sybase ASE15.0 for windows 配置指南_中文

    中文版 Sybase ASE15.0 for windows 配置指南

    Sybase ASE 15.0简体中文技术参考手册

    ASE中的JAVA.pdf HA_故障切换.pdf Historical Server.pdf Job Scheduler.pdf Monitor Client.pdf Monitor Server.pdf T-SQL用户指南.pdf WEB服务.pdf XML服务.pdf 全文本搜索引擎.pdf 分布式事务管理.pdf 参考手册-...

    SYBASE ASE 15.0-ASE中的 Java

    在ASE 15.0中,对Java的支持是其重要特性之一,这标志着SYBASE致力于为用户提供更为现代、灵活的数据库管理体验。通过集成Java,ASE能够更好地与当前流行的开发语言和框架协同工作,从而满足企业级应用对于跨平台、...

    SYBASE ASE 15.0-配置指南-Unix

    #### 五、ASE 15.0 在企业级应用中的优势 - **稳定性**: 经过多年的技术积累和完善,ASE在大型企业环境中表现出色。 - **可扩展性**: 能够轻松应对数据量增长带来的挑战,支持水平和垂直扩展。 - **集成性**: 与...

    SYBASE ASE 15.0-词汇表

    ### SYBASE ASE 15.0 词汇表详解 #### AdaptiveServer Enterprise (ASE) AdaptiveServer Enterprise (ASE),是Sybase公司开发的一款高性能的企业级数据库管理系统。ASE 15.0作为该系列的一个重要版本,提供了强大...

    SYBASE ASE 15.0-安装指南(jconnig605_ZH)

    SYBASE ASE 15.0-安装指南(jconnig605_ZH)

    SYBASE ASE 15.0-XML 服务

    ### SYBASE ASE 15.0-XML 服务解析 #### 概述 SYBASE Adaptive Server Enterprise (ASE) 15.0 是一款高性能的关系型数据库管理系统,由Sybase公司开发,现为SAP公司旗下产品。ASE 15.0在数据库管理领域拥有卓越的...

    Sybase ASE参考手册(中文版,全4卷)

    **Sybase ASE参考手册概述** Sybase Adaptive Server Enterprise...通过这四卷全面的参考手册,读者将能够深入理解Sybase ASE的功能、特性和最佳实践,从而更好地管理和优化数据库系统,解决实际工作中的各种挑战。

    SYBASE ASE 15.0-配置指南-Unix(uconfig_ZHS-15.0.3)

    ### SYBASE ASE 15.0 - 配置指南核心知识点 #### 1. AdaptiveServer Enterprise (ASE) 15.0 ...以上内容基于SYBASE ASE 15.0配置指南中的核心知识点,旨在为用户提供全面的配置指导,确保数据库系统的高效稳定运行。

    Sybase ASE 15.5 Transact-SQL 用户指南(中文)

    ### Sybase ASE 15.5 Transact-SQL 用户指南知识点概述 #### 一、Adaptive Server Enterprise (ASE) 概述 - **版本信息**:文档为Sybase ASE 15.5版本的Transact-SQL用户指南,文档ID为DC32970-01-1550-01,最后...

    ASE 15.0 参考手册

    在ASE 15.0中,执行系统过程可以使用Transact-SQL(T-SQL)语句,这是一种扩展了SQL语法的语言,专门用于ASE 15.0的数据库操作。通过T-SQL,用户可以执行一系列的命令来启动系统过程,这些命令会被数据库引擎解释...

    sybase 15.0优化

    Sybase Adaptive Server Enterprise(ASE),作为一款高性能的企业级数据库管理系统,自1989年推出以来,一直致力于为用户提供可靠的数据管理解决方案。Sybase ASE 15.0版本的优化,主要围绕提高数据库性能和响应...

    Sybase ASE ODBC Driver 下载

    **Sybase ASE ODBC Driver 下载** Sybase ASE(Adaptive Server Enterprise)ODBC(Open Database Connectivity)驱动程序是连接到Sybase ASE数据库的关键组件,它允许应用程序通过标准的ODBC接口与Sybase数据库...

    Sybase ASE15.0.2 Linux 32bit x86版(10之5)

    Sybase ASE15.0.2 Linux 32bit x86版(10之5) Sybase ASE15.0.2 Linux 32bit x86版(10之5) Sybase ASE15.0.2 Linux 32bit x86版(10之5) Sybase ASE15.0.2 Linux 32bit x86版(10之5) 使用7-zip解压

    SYBASE_ASE 15.7.0 for windows 64bit 客户端

    综上所述,**SYBASE_ASE 15.7.0 for Windows 64bit客户端**凭借其卓越的性能表现、强大的安全功能以及灵活的扩展能力,在企业级数据库应用中占据着重要地位。无论是对于新部署项目还是现有系统的升级替换而言,都是...

    Sybase ASE 12.5.4 ODBC驱动包

    Sybase ASE 12.5.4 ODBC驱动包, 4.0.x 版本 将zip解到d:\\sybasease目录下边,然后注册下边的内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] ...

    ASE15.0应用开发与系统维护管理--2.pdf

    ASE 15.0版本在数据库管理和应用开发方面提供了丰富的功能和工具,以下是对该版本中的几个核心知识点的详细解析: ### ASE 15.0架构 ASE 15.0采用了多层次、模块化的架构设计,包括存储引擎层、事务处理层、查询...

Global site tag (gtag.js) - Google Analytics