hibernate初體驗

基本步驟:

  1. 數據庫創建表(可選)
CREATE TABLE IF NOT EXISTS tb_employee (
	id int UNSIGNED auto_increment,
	firstName VARCHAR(32) NOT NULL DEFAULT'',
	lastName VARCHAR(32) NOT NULL DEFAULT'',
	PRIMARY KEY(id)
)ENGINE=InnoDb DEFAULT CHARSET=utf8;
  1. 創建一個普通java項目
  2. 創建一個lib目錄,導入jar包(要確保添加到build path中
    在這裏插入圖片描述
  3. 創建一個簡單類Employee
public class Employee {

    private int id;
    private String firstName,lastName;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
  1. 創建映射文件employee.hbm.xml,用於Java類和數據庫表進行映射
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <!--持久化類的映射文件-->
    <!--  指定類名和表名  -->
    <class name="com.hxm.domain.Employee" table="tb_employee">
        <id name="id">
            <!--id生成策略-->
            <generator class="native"></generator>
        </id>
        <property name="firstName" column="firstName"></property>
        <property name="lastName"></property>
    </class>
</hibernate-mapping>
  1. 創建hibernate配置文件hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC</property>
    <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123456</property>
    <!-- DB schema will be updated if needed -->
    <!--  根據需要創建數據庫表  -->
    <property name="hbm2ddl.auto">update</property>
    <!--  指定數據庫方言  -->
    <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <!-- 配置連接池 -->
    <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<!--    <property name="c3p0.acquire_increment">1</property>-->
<!--    <property name="c3p0.idle_test_period">300</property>-->
<!--    <property name="c3p0.max_size">20</property>-->
<!--    <property name="c3p0.max_statements">100</property>-->
<!--    <property name="c3p0.min_size">5</property>-->
<!--    <property name="c3p0.timeout">90</property>-->
<!--    <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>-->
<!--    <property name="c3p0.idleConnectionTestPeriod ">18000</property>-->
<!--    <property name="c3p0.maxIdleTime">25000</property>-->
<!--    <property name="c3p0.testConnectionOnCheckout">true</property>-->
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>

    <!--  映射文件  -->
    <mapping resource="employee.hbm.xml"/>
</session-factory>

  1. 編寫代碼測試

public class Main {
    public static void main(final String[] args) throws Exception {
        // 1.根據配置文件創建配置類
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");

        // 2.通過配置類構建會話工廠
        SessionFactory factory = configuration.buildSessionFactory();

        // 3.通過會話工廠產生會話
        Session session = factory.openSession();

        // 4.通過會話開啓事務
        Transaction transaction = session.beginTransaction();

        // 5.創建對象
        Employee employee = new Employee();
        employee.setId(101);
        employee.setFirstName("Max");
        employee.setLastName("Su");

        // 6.通過會話保存對象到數據庫
        session.persist(employee);

        // 7.提交事務
        transaction.commit();

        // 8.關閉會話
        session.close();

        System.out.println("successfully saved");
    }
}
  1. 測試結果
    在這裏插入圖片描述
存在的問題
  1. 數據庫連接url中少寫了冒號。。。。。。
  2. 數據庫連接url後未加參數,會提示時間錯誤的異常。。。
  3. 數據庫連接url後多參數連接符不能使用&要使用
&amp;
  1. 數據庫建表語句,表名和字段名加了引號報錯,要清楚所用數據庫對應版本的常用語法。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章