ATG定义Repository Data Model

设置SQL Repository

  1. 创建要由SQL Repository使用的Repository定义文件

    一个模板XML文件,定义存repository item的描述符及其属性,它描述了SQL database和SQL repository之间的关系

  2. 配置SQL Repository component

    SQL Repository是一个Nucleus component,porperties定义文件的属性指向Repository定义文件

  3. 在数据库服务器上创建SQL数据库模式

    ATG提供了生成初步数据模式的工具

Repository Component

应用程序中的每个repository都需要一个Repository component,Repository component是一个Nucleus component。

一个SQL存储库的派生类:Atg.adapter.gsa.GSARepository

Repository Component的几个重要属性:

PropertyExplanation
definitionFilesXML定义文件的路径
dataSource用于连接数据库的数据源(OOTB: /atg/dynamo/service/jdbc/JTDataSource)
repositoryNamerepository的名字
XMLToolsFactory用于解析repository定义文件(OOTB: /atg/dynamo/service/xml/XMLToolsFactory)
transactionManager用于管理事务边界(OOTB: /atg/dynamo/transaction/TransactionManager)
idGenerator用于生成唯一id(OOTB: /atg/dynamo/service/IdGenerator)
loadItemBatchSize一次从数据库加载的最大项数(默认值为200)

Repository定义文件

每个repository都可以在一个或多个XML定义文件中定义,repository定义文件描述repository中的存repository Items,它将表列映射到项属性,它由表示SQL Repository的GSARepository组件引用,如果在不同的配置路径目录中使用相同的路径定义一个或多个XML文件,则使用XML组合规则组合它们

定义文件示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE gsa-template PUBLIC "-//Art Technology Group, Inc.//DTD General SQL Adapter//EN"
        "http://www.atg.com/dtds/gsa/gsa_1.0.dtd">

<gsa-template>
  <item-descriptor name="user">
    <table name="MY_USER" type="primary"  id-column-name="id"> 
      <property name="id" column-name="id" data-type="string"/>
      <property name="name" column-name="user_name" 
          data-type="string"/>  
      <property name="age" column-name="user_age"
          data-type="int"/>  
      <property name="birthday" column-name="birthday" 
          data-type="date"/>  
    </table>
  </item-descriptor>
</gsa-template>

定义文件的主要元素:

  1. 定义文件必须有XML声明

  2. 所有标记都必须包含在一个gsa-template标记中

  3. <item-descriptor> 标签: 定义item类型

    每个repository item类型由一个item descriptor描述,item
    descriptor由<item-descriptor>标记定义

    它的主要属性是:

name此项目描述符的名称,在repository中是惟一的(必需的)
Cache-mode此item descriptor的缓存模式
description可选的描述这个项目item descriptor默认值:名字的值
  1. <table> 标签: 向item类型添加表

    标记指定一个SQL数据库表,该表存储由该item descriptor定义的repository items的属性

    它的主要属性是:

name数据库的表名
type表的类型,Primary, auxiliary(默认) or Multi
id-column-name(s)与存储库ID对应的数据库列的名称
  1. <property> 标签: 定义repository item的属性

    每个属性标记对应于repository item的一个属性。
    如果属性标记是表标记的子标记,则表示一个持久属性。
    如果它出现在标记之外,则它是一个临时属性,不存储在数据库中。

    它的主要属性是:

name属性名称(必需属性)
data-type此属性的数据类型,除非设置了item-type或者property-type,否则为必需
column-namesSQL数据库中的一个或多个列名(默认值:name的值)

XML文件的组合

ATG平台将沿着配置路径出现的相同名称的XML定义文件组合到运行时的单个组合文件中,它由XML属性xml-combine控制,xml-combine属性可以设置为以下值之一来控制标签组合:

replace
remove
append
append-without-matching
prepend
prepend-without-matching

XML文件是递归组合

默认的Item Descriptor

每个repository可以有一个默认的item descriptor

  • 可以通过将默认属性设置为true来标识repository的默认item descriptor
  • 如果repository只有一个item descriptor定义,那么它就是缺省值
  • 如果没有显式标识缺省item descriptor,则XML文件中的第一个item descriptor是缺省值

当使用repository API(如getItem、createItem)而不指定item descriptor时,将使用默认的item descriptor

下面的xml文件默认使用user item类型:

<gsa-template>
  <item-descriptor name="user" cache-mode="locked" item-cache-size="500" default="true">
    <table name="dps_user">
      <property name="userType" data-type="enumerated">
        <option value="investor" code="1">
        <option value="broker" code="2">
        <option value="guest" code="3">
      </property>
    </table>
  </item-descriptor>
</gsa-template>

定义Resource Bundle

Resource Bundle使用resourceBundle属性定义,可以使用属性标签property,table或者item设置resource bundle,一个property如果设置了resourceBundle就会使用自身的resourceBundle属性,如果没有,则在表标记中查找resourceBundle属性集,然后在item descriptor标记中查找resourceBundle属性集

示例:

<item-descriptor name="user" ....>
   <attribute name="resourceBundle" value="atg.userprofiling.ProfileResources"/>
...

本地化属性显示名称

要本地化存储库编辑器中的标签(例如BCC),要使用可本地化的属性

display-name-resource: for display-name property
description-resource: for description property
category-resource: for category property
示例:

<item-descriptor name="user" display-name-resource="iUser">
   <attribute name="resourceBundle" value="atg.userprofiling.ProfileResources"/>
...

在resource bundle文件ProfileResources.properties,它有entry:

iUser=User

本地化枚举类型

若要本地化枚举类型,需要在选项标记上使用“resource”属性:

<property name="emailStatus" data-type="enumerated" ...>
   <option resource="emailStatusUnknown" code="0"/>
   ...

如果将useCodeForValue设置为true,则调用getPropertyValue不会返回本地化的属性值。

要在页面上显示本地化的值,需要在页面中包含本地化的字符串,使用servlet bean Switch选择适当的值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值