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

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

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

    posts - 495,  comments - 11,  trackbacks - 0
      2011年9月27日

    > 引言
      在Jorm中,主鍵的生成策略主要有AUTO、UUID、GUID、FOREIGN、SEQUENCE、INCREMENT、IDENTITY、ASSIGNED,下面分別來講述這幾種策略的應用場景

    > GenerationType.AUTO
      Jorm的默認主鍵策略,自動增長型,自增步長為1,適用數據類型int,long,如:
      private int id // 默認策略就是AUTO,故可以不寫主鍵策略
      或
      @Id(GenerationType.AUTO) // 默認策略可以省去不寫的哦~
      private int id

    > GenerationType.INCREMENT
      顧名思義,增長型,適用數據類型int,long。自增步長為1
      1> 使用默認自增步長1,如:
         @Id(GenerationType.INCREMENT)
         @Column("item_id")
         private long id;
      2> 使用自定義步長,如:
         @Id(value = GenerationType.INCREMENT, incrementBy=3) // 這里自增步長為3,注意寫法
         private int id;

    > GenerationType.IDENTITY
      對于那些實現了自動增長的數據庫,可以使用IDENTITY,如MySQL,SQL Server,PostreSQL,前提是
      MySQL數據庫中建表語句定義了主鍵為:id(你的主鍵列名) int NOT NULL AUTO_INCREMENT 或
                                                                          
    id(你的主鍵列名) bigint NOT NULL AUTO_INCREMENT
      SQL Server數據庫中建表語句定義了主鍵為:id int identity(xx, xx) 如此類似
      PostreSQL數據庫中建表語句定義了主鍵為:id bigserial  或  id serial
      使用例子
      @Id(GenerationType.IDENTITY)
      @Column("id")
      private long sid;

    > GenerationType.UUID
      與數據庫無關的策略,適用數據類型:字符串類型,適用所有數據庫,長度須大于或等于32
      @Id(GenerationType.UUID)
      private String id;

    > GenerationType.GUID
      與UUID有點類似,不過這個id值是又數據庫來生成的,適用于數據庫MySQL、PostgreSQL、SQL Server、Oracle等
      @Id(GenerationType.GUID)
      private String id;

    > GenerationType.FOREIGN
      適用于一對一關系中引用了另一個對象的主鍵作為自己的主鍵的情形,如:
      @Id(GenerationType.FOREIGN)
      @Column("identity_number")
      private String identity;

    > GenerationType.SEQUENCE
      這個不用多說,應用于Oracle、H2、PostgreSQL等有sequence序列功能的數據庫

    > GenerationType.ASSIGNED
      用戶自定義生成,需要由程序員手工給主鍵主動賦值

     

    項目地址:http://javaclub.sourceforge.net/jorm.html
    下載地址:http://sourceforge.net/projects/javaclub/files/jorm/


    posted @ 2011-10-10 15:17 jadmin 閱讀(1491) | 評論 (3)編輯 收藏

    直接上代碼吧:

    > Demo one
    public void batch_op_one() {

        session = Jorm.getSession();
        JdbcBatcher batcher = session.createBatcher();
        batcher.addBatch("delete from t_id_auto");
        batcher.addBatch("delete from t_incre");
        batcher.addBatch("delete from t_user");
        batcher.execute();
       
        session.beginTransaction();
        long start;
        try {
            start = System.currentTimeMillis();
            String sql = "INSERT INTO t_user(sex,age,career,name,id) VALUES(?,?,?,?,?)";
            for (int i = 0; i < 100000; i++) {
                batcher.addBatch(sql, new Object[] {"男", Numbers.random(98), Strings.random(10), Strings.fixed(6), (i+1) });}
                String sqlx = "INSERT INTO t_id_auto(name, id) VALUES(?, ?)";
                for (int i = 0; i < 100000; i++) {
                    batcher.addBatch(sqlx, new Object[] {Strings.fixed(6), (i+1)});
                    if(i > 200) {
                        //Integer.parseInt("kkk");
                    }
                }
                batcher.execute();   
                System.out.println(System.currentTimeMillis() - start);
        } catch (Exception e) {
            session.rollback();
        } finally {
            session.endTransaction();
            session.close();
        }
    }

    > Demo two
    public void batch_op_two() {

        session = Jorm.getSession();
        session.beginTransaction();
        session.clean(User.class);
        JdbcBatcher batcher = session.createBatcher();
        batcher.setBatchSize(500);// 指定每批處理的記錄數
       
        User u;
        int times = 20 * 100;
        long start = System.currentTimeMillis();
        for(int i = 0; i < times; i++) {
         String sex = (i % 2 == 0 ? "男" : "女");
         u = new User(Strings.fixed(6), sex, Numbers.random(100), Strings.random(16));
         batcher.save(u);
        }
        batcher.execute();
        session.endTransaction();
        long cost = (System.currentTimeMillis() - start);
        System.out.println("Total:" + cost);
        System.out.println("Each:" + (float) cost / times);
        session.close();
    }

    項目地址:http://javaclub.sourceforge.net/jorm.html
    下載地址: http://sourceforge.net/projects/javaclub/files/jorm/

    posted @ 2011-10-09 20:09 jadmin 閱讀(1293) | 評論 (0)編輯 收藏
    關系數據庫不支持繼承,我們可以做如下的映射,這些映射都是犧牲關系模式的范式基礎的
    ?
    1, ?用一個表包含所有繼承層次的所有字段,然后標識列來標示是哪個類。這種映射方法最簡單,但是是違反規范化的,而且有些字段要強制為NULL值,無法保證關系數據模型的數據完整性,這種映射方式性能最高,最簡單。
    ?
    2, ?每個具體類一張表(意思就是父類不需要表),所有父屬性在具體類表中重復,這種映射如果要查詢父類要全部掃描子類表,而且一旦父類變化,這些字表要全部變化。
    ?
    3, ?每個類一張表,表里只包含所屬類的屬性,然后子類和父類共享外鍵,這種映射避免了第2種的可怕的修改,但是查詢的時候要執行連接。
    posted @ 2011-09-27 09:38 jadmin 閱讀(201) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: av无码免费一区二区三区| 狼群影院在线观看免费观看直播| 免费看片A级毛片免费看| 亚洲人成网站18禁止| 最近最新中文字幕完整版免费高清| 亚洲制服丝袜在线播放| 成人免费一区二区无码视频| 亚洲色丰满少妇高潮18p| 午夜成人免费视频| 看Aⅴ免费毛片手机播放| 亚洲精品99久久久久中文字幕| 国产裸体美女永久免费无遮挡| 亚洲情综合五月天| 91热久久免费精品99| 亚洲中文久久精品无码1| 午夜dj免费在线观看| 一区二区免费在线观看| 日本亚洲视频在线| aⅴ免费在线观看| 亚洲成AV人片高潮喷水| 亚洲Av无码乱码在线znlu| 最新国产乱人伦偷精品免费网站 | 8090在线观看免费观看| 亚洲乱码在线播放| 免费午夜爽爽爽WWW视频十八禁| 中文在线观看永久免费| 亚洲精品不卡视频| 国产a级特黄的片子视频免费| yellow视频免费在线观看| 久久精品国产亚洲av水果派| 成在人线AV无码免费| 两个人日本免费完整版在线观看1| 亚洲一卡2卡三卡4卡有限公司| 毛片高清视频在线看免费观看| 香蕉国产在线观看免费| 日产亚洲一区二区三区| 国产伦精品一区二区三区免费迷| a视频免费在线观看| 亚洲av无一区二区三区| 久久精品国产亚洲香蕉| 日本免费一本天堂在线|