JIRA中的数据存储-----active object

转载自:https://blog.csdn.net/koukan3/article/details/70846760

JIRA中,数据实体(entity)的字段、类型及和数据库表的对应关系这些设置在 entityengine.xml、entitygroup.xml、entitymodel.xml中。

entitymodel.xml------------定义实体、属性,以及和数据库表、字段的对应关系。

entitygroup.xml------------定义数据实体所属的分组信息。

entityengine.xml-----------加载entity group, entity model, field type位置信息、定义处理实体数据的delegator(委托);属性、字段类型的对应信息设置在fieldtype-***.xml文件中。

使用  Ofbiz Entity Engine 来操作数据和数据库,需要编辑以上配置文件,操作略。本文讨论的是如何利用 active object 来处理数据。


1.实体entity的定义:

关系型数据库中,实体就是由一系列属性和该实体与其他实体间的关联关系定义的一组数据。


2. AO简介

ActiveObjects是一个纯Java ORM。 

AO可以与现有数据库模式一起使用,也可以从用户指定的实体接口自动生成数据库模式。


ActiveObjects
自然使用延迟加载以及复杂的缓存机制,比传统的数据映射器ORM更具性能。 然而,它的主要设计目标不是性能,而是创建一个强大的ORM,用于集成到您的项目中。 

JIRA产品是用Java语言写的,在JIRA中操作数据和数据库,也可以使用AO。


3.JIRA中使用AO的注意事项

3.1 在pom.xml中添加对activeobjects-plugin.jar的依赖。

3.2  AO通过接口(interface)来定义实体(entity),实体创建后,在数据库中也会自动生成数据库表(table)。

      接口继承了 Entity,它将主键直接定义为ID。

public interface DemoEntity extends Entity{
	/**
           定义 get,set方法以便存储数据
             */
}
<span style="font-size:18px;">public interface Entity extends RawEntity<Integer>
{
	@AutoIncrement
	@NotNull
	@PrimaryKey("ID")
	public int getID();             //Entity接口已经为用户定义好了ID主键
}</span>

3.2.1 定义非空字段:

    @NotNull
    public String getAuthor();
    public void setAuthor(String author);
3.3默认情况下,针对实体除ID以外的字段/属性,AO使用懒加载(lazy loading);

     使用 @Preload 注释来让AO立即加载。


3.4 为了能够操作数据实体,需要在JIRA配置文件(atlassian-plugin.xml)中引入AO组件(component import)。

    (在SDK高级版本中,配置 component import,会报错------atlassian-plugin.xml contains a definition of component-import.This is not allowed when Atlassian-Plugin-Key is set. 可以使用spring注解来解决,@ComponentImport)


3.5 每一个AO交互(interaction)的完成都需要在事务(transaction)中进行,可以在业务层接口上方加注解:

     @Transaction


3.6 在定义实体(entity)名时,长度不要超过30个字符,否则会报如下错误:

net.java.ao.ActiveObjectsException: Invalid entity, generated table name (AO_769468_******) for 'com.******.****' is too long! It should be no longer than 30 chars.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值