IDEA 手動建立 Hibernate 操作
阿新 • • 發佈:2018-12-19
以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();
}
}