在应用程序中将OJB作为一个存储层使用(六) (转)[@more@]

Product映射:

现在我们要开始讲解从Product类到数据库表PRODUCT的映射。通常这种映射都不是通过

编程实现,而是通过定义一个XML文件。DescriptorRepository类提供了一些方法来读取

xml文件并进行初始化。结果就能在以后的编程中被使用(也可以通过纯编程来实现)。

我们已经写好了我们的映射关系,文件放置在src/test/ojb/repository.xml,中,xml

文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<!-- This is a sample metadata repository for the objectBridge System.

Use this file as a template for building your own mappings--&gt

<!-- defining entities for include-files --&gt

]>

isolation-level="read-uncommitted">

<!-- The Default JdbC Connection. If a class-descriptor does not

specify its own JDBC Connection,

the Connection specified here will be used. --&gt

platform="Hsqldb"

jdbc-level="2.0"

driver="org.hsqldb.jdbcDriver"

protocol="jdbc"

subprotocol="hsqldb"

dbalias="/samples/hsql/OJB"

username="sa"

password=""

/>

<!-- include user defined mappings here --&gt

&user;

<!-- include mappings for JUnit tests and sample apps here --&gt

&junit;

<!-- include ojb internal mappings here --&gt

&internal;

文件含有很多的信息:

1. Xml文件通过repository.dtd来验证其有效性。这就保证的xml文件语法的正确性。

确保将dtd文件放在和xml文件一样的目录,否则xml解析器将会报出找不到DTD的错误

2. 映射包含一个缺省的JDBCConnectDescriptor。该描述包含了在存储操作中所用到的

JDBC连接。对于那些没有定义特殊的JDBCConnectionDescriptor的类来说,都使用该描

述中的缺省JDBC连接。

在我们的例子中,描述申明了所有的操作都是靠JsqlDb JDBC驱动的,相应的数据库放在

相应的目录下面。

3. OJB映射回归测试。通过包含repository_junit.xml中的XML entity&junit。该ent

ity被定义在一个包含的文件中:

4. OJB内部的映射。OJB需要一些内部表来进行一次阿操作,如维持数据库锁,自动增

长,ODMG的collections和Maps。相应的映射也在这里实现。他们都正确的操作起重要作

用,应该不能被修改。

这些内部映射通过包含repository_internal.xml中的XML entity&internal来定义

5. 用户定义的映射。用户定义的映射包含所有对存储类做的对象/关系映射信息。缺省

的,实例程序的映射在这里定义。这些映射通过包含repository_user.xml的XML entit

y&user来定义。

现在让我们来看一下Product类,我把相应的映射放在repository_user.xml中,这样我们很

易找到。从文件的开头我们可以看到有一个对Product类的类描述:

<!-- Definitions for org.apache.ojb.broker.Product --&gt

class="org.apache.ojb.broker.Product"

table="PRODUCT"

>

name="id"

column="ID"

jdbc-type="INTEGER"

primarykey="true"

autoincrement="true"

/>

name="name"

column="NAME"

jdbc-type="VARCHAR"

/>

name="price"

column="PRICE"

jdbc-type="DOUBLE"

/>

name="stock"

column="STOCK"

jdbc-type="INTEGER"

/>

类描述给出了和rdbms表相映射的类名称。

对于每个存储类的属性,我们定义一个field-descriptor,对应存储在数据库中的每一

列.对于主键,我们有一个特别的标记:primarykey="true".主键也相应地被设为autoi

ncrement="true",这就告诉了OJB给这个属性分配一个唯一的ID。这些都是通过一个Se

quenceManager工具类实现的。

Field-descriptor既可以声明primitive data型,也可以声明相应的封装类。

如果你的存储类中含有其他存储类的实例,你可以通过reference-descriptor来定义它

们之间的关系。如果存储类中有array-或是collection-属性,你可以使用collection-

descriptor属性。你可以在org.apache.ojb.broker包中找到一些例子,相应的描述在r

epository.xml中。

工具支持:

一般说来,有三种建立O/R映射的方式:

1. Forward engineering。通过给出Java类(或是UML模型),生成SQL DDL和映射关系

。我们可以使用一个工具从repository.xml生成一个数据库。执行build[.sh] forword

-db可以看到forward engineering的工作过程。

2. Reverse engineering。给出SQL DDL或者数据库,产生Java类和映射。执行build[

.sh] reverse-db可以看到reverse engineering的工作过程。

3. Mapping proper。给出Java类和SQL DDL,产生映射。我们现在还没有进行果测试,

但是已经列入下一步的计划中。

结论:

在本文中,我们学习了怎样给一个简单的类建立OJB对象/关系映射,在类的实例上通过

OJB PersistenceBroker api进行存储操作。

