`
iihero
  • 浏览: 258242 次
  • 性别: 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配置指南中的核心知识点,旨在为用户提供全面的配置指导,确保数据库系统的高效稳定运行。

    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 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 ODBC Driver 下载

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

    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