<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

    常用鏈接

    留言簿

    隨筆檔案

    友情鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    背景分析:
         在企業內部信息系統中,大部分的業務數據可以簡單的分成兩類:
          一、基礎數據,為業務處理提供必需參數,在MIS系統中的客戶信息、網點信息等等;
          二、業務單據,為實現企業信息流、數據流、資金流的流轉與控制提供業務數據支持,在快遞企業中的運單就是一個典型業務單據。

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

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


    /**
     * @generated
     * 實體基類,用于將來擴展
     
    */
    @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
     * 業務對象基類,增加創建日期、更新時間、版本號,用于處理事務并發
     
    */
    @MappedSuperclass
    public abstract class ObjectBase extends CoreBase {

        
    /**
         *
         
    */
        
    private static final long serialVersionUID = -3493844437392704456L;
        
        
    /**
         * @generated創建時間
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當前時間寫入  
        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.*;

    /**
     * 業務單據基類
     
    */
    @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;

        
    /**
         * 業務日期
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當前時間寫入
        private Date bizDate;
        
    /**
         * 記賬日期
         
    */
        @Column(nullable 
    = false, updatable = false)
        @Temporal(TemporalType.TIMESTAMP)
    //不用set,hibernate會自動把當前時間寫入
        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.*;

    /**
     * 基礎數據基類
     
    */
    @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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 99久久免费精品高清特色大片| fc2成年免费共享视频18| 99免费在线观看视频| 亚洲va中文字幕无码久久| 成人网站免费大全日韩国产| 亚洲日韩在线观看免费视频| 日日狠狠久久偷偷色综合免费| 亚洲av区一区二区三| 精品免费久久久久国产一区| 中文字幕亚洲日本岛国片| 你好老叔电影观看免费| 亚洲成a人片在线观看日本| 无码免费一区二区三区免费播放| 在线观看亚洲人成网站| 国色精品卡一卡2卡3卡4卡免费| 亚洲一级毛片在线播放| 女性自慰aⅴ片高清免费| 美女羞羞喷液视频免费| 情人伊人久久综合亚洲| 日韩亚洲国产高清免费视频| 亚洲无人区码一二三码区别图片| 免费观看国产精品| a色毛片免费视频| 亚洲精品美女久久久久| 免费涩涩在线视频网| 亚洲免费无码在线| 亚洲精品**中文毛片| 暖暖在线日本免费中文| 国产美女视频免费观看的网站| 亚洲成人动漫在线| 成人免费看片又大又黄| 丰满少妇作爱视频免费观看| 亚洲日韩图片专区第1页| 美女黄网站人色视频免费国产 | 亚洲一区二区三区免费在线观看 | 亚洲色欲色欲www在线丝| 麻豆成人久久精品二区三区免费| 亚洲а∨天堂久久精品9966| 亚洲午夜久久久影院伊人| 最近免费中文在线视频| 特级毛片全部免费播放a一级|