package com.shenyue.controller;
import com.shenyue.bean.Customer;
import com.shenyue.utils.JpaUtils;
import org.junit.jupiter.api.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class JpaTest {
/*
測試jpa的保存
案例:保存一個客戶到數(shù)據(jù)庫中
jpa的操作步驟
1.加載配置文件創(chuàng)建工廠(實體管理類工廠)對象
2.通過實體管理類工廠獲取實體管理器
3.獲取事務(wù)對象璃搜,開啟事務(wù)
4.完成增刪改查操作
5.提交事務(wù)(回滾事務(wù))
6.釋放資源
* */
@Test
public void testSave(){
// //1.加載配置文件創(chuàng)建工廠(實體管理器工廠)對象
// EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
//// 2.通過實體類管理器工廠獲取實體管理器
// EntityManager em = factory.createEntityManager();
EntityManager em= JpaUtils.getEntityManager();
// 3.獲取事務(wù)對象剂公,開啟事務(wù)
EntityTransaction tx = em.getTransaction();
tx.begin();//開啟事務(wù)
// 4.完成增刪改查操作:保存一個客戶到數(shù)據(jù)庫中
Customer customer = new Customer();
customer.setCustName("SS1111");
customer.setCustIndustry("教育");
// 保存
em.persist(customer);//保持操作
// 5.提交操作
tx.commit();
// 6.釋放資源
em.close();
// factory.close();
}
/*
* 根據(jù)ID查詢用戶
* 使用find方法查詢:
* 1.查詢的對象就是當(dāng)前客戶對象本身
* 2.在調(diào)用find方法的時候展蒂,就會發(fā)送sql語句查詢數(shù)據(jù)庫
* */
@Test
public void testFind(){
//1.通過工具類獲取EntityManager
EntityManager em = JpaUtils.getEntityManager();
// 2.開啟事務(wù)
EntityTransaction tx = em.getTransaction();
tx.begin();
// 3.增刪改查---根據(jù)用戶ID查詢用戶
/*
* find:根據(jù)ID查詢數(shù)據(jù)
* class:查詢數(shù)據(jù)的結(jié)果需要包裝的實體類類型的字節(jié)碼
* id:查詢的主鍵的取值
* */
Customer customer = em.find(Customer.class, 1l);
System.out.println(customer);
// 4.提交用戶
tx.commit();
// 5.釋放資源
em.close();
}
/*
* 根據(jù)ID查詢用戶
* getReference方法
* 1.獲取的對象是動態(tài)代理對象
* 2.調(diào)用getReference方法不會立即發(fā)送sql語句查詢數(shù)據(jù)庫
* *當(dāng)調(diào)用查詢結(jié)果對象的時候粉私,才會發(fā)送查詢的sql語句:什么時候用捎琐,什么時候發(fā)送sql語句查詢數(shù)據(jù)庫
*延遲加載(懶加載)
* *得到的是一個動態(tài)代理對象
* *什么時候用,什么時候才會查詢
* */
@Test
public void testReference(){
//1.通過工具類獲取EntityManager
EntityManager em = JpaUtils.getEntityManager();
// 2.開啟事務(wù)
EntityTransaction tx = em.getTransaction();
tx.begin();
// 3.增刪改查---根據(jù)用戶ID查詢用戶
/*
* find:根據(jù)ID查詢數(shù)據(jù)
* class:查詢數(shù)據(jù)的結(jié)果需要包裝的實體類類型的字節(jié)碼
* id:查詢的主鍵的取值
* */
Customer customer = em.getReference(Customer.class, 1l);
System.out.println(customer);
// 4.提交用戶
tx.commit();
// 5.釋放資源
em.close();
}
/*
* 刪除一個客戶的案例
* */
@Test
public void testRemove(){
//1.通過工具類獲取EntityManager
EntityManager em = JpaUtils.getEntityManager();
// 2.開啟事務(wù)
EntityTransaction tx = em.getTransaction();
tx.begin();
// 3.增刪改查---根據(jù)用戶ID查詢用戶
/*
* 根據(jù)id查詢用戶
* 調(diào)用remove方法完成刪除操作
* */
Customer customer = em.find(Customer.class, 1l);
em.remove(customer);
// 4.提交用戶
tx.commit();
// 5.釋放資源
em.close();
}
/*
* 更新用戶的操作
* merge(Object)
* */
@Test
public void testUpdata(){
//1.通過工具類獲取EntityManager
EntityManager em = JpaUtils.getEntityManager();
// 2.開啟事務(wù)
EntityTransaction tx = em.getTransaction();
tx.begin();
// 3.增刪改查---根據(jù)用戶ID查詢用戶
/*
* 根據(jù)id查詢用戶
* 更新客戶
* */
Customer customer = em.find(Customer.class, 2l);
customer.setCustIndustry("銀子");
em.merge(customer);
// 4.提交用戶
tx.commit();
// 5.釋放資源
em.close();
}
}
2019-10-16Jpa的增刪改查
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秧骑,“玉大人版确,你說我怎么就攤上這事『跽郏” “怎么了绒疗?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長骂澄。 經(jīng)常有香客問我吓蘑,道長,這世上最難降的妖魔是什么坟冲? 我笑而不...
- 正文 為了忘掉前任磨镶,我火速辦了婚禮,結(jié)果婚禮上健提,老公的妹妹穿的比我還像新娘琳猫。我一直安慰自己,他們只是感情好私痹,可當(dāng)我...
- 文/花漫 我一把揭開白布脐嫂。 她就那樣靜靜地躺著,像睡著了一般紊遵。 火紅的嫁衣襯著肌膚如雪账千。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼会放,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钉凌?” 一聲冷哼從身側(cè)響起咧最,我...
- 正文 年R本政府宣布,位于F島的核電站汁蝶,受9級特大地震影響渐扮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掖棉,卻給世界環(huán)境...
- 文/蒙蒙 一墓律、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啊片,春花似錦只锻、人聲如沸玖像。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽捐寥。三九已至笤昨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間握恳,已是汗流浹背瞒窒。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 注:1.數(shù)據(jù)庫的命令可以大寫锹雏,也可小寫巴比,一般為小寫的是可修改的內(nèi)容注:2.命令結(jié)束,記得加分號 一、數(shù)據(jù)庫的基本結(jié)...
- 首先先導(dǎo)入Utils包 即上一篇文章的“JDBCutils的編寫和基本使用” 完成后 開始編寫增刪該查 ...
- 首先將JDBCutils包導(dǎo)入 方法調(diào)用 增刪改查的編寫(都使用了prepareStatement解決SQL...
- 查詢數(shù)據(jù) 在記錄和集合上都有提供 get 方法 用于獲取單個記錄或集合中多個記錄的數(shù)據(jù)轻绞。 獲取一個記錄的數(shù)據(jù) co...