1. 程式人生 > >IDEA 手動建立 Hibernate 操作

IDEA 手動建立 Hibernate 操作

  以Hibernate3.6的版本為例

一、檔案 ---> 專案結構--->模組 --->新增模組(點綠色的+)--->java模組 --->下一步

專案下要建立 config目錄(標記為源根 配置檔案) 和  lib目錄(jar包)


圖中圈的是必要的  其餘看需求使用 



以上jar包在hibernate官方文件的lib目錄下(步驟如下 紅框圈出的)









三、開啟專案結構點開依賴  點綠色“+  找到你專案的位置 將下面的lib目錄選中點選“確定 

”“應用



四、在config目錄下建立 hibernate.cfg.xml中配置檔案

<?xml version="1.0" encoding="UTF-8" ?>
<!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>//資料庫連線
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/salary</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
<property name="hibernate.jdbc.batch_size">20</property> //批處理操作 <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <mapping resource="com/oracle/bean/T_salary.hbm.xml"></mapping> </session-factory> </hibernate-configuration>

五、在你的實體類下面 建一個與你資料庫同名的XML檔案




<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.oracle.bean">
    //對映(當name 與 column 相同時 column 可省略)
    <class name="Salary" table="t_salary">
        <id name="workcode" column="workcode"></id>
        <property name="uname" column="uname"></property>
        <property name="dept" column="dept"></property>
        <property name="base_salary" column="base_salary"></property>
        <property name="extract" column="extract"></property>
        <property name="leav" column="leav"></property>
        <property name="sick" column="sick"></property>
        <property name="social" column="social"></property>
    </class>
</hibernate-mapping>

六、實現增刪查改 批量操作  分頁

1、實現新增

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryCreate {
    public static void main(String[] args) {

        //載入核心配置檔案
        Configuration cfg=new Configuration();
        //解釋配置檔案
        cfg.configure();
        //獲取連線工廠 sessionFactory
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從工廠中獲取session
        Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
        //持久化操作
        Salary salary=new Salary();
        salary.setWorkcode(22l);
        salary.setUname("哈哈");
        salary.setDept("編輯部");
        salary.setBase_salary(5000d);
        salary.setExtract(300d);
        salary.setLeav(0d);
        salary.setSick(100d);
        salary.setSocial(200d);
        session.save(salary);
        //提交事務
        session.getTransaction().commit();

        //關閉session
        session.close();
        //關閉sessionFactor
        sessionFactory.close();
    }

}


2、實現修改

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryUpdate {
    public static void main(String[] args) {
        //解析配置檔案
        Configuration cfg=new Configuration();
        cfg.configure();
        //建立session工廠
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從session工廠中獲取session
        Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
        //持久化操作
        Salary salary= (Salary) session.get(Salary.class,22l);
        salary.setBase_salary(10000d);
        salary.setExtract(5000d);
        salary.setDept("業務部");
        session.update(salary);
        //提交事務
        session.getTransaction().commit();
        //關閉session
        session.close();
        //關閉session工廠
        sessionFactory.close();

    }
}

3、實現刪除

package com.oracle.core;


import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryRemove {
    public static void main(String[] args) {
        //解析配置檔案
        Configuration cfg=new Configuration();
        cfg.configure();
        //建立session工廠
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從session 工廠中獲取session
        Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
        //持久化操作
        //1.先查詢 再刪除
        Salary salary1= (Salary) session.get(Salary.class,22l);
        session.delete(salary1);
        //2.定義一個有主鍵的物件 去刪除
        Salary salary2=new Salary();
        salary2.setWorkcode(21l);
        session.delete(salary2);
        //提交事務
        session.getTransaction().commit();
        //關閉session
        session.close();
        //關閉session工廠
}
}

4、實現查詢

package com.oracle.core;


import com.oracle.bean.Salary;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import java.util.List;

public class SalaryQuery {
    public static void main(String[] args) {
        //解析配置檔案
        Configuration cfg=new Configuration();
        cfg.configure();
        //建立session工廠
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從session工廠中獲取session
         Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
        //持久化操作
        //1、查詢單個
        Query query=session.createQuery("select s.uname from Salary s");
        List<Object> list=query.list();
        for (Object s:list){
            System.out.println(s);
        }


        //2、查詢多列
        query=session.createQuery("select s.uname,s.dept,s.leav from Salary s");
        List<Object[]> list2=query.list();
        for (Object[] s:list2){
            for (Object ss:s) {
                System.out.println(ss);
            }
        }
        //3、查詢所有
         query=session.createQuery("select s from Salary s");
        List<Salary> list3=query.list();
        for (Salary s:list3){

                System.out.println(s);

        }


        //提交事務
        session.getTransaction().commit();
        //關閉session
        session.close();
        //關閉session工廠
        sessionFactory.close();
    }
}

5、實現分頁

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import java.util.List;

public class SalaryPage {
    public static void main(String[] args) {
        //解析配置檔案
        Configuration cfg=new Configuration();
        cfg.configure();
        //建立session工廠
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從session工廠獲取session
        Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
        //持久化操作
        Query query=session.createQuery("from Salary");
        query.setFirstResult(0);//可變
        query.setMaxResults(10);
        List<Salary> list = query.list();
        for (Salary salary:list){
            System.out.println(salary);
        }
        //提交事務
        session.getTransaction().commit();
        //關閉session
        session.close();
        //關閉session工廠
        sessionFactory.close();
    }
}
6、實現批量操作(往資料庫裡新增資料)
package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class SalaryBatch {
    public static void main(String[] args) {

        //解析配置檔案
        Configuration cfg=new Configuration();
        cfg.configure();
         //建立session工廠
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //從session工廠中獲取session
       Session session = sessionFactory.openSession();
        //開啟事務
        session.beginTransaction();
         //持久化操作
        for (int i=20;i<150;i++){
            Salary salary=new Salary();
            salary.setWorkcode((long)i);
            salary.setUname("喬治"+i);
            salary.setDept("軟體開發"+i);
            salary.setBase_salary(7000d);
            salary.setExtract(5000d);
            salary.setLeav(0d);
            salary.setSick(100d);
            salary.setSocial(500d);
            session.save(salary);
            if (1%20==0){
                session.flush();
                session.clear();
            }
        }

        //提交事務
        session.getTransaction().commit();
        //關閉session
        session.close();
         //關閉session工廠
        session.close();
    }
}