接着还有三篇文档,介绍了如何使用OJB ODMG API,OJB JDO API和高级O/R映射(包括

1-1,1-n映射,代理机制,支持多态性和映射继承)

我们希望该文档会对你有帮助,欢迎提出意见建议。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-963457/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-963457/

在应用程序中将OJB作为一个存储层使用(六) (转)相关推荐

  1. 在应用程序中将OJB作为一个存储层使用(二) (转)

    在应用程序中将OJB作为一个存储层使用(二) (转)[@more@] 用OJB PersistenceBroker api实现各种功能: 上面的一段代码很简单,因为没有涉及到存储操作,仅仅是程序的退出 ...

  2. SQL Server 2005 - 如何在预存程序中调用另外一个预存程序

    要在一个预存程序中调用另外一个预存程序,可以使用下列两种方式之一进行调用:  <?xml:namespace prefix = o /> EXECUTE <欲执行之预存程序的名称&g ...

  3. 想在Android应用程序中将XLS文件转换为PDF吗?看完这篇教程就懂了

    在各种情况下,您可能需要通过Internet共享Excel文件.为避免篡改,最佳做法是在共享之前将这些文件转换为PDF格式.因此,在本文中,将学习如何在Android应用程序中将Excel XLSX或 ...

  4. 双十二结束了,程序员如何设计一个秒杀系统?

    秒杀系统的关键点: 秒杀系统其实主要解决2个问题,一个是并发读,一个是并发写.整体概况为"稳.准.快" 高性能. 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键.本文 ...

  5. python编程语言汇总-最全的编程语言汇总,程序员你可要存好了!

    原标题:最全的编程语言汇总,程序员你可要存好了! 编程语言(programming language),是用来定义计算机程序的形式语言.它是一种被标准化的交流技巧,用来向计算机发出指令.一种计算机语言 ...

  6. 用java实现一个计算器程序_1.2第一个java程序——hello world

    第一个java程序--hello world 实现一个java程序,主要有三个步骤:1.编写源代码,2.编译源代码,3.运行.java的源代码必须先编译,然后才能由JVM解析执行.所以我们程序员第一步 ...

  7. 将Java程序变成可执行文件的一个简单方法

    将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...

  8. 凡客诚品-工作经历 程序员你有一个感恩的心吗?

    <凡客诚品-工作经历 程序员你有一个感恩的心吗?>,作者:dz45693,原文链接:http://www.cnblogs.com/majiang/archive/2012/11/27/27 ...

  9. 思考并实现以下程序功能:实现一个抢红包的程序 java

    抢红包的程序 java 思考并实现以下程序功能:实现一个抢红包的程序. 可参考模拟微信抢红包的过程:假如当前红包是x元,参与抢红包的有y人,按时间先后顺序保证y人正好抢完x元红包,其中每人抢的红包数值 ...

最新文章

  1. JavaScript扩展运算符(...)
  2. Excel:Excel使用技巧经验总结之(利用Excel自带功能统计各个字段不同类别及其个数并进行图表可视化+非编程实现)图文教程之详细攻略
  3. 利用java实现android项目结构API文档
  4. Deployment descriptor
  5. GridView 移除模板列
  6. 历年高考报考人数和录取人数
  7. Pony.ai签约落户广州南沙,计划年底前推出无人车队
  8. vue-cli中引入jquery的方法
  9. live2d内嵌html,博客(网页)添加 Live2D 看板娘
  10. openwrt - transmission
  11. 软件开发的流程和常用模式
  12. 【Python-神经网络预测】
  13. 2022年全国职业院校技能大赛网络安全赛卷(中职组)卷1
  14. android指纹采集sdk,SDK上的Android指纹23
  15. Android 标题下划线 选中效果
  16. 问题 B: Bumped!
  17. 仙剑奇侠传编年史(转自网络)
  18. 华为云Web应用防火墙 ——为网络安全打通“第一公里”
  19. 每月一书(202102):《人类简史》
  20. SW3518快充方案

热门文章

  1. JavaScript竞彩篮球投注,注数和最高奖金的算法
  2. 业界最快的高转速马达,追觅科技V12无线吸尘器
  3. Mendeley无法安装word插件解决方案及插入参考文献教程
  4. 设计期权套期保值方案时应注意的问题
  5. java不是有效的win32_不是有效的Win32应用程序的解决方法
  6. druid.io中文版文档
  7. 移动web-版心容器
  8. 十大科学谜题本世纪有望解开:时间是幻觉吗
  9. mysql 重复率高字段 索引,为什么重复值高的字段不能建索引(+聚集索引和非聚集索引)...
  10. sad代价计算_转载:H.264帧内模式选择以及代价计算相关知识