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的几个重要属性:

Property Explanation
definitionFiles XML定义文件的路径
dataSource 用于连接数据库的数据源(OOTB: /atg/dynamo/service/jdbc/JTDataSource)
repositoryName repository的名字
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组合规则组合它们

定义文件示例:




<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类型

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

    它的主要属性是:

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

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

    它的主要属性是:

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

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

      它的主要属性是:

    name 属性名称(必需属性)
    data-type 此属性的数据类型,除非设置了item-type或者property-type,否则为必需
    column-names SQL数据库中的一个或多个列名(默认值: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选择适当的值

你可能感兴趣的:(Oracle,ATG)