一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

hibernate入門---uuid.hex生成方式【依據(jù)機器標(biāo)識等自生】【第二天】

 印度阿三17 2019-05-30

在進行這個實例之前,先說之前出現(xiàn)的問題:

1、類前面一定要避免有空格,在這之前,從未想過類名前面有空格還能創(chuàng)建文件;在配置的時候,會出現(xiàn)如果沒有空格,就無法找到映射類。當(dāng)然,加了空格就可以,但請避免使用。

2、在配置過程中,請一定要根據(jù)需要創(chuàng)建數(shù)據(jù)庫表,并且這個表的主鍵是否考慮整型,默認(rèn)值,是否自增等。

3、運行過程中報錯,優(yōu)先看控制臺,判斷出錯問題,快速定位;如無法找到,再運用其他技巧。

下面:先將之前幾個實例用到的數(shù)據(jù)庫表及本次使用的表貼出來:

表1:

CREATE TABLE `customers` (
  `customerID` varchar(8) NOT NULL,
  `name` varchar(15) DEFAULT NULL,
  `phone` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`customerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表2:

CREATE TABLE `customers2` (
  `customerID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `phone` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`customerID`)
) ENGINE=InnoDB AUTO_INCREMENT=1015 DEFAULT CHARSET=utf8;

?

表3:

