建立簡單hibernate專案步驟
(1)new -- javaproject--輸入專案名稱 (與web沒有關係,只與jdbc有關係的)
(2)新增資料庫。首先顯示, windows--show views--other--
選擇DB Browser
(3)可以看到顯示,右鍵空白處
(4)可以看到顯示,右鍵空白處new
如果是mysql:選擇MYSQL Connector/J
如果是oracle:選擇Oracle(Thin driver)
(5)彈出classname,點選finish。可以看到已經完成。
(6)右鍵資料庫,選擇對應的庫,表,右鍵--Hibernate reverse engineering--
(7)選擇包,選擇對應的選項--next
(8)選擇native--next
(9)先別急著點選finish,點選表--輸入 entity.Car。意思是entity包下建立Car類,然後選擇native--點選finish。
(10)生成下邊的,再建立一個sql包--new file--輸入名字:dosql.sql檔案。
(11)建立sql檔案後,輸入語句:select * from emp;在sql results中可以檢視。
在自動生成emp實體類,自動生成的Emp.hbm.xml 。這些是根據資料庫生成的java程式碼和配置檔案。接著來寫測試類
在自動生成
(12)建立HibernateTest類。
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import entity.Emp;
public class HibernateTest {
public static void main(String[] args) {
//Hibernate的配置類物件,用於建立SessionFactory.
Configuration conf = new Configuration().configure();
//會話(session)工廠, 用於建立Session的. 等價於jdbc的Connection
SessionFactory factory = conf.buildSessionFactory();
//開啟會話
Session session = factory.openSession();
//通過會話 curd操作.
//儲存一個物件,通過測試
saveEmpTest(session);
//修改物件,通過測試
//updateEmpTest(session);
//刪除一個,通過測試
//removeEmpTest(session);
//查詢一個物件,通過測試
queryEmpById(session, 7900);
//查詢列表
queryEmpList(session);
queryEmpListByDeptno(session, 10);
//會話完畢之後要關閉
session.close();
//關閉工廠
factory.close();
}
static void saveEmpTest(Session session){
Emp emp = new Emp();
emp.setEmpno(1); //由於hbm重配置的主鍵生成策略是native, 所以指定的工號無效..
emp.setEname("新建的名字");
session.beginTransaction(); //開啟事務
session.save(emp);
session.getTransaction().commit();//提交事務
}
static void updateEmpTest(Session session){
/*Empemp = new Emp();
emp.setEmpno(1);
//emp.setEname("DEF");
emp.setSal(1000.0);
session.update(emp);*/
//先查出物件(持久化狀態的).
Emp emp = (Emp)session.get(entity.Emp.class, 7938);//類名,後邊引數是寫編號,修改名字。
//修改物件屬性
emp.setEname("Sam");
session.beginTransaction(); //開啟事務
session.getTransaction().commit();//提交事務
}
//刪除表格,成功刪除
static void removeEmpTest(Session session){
Emp emp = new Emp();
emp.setEmpno(7938);
session.delete(emp);
session.beginTransaction(); //開啟事務
session.getTransaction().commit();//提交事務
}
static void queryEmpById(Session session , Integer empno){
Emp emp = null;
emp = (Emp)session.get(entity.Emp.class, empno);
//emp = (Emp)session.load(entity.Emp.class,empno);
//---get / load 有區別
System.out.println(emp);
}
//HQL查詢
static void queryEmpList(Session session){
Query query = session.createQuery("from Emp");
List<Emp> empList = query.list();
System.out.println(empList);
}
static void queryEmpListByDeptno(Session session, Integer deptno){
Query query = session.createQuery("from Emp where deptno = :deptno");
query.setParameter("deptno", deptno);
List<Emp> empList = query.list();
System.out.println(empList);
}
}
(13)執行程式,可以看到下邊打印出資料庫的資訊。
(14)一個簡單的hibernate程式建立成功了,接著就可以寫程式啦。
錯誤提示:原因是伺服器沒開。