今天是2018年9月17日
在浪費了很多時間之后……又回過頭來寫
Hibernate的基礎(chǔ)內(nèi)容,加上今天學(xué)校的課很多,所以只能用了一些課堂的時間來寫一下之前的內(nèi)容。
整個框架的搭建
搭建一個Hibernate框架的開發(fā)環(huán)境在上一篇已經(jīng)說過了,其中包括:
1.創(chuàng)建
*.hbm.xml文件描述有關(guān)連接數(shù)據(jù)庫的底層內(nèi)容
connection.username:數(shù)據(jù)庫用戶名
connection.password:數(shù)據(jù)庫密碼
connection.diriver_class:數(shù)據(jù)庫的驅(qū)動(對應(yīng)jdbc中的映射方式獲取類驅(qū)動)
connection.url:描述數(shù)據(jù)庫的主機號端口號以及庫名稱,其中localhost:3306可以簡寫成單斜杠/
dialect:數(shù)據(jù)庫方言,我注意到在org.hibernate.dialect.*中很多各種版本的數(shù)據(jù)庫方言,但事實上目前為止我的使用中都只允許使用MySQL5InnoDBDialect這個類文件
hibernate.show_sql:數(shù)據(jù)庫語句的顯示信息,我們通常是指為True以在控制臺輸出Hibernate框架為我們生成的sql語句。
hibernate.format_sql:與上者相似,設(shè)置為True后可以使控制臺輸出的內(nèi)容具有規(guī)定的格式。
hbm2ddl.auto:該屬性常用的有create,update兩種,對應(yīng)每一次執(zhí)行時對表的修改操作,前者會刪除已有的表重新創(chuàng)建,后者在已有的基礎(chǔ)上增加新的內(nèi)容。(其中也包括了列)
2.編寫實體類,與
javaBeans的基本思想無異,不做過多的贅述
3.創(chuàng)建
*.cfg.xml文件完成實體類的映射,此處也是對于Hibernate秒描述中“映射”二字的詮釋。需要注意的是,在生成了這個文件之后,需要在*.hbm.xml文件中添加對應(yīng)的映射標(biāo)簽
<mapping resource="Students.hbm.xml"/>
4.編寫測試類用于測試
......導(dǎo)入相關(guān)的包
public class JunitTest {
//預(yù)先定義需要使用的類對象
SessionFactory sessionFactory=null;
Session session=null;
Transaction transaction=null;
@Before
public void init() {
//1.生成配置文件
Configuration config=new Configuration().configure();
//注冊服務(wù)
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//創(chuàng)建會話工廠
sessionFactory=config.buildSessionFactory(serviceRegistry);
//開啟會話
session=sessionFactory.openSession();
//開啟事務(wù)
transaction=session.beginTransaction();
}
@Test
public void test() {
iStudents s=new Students("0001","小明","男",new Date());
session.save(s);
}
}
//關(guān)閉連接
@After
public void destory() {
transaction.commit();
session.close();
sessionFactory.close();
}
}
5.這樣就完成了一個基本的使用
Hibernate框架對表進行操作了。然而如果對數(shù)據(jù)庫不能進行基本的增刪改查,似乎并不能解決什么實際問題。
增刪改查操作
之前已經(jīng)寫過增刪改查主要使用的是save(),delete(),update(),get()/load()方法,這里需要將的是查,也就是get()/load()
之前在視頻中老師只是講解了一個查詢單條記錄的操作方法,而我們往往要查詢更多的記錄,因此我們需要使用到Hql來完成指定的查找。
String hql="from Students";
List<Students> students=session.createQuery(hql).list();
for (Students s : students) {
System.out.println(s.toString());
}
如上就使用hql完成了多記錄查詢,因為我重寫了Students.toString()這個方法,可以看到如下圖運行結(jié)果。

結(jié)果