`
liwenshui322
  • 浏览: 520552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Openbravo3.0 服务端技术--数据访问层(Data Access Layer)

 
阅读更多

       Data Access Layer(DAL)描述的是服务端处理客户请求的逻辑,它将逻辑处理和数据处理分离开来,处理逻辑的时候是我们编写java代码,比如前台需要更新一个字段,我们构造一个对象,将这个字段值设置进去,这样的逻辑是我们通过java代码编写来实现。进行数据处理的时候,比如保存,是我们将要保存的对象传给一个接口,接口帮我们处理,至于接口怎么处理我们就不需要管了。

 

      一. 单的hello world 举例

      新增一条记录

// create the object through the factory
  final Category bpg = OBProvider.getInstance().get(Category.class); 
 
 // set some values
 bpg.setDefault(true);
 bpg.setDescription("hello world");
 bpg.setName("hello world");
 bpg.setValue("hello world");
 bpg.setActive(true);
 
 // store it in the database
 OBDal.getInstance().save(bpg);

       更新一个字段

 

// create an OBCriteria object and add a filter
 final OBCriteria<Category> obCriteria = OBDal.getInstance().createCriteria(Category.class);
 obCriteria.add(Restrictions.eq("name", "hello world"));
 
 // perform the actual query returning a typed list
 final List<Category> categories = obCriteria.list();
 final Category cat = categories.get(0);
 
 // and set a new name
 cat.setName("another hello world");
 OBDal.getInstance().save(cat);
 

 

      二. DAL Architecture(DAL 构架)

     

    

 

       三. DAL主要的几个类

 

       1. BODal

       该类主要用于获取和保存对象到数据库,它提供如下方法:

       save:用于保存对象或者更新对象,如果该记录在数据库中存在则更新

       get:通过主键获取某一个对象

       remove:删除一个对象

       create OBCriteria:创建一个OBCriteria对象用于查询

       commitAndClose and rollbackAndClose:提交修改记录,或者回滚修改记录,这个通常是openbravo自己完成

 

       2. OBCriteria

       该类继承自hibernate的criteria接口。能够设置查询条件,查询记录条数,从哪一行开始查起,排序等等。详情看如下代码:

 

final OBCriteria obc = OBDal.getInstance().createCriteria(Currency.class);
//查询条件
obc.add(Expression.eq("name", "testname"));
//排序
obc.addOrderBy("name", false);
//从第100行起,查询10行
obc.setFirstResult(100);
 obc.setMaxResults(10);
//查询所有失效的记录(默认查有效记录)
obc.setFilterOnActive(false);
//统计行数
final int bpGroupCount = obc.count();
//获取查询结果
final List<BPGroup> bpgs = obc.list();

 

      3. OBQuery

      OBQuery继承于hibernate的query接口,创建类的时候传入俩参数,参数1:对象名,参数2:查询条件

 

 final OBQuery<Category> obQuery = OBDal.getInstance().createQuery(Category.class,
        "name='testname' or searchKey='testvalue'");
    final List<Category> bpgs = obQuery.list();

 

      4. OBProvider

      要保存的对象,不能通过new关键字创建。必须通过OBProvier的一个方法来创建。比如:

 

final Category bpg = OBProvider.getInstance().get(Category.class); 
 
 // The ENTITYNAME constant is created by the business object generation logic
 final BPGroup bpg = (BPGroup)OBProvider.getInstance().get(BPGroup.ENTITYNAME);

 

 

      四. Openbravo业务对象

 

      业务对象用于传送数据,比如后台java逻辑构造了一个业务对象,传递给数据库处理模块,然后数据库处理模块将这个对象保存到数据库。

 

      1. BaseOBObject

      Openbravo中所有的业务对象都继承自BaseOBObject,该类提供一些功能:提供直接访问属性的get/set方法,合法与安全性校验等等

 

      2. 生成业务对象

      在开发的时候,DAL将会为每一个数据库中的表创建一个业务对象,这是作为编译的一部。编译成功之后,这些业务对象放在src-gen文件夹下面。这些业务对象都继承自BaseOBObject,他们的set和get方法是利用父类BaseOBObject实现的,代码示例如下:

 

public String getRecord() {
  return (String) get("record");
 }
 
 public void setRecord(String record) {
  set("record", record);
 }

 

       3. 对象及其属性命名规则

 

       对象命名

       一个对象有好几个名字,

       AD_Table表中的tablename:数据库中对应的表名。

       AD_Table表中的name:是一个全局的唯一标识,用于在XML文件中标识这个对象,可以用于导入导出。(不包含空格)

       AD_Table表中的classname:当生成一个java对象的时候,用这里面定义的名称来创建java对象。

 

       属性命名

       一些基本的属性的名称取自AD_Column表的name列,比如用户名称,电话号码等等。

      一对多的情况,命名有些不同,比如:

      1. 子表c_orderline有一个外键c_order_id指向父表c_order,那么父表对应的对象Order,有一个属性代表它的所有子表信息,那么这个属性命名应该是orderLineList.(子表名称+list)

      2. 如果外键名称跟父表的主键名称不同,那么命名规则得变成(子表名称+外键名称+list),c_orderline有一列c_orderheader_id,而父表的主键名称为c_order_id. 那么这个属性应该命名为OrderLine_orderheaderList。

 

       另外还有一些约束:空格不允许,下划线会去掉,只允许字母和数字,首字母小写。

 

 

      4. 创建业务对象

      我们不能通过new关键字来创建对象,必须通过一个类的一个方法,这个类叫做OBProvider,比如:

      final Category bpg = OBProvider.getInstance().get(Category.class);      

      ob会根据这个对象是否有id和newOBObject标识位来判断这个对象是否是新创建的对象,如果没有id则是新建的,如果你要自己设置id,那么必须把newOBObject标识位设置成true,否则会报错。

 

 

 

 

 

 

 

 

  • 大小: 37.7 KB
分享到:
评论

相关推荐

    Openbravo 3.0 会计文件

    Openbravo 3.0 会计文件,适用与openbravo 3.x所有版本

    Openbravo 3.0 mp26 中文语言包

    100%汉化过的Openbravo 3.0 mp26 中文语言包

    Openbravo3.0二次开发部署步骤

    Openbravo3.0二次开发部署步骤

    openbravo-3.0PR19Q3

    openbravo-3.0PR19Q3

    Openbravo-3.0PR18Q3.2汉化包

    Openbravo-3.0PR18Q3.2汉化包本人亲测,90%的汉化率。

    openbravo 2.4-2.5-zh_CN-语言包

    openbravo 2.4 2.5zh_CN-中文语言包 汉化

    Openbravo3.0汉化包(80%汉化)

    openbravo 汉化包,目前只汉化了80%左右的文字,不过主要的部分都以及汉化了。

    Openbravo-POS-2.20.exe

    与openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关的openbravo 安装相关...

    IF4050-OpenBravo-Tugas2-WSO2-Identity-Server-API-Manager

    IF4050-OpenBravo-Tasks2-WSO2-Identity-Server-API-Manager Mochammad Dikra Prasetya 13511030 Evan Budianto 13511041 Muhammad Nassirudin 13511044 Renusa Andra Prayogo 13511063

    java开发erp源码下载-openbravo:OpenbravoERP-不再维护。请使用官方Openbravo

    发行版解压为$HOME/openbravo-tomcat (不要使用apache-tomcat-xxx文件夹) 该文件夹将被称为$CATALINA_HOME 。 湾在~/.bashrc设置CATALINA_HOME环境变量,因为它将被 Openbravo Setup Ant 脚本使用C。 在~/.bashrc...

    Openbravo ERP 3.0安装指南

    NULL 博文链接:https://liwenshui322.iteye.com/blog/1054473

    OpenBravo ERP E-R图

    开源ERP OpenBravo的数据库关系图。

    00-Openbravo开发手册

    - **开发平台**:Openbravo 提供了一个完整的开发平台,支持两层开发模式。 - **应用程序字典**:用于存储所有窗口、表格、列、进程、报表及其关系的信息。通过简单的定义即可实现新功能的增加。 - **模型/视图/...

    Openbravo POS Swedish Edition-开源

    Openbravo POS适用于瑞典的要求。 Openbravo POS是专为触摸屏设计的销售点应用程序,支持ESC / POS票证打印机,客户显示器和条形码扫描仪。 它是多用户提供产品输入表格,报告和图表。

    Openbravo ERP 技术简介(中文)

    ### Openbravo ERP 技术简介 #### 一、Openbravo ERP 概述 Openbravo ERP 是一款先进的企业资源计划系统,以其高度可定制性和灵活性著称。该系统支持多种主流技术,并且采用了模型驱动的设计理念。通过模型驱动的...

    Openbravo技术评测

    Openbravo ERP 的系统结构分为多个层次,包括前端展示层、业务逻辑层和数据访问层等。这样的设计使得系统具有良好的可维护性和扩展性。 #### 二、安装 **2.1 概述** 安装 Openbravo ERP 的过程相对简单,但是需要...

    IF4050-OpenBravo-Tugas1-Implementasi

    Mochammad Dikra Prasetya 13511030 Evan Budianto 13511041 Muhammad Nassirudin 13511044 Renusa Andra Prayogo 13511063 ... 将项目中的文件夹 Module 合并到 OpenBravo 项目中的文件夹 Module。

    Openbravo POS Arabic language-crx插件

    Openbravo POS Arabic Language crx 插件是专为OpenBravo Point of Sale(POS)系统设计的一个语言扩展,旨在为使用阿拉伯语的用户提供本地化支持。OpenBravo POS是一款开源的企业资源规划(ERP)软件的一部分,特别...

    Openbravo ERP Alerts Notification-crx插件

    语言:English用于显示Openbravo警报的简单扩展。右键单击以编辑选项,然后单击扩展名以打开Openbravo ERP用于显示Openbravo警报的简单扩展。右键单击以编辑选项,然后单击扩展名以打开Openbravo ERP。Openbravo用户...

    Openbravo 3 30.3 中文汉化包

    同时,用户可能还需要访问Openbravo的论坛或社区获取技术支持,解决安装和使用过程中遇到的问题。 总的来说,Openbravo 3 30.3 中文汉化包是提升中国用户使用Openbravo ERP体验的关键工具,它体现了开源社区的力量...

Global site tag (gtag.js) - Google Analytics