1、Configuration

Configuration cfg = new Configuration();
cfg.configure();
2、sessionFactory

public class HibernateUtils {
private static final Configuration cfg;
private static final SessionFactory sessionFactory;
static {
cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
3、session

4、transaction

5、再議實(shí)體類的編寫規(guī)則
1、屬性是私有的,并且都有相應(yīng)的get和set方法。
2、(hibernate特有的)必須有一個(gè)屬性是作為一個(gè)實(shí)體的唯一值。
3、實(shí)體類屬性在hibernate里面建議不使用基本類型,而是建議使用基本類型的包裝類。
int->Integer
char->Character
其他的都是首字母大寫就OK了
之所以用包裝類的原因是:比如有學(xué)生參加考試,缺考可以直接用null值表示。
6、主鍵選擇策略

7、實(shí)體類操作
添加操作:
User user = new User();
user.setUsername("winney");
user.setPassword("1256");
user.setAddress("GZ");
session.save(user);
查詢操作:

修改操作:

刪除操作:

7、實(shí)體類狀態(tài)
1、瞬時(shí)態(tài)
實(shí)體沒(méi)有id值,與session沒(méi)有關(guān)系
2、持久態(tài)
實(shí)體有id值,且通過(guò)session查詢出來(lái)
3、托管態(tài)
有id值,但是和session沒(méi)有關(guān)系
saveOrUpdate()方法會(huì)根據(jù)實(shí)體對(duì)象的狀態(tài)來(lái)調(diào)用是添加還是更新。
實(shí)體類對(duì)象狀態(tài)是瞬時(shí)態(tài),方法做的是添加操作。
實(shí)體類對(duì)象狀態(tài)是托管態(tài),方法做的是更新操作。
實(shí)體類對(duì)象狀態(tài)是持久態(tài),方法做的是更新操作。
8、hibernate一級(jí)緩存


二級(jí)緩存已經(jīng)被redis替代了:
二級(jí)緩存默認(rèn)是不打開(kāi)的,要配置,緩存范圍是整個(gè)sessionFactory范圍。


8、事務(wù)操作的規(guī)范寫法

9、綁定本地線程session
1、首先配置核心配置文件
<property name="hibernate.current_session_context_class">thread</property>
2、重寫HibernateUtils類
添加getSession方法
public static Session getSession() {
return sessionFactory.getCurrentSession();
}