CREATE TABLE `customers3` (
  `customerID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `phone` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`customerID`)
) ENGINE=InnoDB AUTO_INCREMENT=1015 DEFAULT CHARSET=utf8;

?

表4:(略,Oracle數(shù)據(jù)庫測試)

表5:

CREATE TABLE `customers5` (
  `customerID` varchar(50) NOT NULL,
  `name` varchar(15) DEFAULT NULL,
  `phone` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`customerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表5示例 uuid.hex生成方式【依據(jù)機器標(biāo)識等自生】

一、Customer.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www./dtd/hibernate-mapping-3.0.dtd">


<hibernate-mapping package="bean" auto-import="false">
   <!-- POJO類映射表及某表的關(guān)系-->
   <class name="bean.Customer5" table="customers5" catalog="test">
       <id name="customerID" type="java.lang.String">
           <column name="customerID"/>
           <generator class="uuid.hex"></generator>
       </id>
       <!-- 映射表中name字段 -->
       <property name="name" type="java.lang.String">
          <column name="name" length="40"/>
       </property>
       <!-- 映射表中phone字段 -->
       <property name="phone" type="java.lang.String">
          <column name="phone" length="16"/>
       </property>  
   </class>
</hibernate-mapping>

二、hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www./dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 配置文件標(biāo)簽順序property*,mapping*,(class-cache|collection-cache),event,listener* -->
    <session-factory>
      <!-- 設(shè)置訪問mysql數(shù)據(jù)庫的驅(qū)動描述 -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <!-- 設(shè)置數(shù)據(jù)庫的url -->
      <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>
      <!-- 指定登錄數(shù)據(jù)庫用戶賬戶 -->
      <property name="connection.username">root</property>
      <!-- 指定登錄數(shù)據(jù)庫用戶密碼 -->
      <property name="connection.password">123456</property>
      
      <!-- 設(shè)置訪問數(shù)據(jù)庫的方言,提高數(shù)據(jù)庫訪問性能 -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <!-- 設(shè)置ddl -->
      <!-- <property name="hbm2ddl.auto">auto</property> -->
       <!-- 配置控制臺視圖,顯示查詢內(nèi)容 -->
       <property name="show_sql">true</property>
       <!-- 下面是多表映射 -->
      <!-- 指出映射文件 -->
      <mapping resource="resource/Customer.hbm.xml"/>
      <!-- 映射文件 -->
      <mapping resource="resource/Customer2.hbm.xml"/>
      <!-- 映射文件 -->
      <mapping resource="resource/Customer3.hbm.xml"/>
      <!-- 映射文件 -->
      <mapping resource="resource/Customer5.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

三、Customer5.java

package bean;

//驗證uuid.hex生成主鍵方式的映射類,數(shù)據(jù)庫對應(yīng)表customers2
public class Customer5 {
    private String customerID;
    private String name,phone;
    
    public String  getCustomerID() {
        return customerID;
    }

    public void setCustomerID(String  customerID) {
        this.customerID = customerID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

四、HibernateSessionFactory.java

package hibernate.factory;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class HibernateSessionFactory {
    private static String configfile = "resource/hibernate.cfg.xml";
    /**ThreadLocal是一個本地線程**/
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private static Configuration config;
    private static SessionFactory sessionFactory;
    /**讀取配置文件,創(chuàng)建一個工廠會話,這段代碼為靜態(tài)塊,編譯后已經(jīng)運行**/
    static{
        try {
            config = new Configuration().configure(configfile);
            sessionFactory = config.buildSessionFactory();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    /**通過會話工廠打開會話,就可以訪問數(shù)據(jù)庫了**/
    public static Session getSession(){
        Session session = (Session)threadLocal.get();
        if (session==null||!session.isOpen()) {
            if (sessionFactory==null) {
                rebuildSessionFactory();
            }
            session = (sessionFactory!=null)?sessionFactory.openSession():null;
        }
        return session;
    }
    /**重新創(chuàng)建一個會話工廠**/
    public static void rebuildSessionFactory() {
        try {
            config.configure(configfile);
            sessionFactory = config.buildSessionFactory();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    /**關(guān)閉與數(shù)據(jù)庫的會話**/
    public static void closeSession() {
        Session session = (Session)threadLocal.get();
        threadLocal.set(null);
        if (session!=null) {
            session.close();
        }
    }
}

五、Customer5Demo.java

package bean;

import java.util.List;




import hibernate.factory.HibernateSessionFactory;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;


//用于測試increment主鍵生成方式,增加記錄,不建議使用,他是實例自增,多實例訪問時,會重復(fù)主鍵,出問題
//由于是增加數(shù)據(jù),所以不需要寫Query,只需要new表,增加數(shù)據(jù)即可
public class Customer5Demo {
    Session session = HibernateSessionFactory.getSession();
    Transaction tran = session.beginTransaction();
    public static void main(String[] args) {
        
        //測試increment主鍵生成
        Customer5Demo demo = new Customer5Demo();
        Customer5 customer5 = new Customer5();
        demo.saveCustomer5IDByIdentity(customer5, "華山", "580");
        //測試查詢結(jié)果
        List list = demo.queryAllCustomer5();
        for (int i = 0; i < list.size(); i  ) {
            Customer5 customer  = (Customer5)list.get(i);
            System.out.println(customer.getCustomerID() customer.getName() customer.getPhone());
        }
        HibernateSessionFactory.closeSession();
        
    }
    
    //下面是封裝保存
    public void saveCustomer5IDByIdentity(Customer5 customer5,String name,String phone) {
        customer5.setName(name);
        customer5.setPhone(phone);
        session.save(customer5);
        //一定一定要記得提交事務(wù)
        tran.commit();
    }
    //下面是封裝查詢
    @SuppressWarnings("rawtypes")
    public List queryAllCustomer5(){
        /**由會話工廠類創(chuàng)建一個會話Session對象**/
        Session session = HibernateSessionFactory.getSession();
        /**由會話session對象創(chuàng)建一個查詢對象**/
        Query query = session.createQuery("from bean.Customer5");
        List list = query.list();
        HibernateSessionFactory.closeSession();
        return list;
    }
}

?

來源:http://www./content-4-218801.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    天海翼精品久久中文字幕| 亚洲中文字幕乱码亚洲| 五月天丁香婷婷狠狠爱| 亚洲精品中文字幕熟女| 日本人妻的诱惑在线观看| 成人国产一区二区三区精品麻豆 | 欧美日韩精品综合一区| 亚洲深夜精品福利一区| 久草国产精品一区二区| 黄色国产精品一区二区三区| 国产一区二区三区色噜噜| 国产三级黄片在线免费看| 亚洲妇女黄色三级视频| 亚洲乱妇熟女爽的高潮片| 色婷婷人妻av毛片一区二区三区| 欧美又大又黄刺激视频| 久一视频这里只有精品| 天堂网中文字幕在线视频| 国产高清在线不卡一区| 国产一区二区三区成人精品| 欧美日韩久久精品一区二区| 黄色污污在线免费观看| 免费在线观看欧美喷水黄片 | 国产一区二区三区四区中文| 欧美一级特黄特色大色大片| 中文字幕日韩欧美亚洲午夜| 国产一区国产二区在线视频| 国产av天堂一区二区三区粉嫩| 亚洲免费黄色高清在线观看| 很黄很污在线免费观看| 爱在午夜降临前在线观看| 激情内射日本一区二区三区| 99久久成人精品国产免费| 91偷拍裸体一区二区三区| 国产精品免费自拍视频| 亚洲清纯一区二区三区| 婷婷九月在线中文字幕| 国产欧美日本在线播放| 麻豆果冻传媒一二三区| 婷婷伊人综合中文字幕| 日韩国产亚洲欧美另类|