`

PropertySet 学习一

阅读更多

http://www.opensymphony.com/propertyset/

 

一、PropertySet介绍

    

PropertySet管理属性(Property)的好工具,它提供一个抽象方法来向一个持久性存储源中动态保存和取回类型化的属性数据。支持多种持久化方式,例如:XML, EJB, Ofbiz, JDBC, Castor JDO,Memory等,同时也提供了一个简单的API来根据你的需要写你自己定制的PropertySets

 

      A PropertySet is designed to be associated with other entities in the system for storing key/value property pairs.  :简单的说,设计PropertySet是用来存储键值/属性对的。

 

 

二、PropertySet的用法和配置

PropertySet模块的配置文件被存入当前应用的类路径,它按照次序找以下文件

  1. /propertyset-default.xml
  2. /META-INF/propertyset.xml
  3. /META-INF/propertyset-default.xml

propertyset-default.xml 文件总是被找到,因为它被包含在propertyset.jar中,你可以通过定义你自己的propertyset-default.xml 文件重写这些配置,这个配置文件的格式如下:

<propertysets>
	<propertset name="baz" class="com.foo.bar.BazPropertySet">
		<arg name="some" value="thing"/>
		...
	</propertyset>
	...
</propertysets>

 使用上面的PropertySet的代码是:

import com.opensymphony.module.propertyset.*;
...
HashMap args = new HashMap();

// add parameters to the args map
PropertySet ps = PropertySetManager.getIntance("baz", args);

 args 用来初始化配置中的参数。
二、PropertySet 数据库说明

    绝大部分PropertySet实现都把数据持久化到关系型数据库中,因为PropertySet 存储了很多类型的数据,而在开发的时候是那种类型是不确定的,所以数据库结果表并不是最优、最标准的组织形式。由于这种表设计不是最优的,所以在这些表上做查询时速度将会很慢。所以我们建议建立下面的索引(indices)在表OS_PROPERTYENTRY 上,这样可以提高20%的速度。

CREATE UNIQUE INDEX os_PropertyEntry_keyidx ON os_PropertyEntry( entityName, entityId, keyValue )
CREATE UNIQUE INDEX os_PropertyEntry_allidx ON os_PropertyEntry( entityName, entityId )

    除了索引,另一个可以提高性能的方面是当你写应用时key名字的考虑,如果你所有的key名都像com.acme.foo, com.acme.bar,com.acme.baz,你的数据库不可能恰当的区分OS_PROPERTYENTRY 中的数据,或者把key 名取得直白、明确一些,例如:foo,bar,and bax,移除相同的前缀,或者使用一个不同key命名惯例,例如:oof.emca.moc, rab.emca.moc, and zab.emca.moc。总之,通过恰当的取key的名字,你的数据库可以更快的访问PropertySets.

三、PropertySet接口说明

      public interface PropertySet

     一个键只能包含一个值,键必须是唯一的(即使类型不同)。如果使用了一个已经被用的键名且类型相同,设置的新值将会覆盖旧值。

      1、如果使用一个已经被用的但是类型不同的键,一个DuplicatePropertyKeyException异常将被抛出。

      2、一个属性有多种类型也是不被允许的,如果一个属性有多个类型,一个IllegalPropertyException 异常将被抛出。

      3、如果得到一个已存在属性,但是返回的类型不对应,一个InvalidPropertyTypeException异常被抛出。

      4、如果取一个不在的属性,null(或者是初始值)被返回。

      使用一个不同的类型返回 ,如果新的类型比旧的类型长度更长一些,则不会抛出异常,例如用float 类型接整型数据。

四、Class CachingPropertySet

      此类实现了PropertySet接口,属于包
com.opensymphony.module.propertyset.cached.CachingPropertySet

  1、PropertySet 的实现,可以存储到属性到缓冲中。

  2、当你的应用是一个独占的访问时才能用这个类,否则警慎使用。

  3、大数据量的装载。

分享到:
评论

相关推荐

    propertyset-1.3

    "propertyset-1.3" 是一个特定的软件组件,主要与Java和J2EE环境相关。这个组件的版本号是1.3,这通常意味着它是一个更新版本,可能包含了错误修复、性能优化或者新功能的添加。在Java开发中,版本号的更新对于...

    Property Set Library (PSL)-开源

    属性集库(PSL,Property Set Library)是一个开源的C++库,专为开发者提供一套高效、便捷的数据管理和操作工具。这个库的核心理念是利用模板技术实现一种面向对象的编程模型,它支持值的观察、事件处理、垃圾回收、...

    VS关于PropertyGrid的应用实例

    通过学习这些实例,你可以更好地理解`PropertyGrid`的用法,并将其灵活地应用于自己的项目中。 总结来说,`PropertyGrid`控件是.NET开发中的强大工具,它简化了创建属性编辑界面的过程。通过深入理解和实践,开发者...

    Android动画之(PropertyAnimation)属性动画详解(一)

    属性动画(Property Animation)是Android 3.0(API级别11)引入的一种强大的动画系统,它极大地扩展了Android平台上的动画能力,使得开发者能够实现更为复杂和流畅的动态效果。本篇文章将深入探讨属性动画的概念、...

    PropertyGrid.rar

    你可以通过解压"PropertyGrid.rar"并运行代码,来深入学习`PropertyGrid`的用法,了解如何根据具体需求调整其显示和交互效果。 总的来说,`PropertyGrid`是C#开发中一个非常实用的控件,能够帮助开发者快速构建具有...

    c# propertyGrid 属性显示为中文,支持下拉菜单选择文本

    通过学习这个例子,你可以了解到如何自定义`PropertyGrid`的行为,以满足特定的需求,比如本地化和定制输入控件。 总的来说,理解和运用`PropertyGrid`的自定义特性以及`UITypeEditor`是提高用户体验和增强应用程序...

    1_Property_Charge.zip

    考虑到压缩包中只有一个文件 "1_Property_Charge",这可能是一个单独的源代码文件、数据文件或者文档,但其类型(如.txt、.pdf、.java、.cpp等)未知。 尽管信息有限,我们可以根据常见的IT知识点进行一些假设和...

    C# get与set操作.rar

    在C#编程语言中,`get`和`set`是访问器方法,它们用于属性(Property)的定义,提供了一种安全的方式来读取和修改对象的私有成员。属性是类的一个特性,它允许我们像访问字段一样访问数据,但同时提供了额外的控制和...

    .Net对象属性名在PropertyGrid 中显示中文

    1. **自定义属性描述符(Attribute)**:你可以创建一个自定义属性,继承自DescriptionAttribute,然后在属性声明上应用这个自定义属性,提供中文描述。例如: ```csharp [Description("中文描述")] public string ...

    cors-filter-1.7.jar,java-property-utils-1.9.jar两个包供学习使用.rar

    总的来说,CORS-filter-1.7.jar和java-property-utils-1.9.jar这两个库在Java Web开发中扮演着重要角色,一个是解决前后端跨域问题,另一个则是处理配置文件的读写。理解并掌握这两个库的使用,对于提升Web应用的...

    java的property配置文件的用法.txt

    properties.setProperty("existingKey", "updatedValue"); // 保存到文件 saveProperties("config.properties"); ``` #### 五、其他常用方法 `Properties`类还提供了一些其他有用的方法,如: - `containsKey(key)...

    jsp基础学习资料(jsp基础学习资料)

    除了指令和EL,JSP还提供了如`&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`, `&lt;jsp:getProperty&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:include&gt;`等动作标签,它们简化了JavaBeans的使用和其他页面操作。 **JSP的现代替代品** 虽然...

    j2ee学习笔记-j2ee学习笔记

    3. **动作(Actions)**:如`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`、`&lt;jsp:getProperty&gt;`等,用于管理JavaBean和其他操作。 **请求控制器结构(Request Controller)** 请求控制器,也称为JSP Model 2架构,建议...

    JSP学习笔记 jsp学习资料

    - **jsp:setProperty**:设置JavaBean的属性。 - **jsp:getProperty**:读取JavaBean的属性。 ### 6. EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library) - **EL**:简化了数据访问,允许...

    JSP基础学习的课堂源码

    - **jsp:setProperty**:设置JavaBean的属性。 - **jsp:getProperty**:获取JavaBean的属性。 **5. EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)** - **EL**:简化了JSP中的数据...

    hibernate学习一:简单应用1配置文件版

    本篇文章将探讨“Hibernate学习一:简单应用1配置文件版”,主要涵盖如何配置Hibernate,创建实体类,以及进行基本的CRUD操作。 首先,我们来了解Hibernate的核心配置文件——`hibernate.cfg.xml`。这个文件包含了...

    类的创建 在程序中访问类PPT学习教案.pptx

    `Property Get`用于读取属性值,`Property Let`用于设置属性值,而`Property Set`在设置对象属性时使用,特别适用于变量类型为对象的情况。 3. **属性过程的编写**: - 比如,为了定义`DateAdd`属性,你可以使用...

    C#6.0学习笔记从第一行C#代码到第一个项目设计

    本学习笔记将带你从零开始,逐步掌握C#的基础语法,并最终实现你的第一个项目设计。下面,我们将详细探讨C# 6.0中的关键知识点。 1. **自动属性(Auto-Implemented Properties)** 在C# 6.0之前,我们定义属性通常...

    面向对象编程简介PPT课件.pptx

    在VB.NET中,对象可以通过Dim语句创建,如`Dim objForm As New Form1`,这会创建一个新的Form1类型的对象实例,并将其赋值给变量objForm。 2. 类:类是对象的模板或蓝图,定义了对象的属性和方法。在VB.NET中,你...

Global site tag (gtag.js) - Google Analytics