<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 16  文章 - 0  trackbacks - 0
    <2011年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    留言簿

    隨筆檔案

    友情鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    背景分析:
         在企業(yè)內(nèi)部信息系統(tǒng)中,大部分的業(yè)務(wù)數(shù)據(jù)可以簡單的分成兩類:
          一、基礎(chǔ)數(shù)據(jù),為業(yè)務(wù)處理提供必需參數(shù),在MIS系統(tǒng)中的客戶信息、網(wǎng)點信息等等;
          二、業(yè)務(wù)單據(jù),為實現(xiàn)企業(yè)信息流、數(shù)據(jù)流、資金流的流轉(zhuǎn)與控制提供業(yè)務(wù)數(shù)據(jù)支持,在快遞企業(yè)中的運(yùn)單就是一個典型業(yè)務(wù)單據(jù)。

          簡單的說,基礎(chǔ)數(shù)據(jù)與具體業(yè)務(wù)關(guān),業(yè)務(wù)單據(jù)就是只管具體業(yè)務(wù)。    
          基礎(chǔ)數(shù)據(jù)的特點,1、涉及業(yè)務(wù)單據(jù)的引用問題,一旦引用就是不能刪除;2、為了方便數(shù)據(jù)歸類,使用編碼進(jìn)行分類數(shù),如在財務(wù)系統(tǒng)中的科目;3、為了增強(qiáng)基礎(chǔ)數(shù)據(jù)的可讀性,我們需要增加一個名稱屬性,如果名稱太長了,我們可以考慮增加一個檢查或者備注;
         業(yè)務(wù)數(shù)據(jù)呢,現(xiàn)實業(yè)務(wù)中所有單據(jù)都通過編碼進(jìn)行區(qū)分,比如發(fā)票,業(yè)務(wù)發(fā)生后要記錄業(yè)務(wù)日期及記賬日期,當(dāng)業(yè)務(wù)記錄錯誤時,我們要保證系統(tǒng)業(yè)務(wù)的原始記錄,不能對系統(tǒng)原始數(shù)據(jù)直接更改(審計叫做業(yè)務(wù)數(shù)據(jù)的靜止性),需要進(jìn)行紅沖,然后然后寫入新的業(yè)務(wù)數(shù)據(jù),新的業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)編號、業(yè)務(wù)日期無需改變,記賬則要記錄到當(dāng)前時間,如果發(fā)生多次紅沖,如何處理呢,我們可以考慮增加一個有效版本控制。
         再看看,是不是還少了主鍵?還有一種場景是不是沒有考慮到,同一個單據(jù)或者基礎(chǔ)數(shù)據(jù)被兩個人同時編輯是不是會事務(wù)并發(fā)的問題?一個單據(jù)是否對應(yīng)多個明細(xì),如果進(jìn)行處理?試著對問題的回答,對模型進(jìn)一步總結(jié)形成以下結(jié)果。
    如何通過基類簡化開發(fā)工作,請見構(gòu)建基于Hibernate的基類實體(2)
    (第一次寫博,歡迎大家指點,如有錯誤謝絕辱罵)。
    package com.kds.kuaijian.framework.entity;

    import java.io.Serializable;
    import javax.persistence.*;


    /**
     * @generated
     * 實體基類,用于將來擴(kuò)展
     
    */
    @MappedSuperclass
    public abstract class CoreBase implements Serializable {

        
    /**
         *
         
    */
        
    private static final long serialVersionUID = 3086983746058217854L;
        
    /**
         * @generated
         * 主鍵,禁止為空,禁止更改
         
    */
        @Column(length 
    = 44,nullable = false,updatable = false)
        @Id
        
    private String id;

        
    /**
         * @generated
         
    */
        
    public String getId() {
            
    return this.id;
        }

        
    /**
         * @generated
         
    */
        
    public void setId(String value) {
            
    this.id = value;
        }
        
        
        
    /**
         * 別名
         * 
    @return 
         
    */
        
    public abstract String getAlias();
        
    }


    package com.kds.kuaijian.framework.entity;

    import java.util.Date;

    import javax.persistence.*;

    /**
     * @generated
     * 業(yè)務(wù)對象基類,增加創(chuàng)建日期、更新時間、版本號,用于處理事務(wù)并發(fā)
     
    */
    @MappedSuperclass
    public abstract class ObjectBase extends CoreBase {

        
    /**
         *
         
    */
        
    private static final long serialVersionUID = -3493844437392704456L;
        
        
    /**
         * @generated創(chuàng)建時間
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當(dāng)前時間寫入  
        private Date  createTime;
        
    /**
         * @generated更新時間
         
    */
        @Column(nullable 
    = false)
        @Temporal(TemporalType.TIMESTAMP)
        
    private Date lastUpdateTime;
        
    /**
         * 版本號
         
    */
        @Column(nullable 
    = false)
        
    private int version;

        
    /**
         * 
    @return the version
         
    */
        
    public int getVersion() {
            
    return version;
        }

        
    /**
         * 
    @param version the version to set
         
    */
        
    public void setVersion(int version) {
            
    this.version = version;
        }

        
    /**
         * 
    @return the createTime
         
    */
        
    public Date getCreateTime() {
            
    return createTime;
        }

        
    /**
         * 
    @param createTime the createTime to set
         
    */
        
    public void setCreateTime(Date createTime) {
            
    this.createTime = createTime;
        }

        
    /**
         * 
    @return the lastUpdateTime
         
    */
        
    public Date getLastUpdateTime() {
            
    return lastUpdateTime;
        }

        
    /**
         * 
    @param lastUpdateTime the lastUpdateTime to set
         
    */
        
    public void setLastUpdateTime(Date lastUpdateTime) {
            
    this.lastUpdateTime = lastUpdateTime;
        }
    }


    package com.kds.kuaijian.framework.entity;

    import java.util.Date;
    import javax.persistence.*;

    /**
     * 業(yè)務(wù)單據(jù)基類
     
    */
    @MappedSuperclass
    public abstract class BillBase extends ObjectBase {

        
    private static final long serialVersionUID = -8711722606843400608L;
        
    /**
         * @generated編碼
         
    */
        @Column(length 
    = 100, nullable = false, updatable = false)
        
    private String number;
        
    /**
         * @generated描述
         
    */
        @Column(length 
    = 200)
        
    private java.lang.String description;

        
    /**
         * 業(yè)務(wù)日期
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當(dāng)前時間寫入
        private Date bizDate;
        
    /**
         * 記賬日期
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當(dāng)前時間寫入
        private Date acctDate;
        
        
    /**
         * 是否為有效版本
         
    */
        @Column(nullable 
    = false)
        
    private boolean effectionVerion;
        
        
    /**
         * 是否為紅單
         
    */
        @Column(nullable 
    = false)
        
    private boolean redBill;
        

        
    /**
         * @generated
         
    */
        
    public java.lang.String getDescription() {
            
    return this.description;
        }

        
    /**
         * @generated
         
    */
        
    public void setDescription(java.lang.String value) {
            
    this.description = value;
        }

        
    /**
         * 
    @return the number
         
    */
        
    public String getNumber() {
            
    return number;
        }

        
    /**
         * 
    @param number the number to set
         
    */
        
    public void setNumber(String number) {
            
    this.number = number;
        }

       
        
    /**
         * 
    @return the bizDate
         
    */
        
    public Date getBizDate() {
            
    return bizDate;
        }

        
    /**
         * 
    @param bizDate the bizDate to set
         
    */
        
    public void setBizDate(Date bizDate) {
            
    this.bizDate = bizDate;
        }

        
    /**
         * 
    @return the acctDate
         
    */
        
    public Date getAcctDate() {
            
    return acctDate;
        }

        
    /**
         * 
    @param acctDate the acctDate to set
         
    */
        
    public void setAcctDate(Date acctDate) {
            
    this.acctDate = acctDate;
        }

        
    /**
         * 
    @return the effectionVerion
         
    */
        
    public boolean isEffectionVerion() {
            
    return effectionVerion;
        }

        
    /**
         * 
    @param effectionVerion the effectionVerion to set
         
    */
        
    public void setEffectionVerion(boolean effectionVerion) {
            
    this.effectionVerion = effectionVerion;
        }

        
    /**
         * 
    @return the redBill
         
    */
        
    public boolean isRedBill() {
            
    return redBill;
        }

        
    /**
         * 
    @param redBill the redBill to set
         
    */
        
    public void setRedBill(boolean redBill) {
            
    this.redBill = redBill;
        }
    }


    package com.kds.kuaijian.framework.entity;

    import javax.persistence.*;

    /**
     * 基礎(chǔ)數(shù)據(jù)基類
     
    */
    @MappedSuperclass
    public abstract class BaseData extends ObjectBase {

        
    private static final long serialVersionUID = -8711722606843400608L;
        
    /**
         * @generated編碼
         
    */
        @Column(length 
    = 100, nullable = false ,updatable = false)
        
    private String number;
        
        
    /**
         * @generated名稱
         
    */
        @Column(length 
    = 200, nullable = false,updatable = false)
        
    private java.lang.String name;
        
        
    /**
         * @generated簡稱
         
    */
        @Column(length 
    = 200)
        
    private java.lang.String simpleName;
        
        
    /**
         * @generated描述
         
    */
        @Column(length 
    = 200)
        
    private java.lang.String description;
        
        
    /**
         * 是否刪除
         
    */
        @Column(nullable 
    = false)
        
    private boolean isDelete;

        
    /**
         * @generated
         
    */
        
    public java.lang.String getName() {
            
    return this.name;
        }

        
    /**
         * @generated
         
    */
        
    public void setName(java.lang.String value) {
            
    this.name = value;
        }

        
    /**
         * @generated
         
    */
        
    public java.lang.String getSimpleName() {
            
    return this.simpleName;
        }

        
    /**
         * @generated
         
    */
        
    public void setSimpleName(java.lang.String value) {
            
    this.simpleName = value;
        }

        
    /**
         * @generated
         
    */
        
    public java.lang.String getDescription() {
            
    return this.description;
        }

        
    /**
         * @generated
         
    */
        
    public void setDescription(java.lang.String value) {
            
    this.description = value;
        }

        
    /**
         * 
    @return the number
         
    */
        
    public String getNumber() {
            
    return number;
        }

        
    /**
         * 
    @param number the number to set
         
    */
        
    public void setNumber(String number) {
            
    this.number = number;
        }

        
    public boolean isDelete() {
            
    return isDelete;
        }

        
    public void setDelete(boolean isDelete) {
            
    this.isDelete = isDelete;
        }
    }
    posted on 2011-09-20 23:50 民工二代 閱讀(464) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一本久久A久久免费精品不卡| 一级片在线免费看| 亚洲产国偷V产偷V自拍色戒| 免费观看男人免费桶女人视频| 国产黄色免费网站| 久久精品国产亚洲av品善| 亚洲中文字幕久久精品无码APP | 亚洲欧美日韩中文无线码 | 91麻豆最新在线人成免费观看| 亚洲av无码专区在线观看下载| 亚洲午夜无码久久久久| 久草在视频免费福利| 国产免费MV大全视频网站| 亚洲 日韩经典 中文字幕| 浮力影院亚洲国产第一页| 免费影院未满十八勿进网站| 国产精品免费视频观看拍拍| 亚洲日本人成中文字幕| 亚洲熟女少妇一区二区| 免费网站看v片在线香蕉| 香港a毛片免费观看| 菠萝菠萝蜜在线免费视频| 亚洲性无码av在线| 啦啦啦www免费视频| 亚洲伊人久久综合影院| 性生交片免费无码看人| 国产免费AV片在线观看 | 久久免费动漫品精老司机 | 免费观看无遮挡www的视频| 一级全免费视频播放| 亚洲无码一区二区三区| 亚洲视频精品在线观看| 91麻豆精品国产自产在线观看亚洲 | 精品国产日韩亚洲一区| 在线视频免费观看www动漫| 99视频免费播放| 久青草视频97国内免费影视| 免费播放美女一级毛片| 亚洲中文字幕AV在天堂| 亚洲视频在线观看地址| 亚洲AV无码专区亚洲AV伊甸园|