1. 程式人生 > >hibernate框架環境搭建與使用

hibernate框架環境搭建與使用

文章出處:https://www.cnblogs.com/hq233/p/6497985.html

搭建環境

一、新建一個專案 , 導包   一個是hibernate的jar包,一個是jdbc的jar包

hibernate的jar包

這些jar包全部匯入

二、配置Hibernate。

1.建立hibernate.cfg.xml檔案, 包所在的資料夾的project裡去搜索cfg.xml複製並修改

 

 

2.配置hibernate.cfg.xml檔案

複製程式碼

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 資料庫方言 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 引用jdbc包 -->
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/myzy?characterEncoding=GBK</property> <!-- 資料庫連結 -->
        <property name="show_sql">true</property> <!-- true 執行完在控制檯列印SQL語句 -->
            <!-- 表對映載入  -->
        <mapping resource="com/itnba/maya/model/Fruit.hbm.xml"/>
        
    </session-factory>
</hibernate-configuration>

複製程式碼

 

 

 3.每個配置項的值可以從project/etc/hibernate.properties中搜索

三、準備資料庫

四、準備實體(建議使用:引用型別。建議類名屬性名與列名一致)

複製程式碼

package com.itnba.maya.model;

public class Fruit {
    public String getIds() {
        return ids;
    }
    public void setIds(String ids) {
        this.ids = ids;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public Integer getNumbers() {
        return numbers;
    }
    public void setNumbers(Integer numbers) {
        this.numbers = numbers;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
    private String ids;
    private String name;
    private Double price;
    private String source;
    private Integer numbers;
    private String image;

}

複製程式碼

五、準備對映檔案 實體類名.hbm.xml 例:Fruit.hbm.xml

1.建立:實體類名.hbm.xml檔案。包所在的資料夾的project裡去搜索hbm.xml複製並修改

要跟實體類放一個包裡

2.配置實體類名.hbm.xml檔案

複製程式碼

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false" package="com.itnba.maya.model">    <!-- 匯入包 -->

    <class name="Fruit" table="Fruit"> <!-- 表名 -->
        <id name="ids">    <!-- 主鍵 -->                        
            <generator class="assigned"/><!-- 如果主鍵是自增長改為class="native" -->
        </id>
        <!-- 對應的各個欄位名 -->
        <property name="name"/>
        <property name="price"/>
        <property name="source"/> 
        <property name="numbers"/>
        <property name="image"/>
    
    </class>   
</hibernate-mapping>

複製程式碼

 六、寫程式碼

說明:這裡的session不是web中的session。
web中的session代表的是客戶端與web伺服器之間的會話。
這裡的session指的是程式與資料庫之前的會話,它是由hibernate進行管理的。

新增

複製程式碼

package com.itnba.maya.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.itnba.maya.model.Fruit;

public class AA {

    public static void main(String[] args) {
        //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫
        Configuration config=new Configuration().configure();
        //根據配置,生成session工廠
        SessionFactory factory= config.buildSessionFactory();
        //用工廠生成session
        Session session =factory.openSession();
        //新增
        //1.造物件
                Fruit data = new Fruit();
                data.setIds("s002");
                data.setName("芒果");
                data.setSource("博山");
                data.setPrice(10.0);
                data.setNumbers(200);
                data.setImage("無");

        //2.用session.save()儲存到資料庫了
                try{
                    session.beginTransaction();
                    session.save(data);
                    session.getTransaction().commit();
                }
                catch(Exception ex){
                    session.getTransaction().rollback();
                }
                
        session.close();
    }

}

複製程式碼

 

查詢

複製程式碼

package com.itnba.maya.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.itnba.maya.model.Fruit;

public class AA {

    public static void main(String[] args) {
        //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫
        Configuration config=new Configuration().configure();
        //根據配置,生成session工廠
        SessionFactory factory= config.buildSessionFactory();
        //用工廠生成session
        Session session =factory.openSession();         
        //查詢
                //查單條資料
                Fruit data=session.get(Fruit.class, "k001");
                System.out.println(data.getName()+data.getPrice()+data.getNumbers());
                
                //查詢所有資料
                List<Fruit> list = session.createQuery("from Fruit").getResultList();
                for(Fruit a:list){
                    System.out.println(a.getName()+a.getPrice()+a.getNumbers());
                }
        session.close();
    }

}

複製程式碼

控制檯顯示

刪除

複製程式碼

package com.itnba.maya.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.itnba.maya.model.Fruit;

public class AA {

    public static void main(String[] args) {
        //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫
        Configuration config=new Configuration().configure();
        //根據配置,生成session工廠
        SessionFactory factory= config.buildSessionFactory();
        //用工廠生成session
        Session session =factory.openSession();                
        //刪除
                //先查出
                Fruit data = session.load(Fruit.class,"k002");//get和load都可以查
                if(data!=null){
                    session.beginTransaction();
                    //刪除提交資料庫
                    session.delete(data);
                    session.getTransaction().commit();
                }
        session.close();
    }

}

複製程式碼

修改

複製程式碼

package com.itnba.maya.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.itnba.maya.model.Fruit;

public class AA {

    public static void main(String[] args) {
        //讀取hibernate.cfg.xml的配置,載入Hiberna的類庫
        Configuration config=new Configuration().configure();
        //根據配置,生成session工廠
        SessionFactory factory= config.buildSessionFactory();
        //用工廠生成session
        Session session =factory.openSession();
        //修改
                //1.查
                Fruit data = session.load(Fruit.class,"s002");
                
                if(data != null){
                    session.beginTransaction();
                    //2.改
                    data.setName("哈密瓜");
                    data.setPrice(11.1);
                    data.setNumbers(99);
                    //3.提交
                    session.update(data);
                    session.getTransaction().commit();
                }
                
        session.close();
    }

}

複製程式碼