<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年10月9日

    > 引言
      在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 閱讀(1492) | 評論 (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 閱讀(1294) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 亚洲人成在线播放网站岛国| 亚洲一区AV无码少妇电影☆| 亚洲黑人嫩小videos| 最新久久免费视频| 亚洲一区二区女搞男| 特级做A爰片毛片免费看无码| 中文亚洲成a人片在线观看| 色老头综合免费视频| 亚洲中文字幕无码专区| 国产成人高清精品免费观看| 国产综合亚洲专区在线| 9久热精品免费观看视频| 亚洲精品无码成人AAA片| 野花香在线视频免费观看大全| 亚洲日韩欧洲乱码AV夜夜摸| 国精产品一区一区三区免费视频 | 色吊丝性永久免费看码| 亚洲综合伊人久久综合| 久久九九全国免费| 亚洲色图.com| 在线观看成人免费视频| 美女被吸屁股免费网站| 亚洲伊人久久综合影院| 久久免费观看国产99精品| 亚洲同性男gay网站在线观看| 在线观看免费为成年视频| 黄色网址免费在线| 亚洲自偷自偷图片| 国产免费不卡视频| 精品亚洲成a人在线观看| 国产成人亚洲精品影院| 免费观看国产网址你懂的| 美女被吸屁股免费网站| 亚洲大尺度无码专区尤物| 丁香花免费高清视频完整版| 成人午夜影视全部免费看| 亚洲最大的成网4438| 国产精品美女自在线观看免费| 一本大道一卡二大卡三卡免费| 亚洲午夜精品久久久久久人妖| 免费看片A级毛片免费看|