国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解

這篇具有很好參考價(jià)值的文章主要介紹了JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解

?文章來源地址http://www.zghlxwxcb.cn/news/detail-411645.html

??今日學(xué)習(xí)目標(biāo):

??JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解
?創(chuàng)作者:林在閃閃發(fā)光
?預(yù)計(jì)時(shí)間:30分鐘
??個(gè)人主頁:林在閃閃發(fā)光的個(gè)人主頁

???林在閃閃發(fā)光的個(gè)人社區(qū),歡迎你的加入:?林在閃閃發(fā)光的社區(qū)

目錄

一、JDBC事務(wù)

1.事務(wù)的概念

2.JDBC中事務(wù)的相關(guān)方法?

3.一個(gè)簡(jiǎn)單的示例

二、HIbernate中的事務(wù)

1.HIbernate中的事務(wù)管理

三、EJB事務(wù)?


當(dāng)你想要某種東西時(shí),整個(gè)宇宙會(huì)合力助你實(shí)現(xiàn)愿望

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 《牧羊少年奇幻之旅》

一、JDBC事務(wù)

1.事務(wù)的概念

事務(wù)(Transaction),字面理解,一般是指要做的或所做的事情。

在計(jì)算機(jī)術(shù)語中是指訪問并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)通常由??高級(jí)數(shù)據(jù)庫(kù)???操縱語言或編程語言(如SQL,C++或Java)書寫的??用戶程序??的執(zhí)行所引起,并用形如begin transactionend transaction語句(或??函數(shù)調(diào)用??)來界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。

上述解釋來自百度百科,如果你學(xué)過操作系統(tǒng),可以將事務(wù)理解成原語,事務(wù)中的每件不可分割的子任務(wù)可以視為一條指令

在我們今天要講的數(shù)據(jù)庫(kù)中的事務(wù),就可以理解為一條或一組SQL語句,這個(gè)事務(wù)成功的執(zhí)行的必要條件就是其中的SQL全部執(zhí)行成功,如果其中的任一SQL執(zhí)行失?。]有達(dá)到預(yù)期效果),則此次事務(wù)執(zhí)行失敗,所有的SQL都不會(huì)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)產(chǎn)生變更。

事務(wù)具有4個(gè)屬性:原子性、一致性、隔離性、持久性。這四個(gè)屬性通常稱為ACID特性。

  • 原子性(Atomicity):一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的操作要么都做,要么都不做;
  • 一致性(Consistency):事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的;
  • 隔離性(Isolation):一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾;
  • 持久性(Durability):持久性也稱永久性(Permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。

? 對(duì)于其中的隔離性,數(shù)據(jù)庫(kù)服務(wù)器有時(shí)會(huì)為了提供更好的處理并發(fā)能力,會(huì)犧牲一定的隔離性。這也是正確性和性能之間的對(duì)抗。如MySQL默認(rèn)的隔離級(jí)別為READ COMMITTED,即讀提交,可以讀取其他事務(wù)已經(jīng)提交的內(nèi)容,可以避免臟讀,但是無法避免??重復(fù)度和幻讀??。

2.JDBC中事務(wù)的相關(guān)方法?

下面我們來看下,當(dāng)使用JDBC操作數(shù)據(jù)庫(kù)時(shí),要如何使用事務(wù)。這里,我們要新介紹幾個(gè)Connection接口中的幾個(gè)方法,如下表所示:

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解

當(dāng)Connection自動(dòng)提交模式為true的時(shí)候,即默認(rèn)值,其所有SQL語句將作為單個(gè)事務(wù)執(zhí)行并提交,每次SQL執(zhí)行時(shí)會(huì)默認(rèn)提交,不需手動(dòng)觸發(fā);當(dāng)自動(dòng)提交模式為false時(shí),其SQL語句會(huì)分組為事務(wù)(commit與commit之間的SQL或commit與rollback之間的SQL),這些事務(wù)通過調(diào)用??commit??方法提交,或調(diào)用??rollback??方法來進(jìn)行回滾。

3.一個(gè)簡(jiǎn)單的示例

正常情況

public class TestTransaction1 {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try {
            con = JDBCUtils.getConnection();
            //關(guān)閉自動(dòng)提交 自動(dòng)會(huì)開啟事務(wù)
            con.setAutoCommit(false);//開啟事務(wù)
            // A 轉(zhuǎn) B 100元
            String sql1 = "update account set money=money-100 where name='A'";
            st = con.prepareStatement(sql1);
            st.executeUpdate();
            String sql2 = "update account set money=money+100 where name='B'";
            st = con.prepareStatement(sql2);
            st.executeUpdate();
            //業(yè)務(wù)完畢,提交事務(wù)
            con.commit();

            System.out.println("A 轉(zhuǎn) B 100元 成功!");
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                con.rollback();   //如果失敗就回滾事務(wù)
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } finally {
            JDBCUtils.release(con, st, rs);
        }
    }
}

異常情況

public class TestTransaction2 {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try {
            con = JDBCUtils.getConnection();
            //關(guān)閉自動(dòng)提交 自動(dòng)會(huì)開啟事務(wù)
            con.setAutoCommit(false);//開啟事務(wù)
            // A 轉(zhuǎn) B 100元
            String sql1 = "update account set money=money-100 where name='A'";
            st = con.prepareStatement(sql1);
            st.executeUpdate();

            //int x=1/0;   //報(bào)錯(cuò)

            String sql2 = "update account set money=money+100 where name='B'";
            st = con.prepareStatement(sql2);
            st.executeUpdate();
            //業(yè)務(wù)完畢,提交事務(wù)
            con.commit();

            System.out.println("A 轉(zhuǎn) B 100元 成功!");
        } catch (SQLException e) {
            //如果失敗則會(huì)默認(rèn)回滾
            e.printStackTrace();
            /*try {
                con.rollback();   //如果失敗就回滾事務(wù)
            } catch (SQLException ex) {
                ex.printStackTrace();
            }*/
        } finally {
            JDBCUtils.release(con, st, rs);
        }
    }
}

二、HIbernate中的事務(wù)

1.???????HIbernate中的事務(wù)管理

在Hibernate中,可以通過代碼來操作管理事務(wù),如通過“Transaction tx = session.beginTransaction();” 開啟一個(gè)事務(wù):持久化操作后,通過“tx.commit();” 提交事務(wù);如果事務(wù)出現(xiàn)異常,又通過“tx.rollback();” 操作來撤銷事務(wù)(事務(wù)回滾)。

除了在代碼中對(duì)事務(wù)開啟,提交和回滾操作外,還可以在Hibernate的配置文件中對(duì)事務(wù)進(jìn)行配置。配置文件中,可以設(shè)置事務(wù)的隔離級(jí)別。具體的配置方法是在hibernate.cfg.xml 文件中的 標(biāo)簽元素中進(jìn)行的。如下:

		<!-- 指定hibernate操作數(shù)據(jù)庫(kù)時(shí)的隔離級(jí)別 
			#hibernate.connection.isolation 1|2|4|8		
			0001	1	讀未提交
			0010	2	讀已提交
			0100	4	可重復(fù)讀
			1000	8	串行化
		 -->
		 <property name="hibernate.connection.isolation">4</property>

?我們?cè)谡嬲M(jìn)行事務(wù)管理的時(shí)候,需要考慮事務(wù)的應(yīng)用場(chǎng)景,也就是說我們的事務(wù)控制不應(yīng)該是在DAO層實(shí)現(xiàn)的,應(yīng)該在Service層實(shí)現(xiàn),并且在Service中調(diào)用多個(gè)DAO實(shí)現(xiàn)一個(gè)業(yè)務(wù)邏輯的操作。
具體操作如下顯示:

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解?

其實(shí)最主要的是如何保證在Service中開啟的事務(wù)時(shí)使用的Session對(duì)象和DAO中多個(gè)操作使用的是同一個(gè)Session對(duì)象。
其實(shí)由兩種辦法可以實(shí)現(xiàn):

  • 可以在業(yè)務(wù)層獲取到Session,并將Session作為參數(shù)傳遞給DAO。
  • 可以使用ThreadLocal 將業(yè)務(wù)層獲取的Session綁定到當(dāng)前線程中,然后在DAO中獲取Session的時(shí)候,都從當(dāng)前線程中獲取。

其實(shí)使用第二種方式肯定是最優(yōu)方案,那么具體的實(shí)現(xiàn)已經(jīng)不用我們來完成了,Hibernate的內(nèi)部已經(jīng)幫我們將這個(gè)事情做完了。我們只需要完成一段配置即可。

Hibernate5 中自身提供了三種管理Session對(duì)象的方法:

  • t h r e a d : S e s s i o n 對(duì) 象 的 生 命 周 期 與 本 地 線 程 綁 定 。 \color{red}{thread:Session對(duì)象的生命周期與本地線程綁定。}?thread:Session對(duì)象的生命周期與本地線程綁定。
  • jta:Session 對(duì)象的生命周期與 JTA 事務(wù)綁定。
  • managed:Hibernate委托程序來管理Session對(duì)象的生命周期。

在hibernate.cfg.xml 中進(jìn)行如下配置:

		<!-- 指定session與當(dāng)前線程綁定 -->
		 <property name="hibernate.current_session_context_class">thread</property>

?

Hibernate提供sessionFactory.getCurrentSession() 創(chuàng)建一個(gè)session 和ThreadLocal 綁定方法。

書寫一個(gè)HibernateUtils工具類:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
	private static SessionFactory sf;
	
	static{
		//1 創(chuàng)建,調(diào)用空參構(gòu)造
		Configuration conf = new Configuration().configure();
		//2 根據(jù)配置信息,創(chuàng)建 SessionFactory對(duì)象
		 sf = conf.buildSessionFactory();
	}
	
	//獲得session => 獲得全新session
	public static Session openSession(){
		//3 獲得session
		Session session = sf.openSession();
		return session;
	}
	
	//獲得session => 獲得與線程綁定的session
	public static Session getCurrentSession(){
		//3 獲得session
		Session session = sf.getCurrentSession();
		return session;
	}
	
}

而且Hibernate中提供的這個(gè)與線程綁定的session可以不用關(guān)閉,當(dāng)線程執(zhí)行結(jié)束后,就會(huì)自動(dòng)關(guān)閉了。

測(cè)試方法:



import org.hibernate.Session;
import org.junit.Test;

import pers.zhang.utils.HibernateUtils;

//測(cè)試getCurrentSession
public class Demo {

	@Test
	//返回同一個(gè)與線程綁定的session
	public void fun1(){
		Session session1 = HibernateUtils.getCurrentSession();
		Session session2 = HibernateUtils.getCurrentSession();
		
		System.out.println(session1==session2);//true
	}
	
	@Test
	//返回不同的session
	public void fun2(){
		Session session1 = HibernateUtils.openSession();
		Session session2 = HibernateUtils.openSession();
		
		System.out.println(session1==session2);//false
	}
	
	
}

輸出

true

false

三、EJB事務(wù)?

在我們對(duì)事務(wù)的基本概念以及出現(xiàn)的問題和隔離級(jí)別有進(jìn)一步的了解之后,接下來看看EJB是如何進(jìn)行事務(wù)管理.

???????在EJB中有兩種使用事務(wù)的方式。第一種方式通過容器管理的事務(wù),叫CMT(Container-Managed Transaction),另一種通過Bean管理的事務(wù)叫BMT(Bean-Managed Transaction)。

???????如果使用容器來管理事務(wù),那么EJB組件就不需要顯式地給出begin 、commit 、abort 語句,EJB 容器會(huì)替我們考慮這些內(nèi)容。EJB 容器會(huì)依據(jù)EJB組件提供者指定的事務(wù)行為來界定相應(yīng)的事務(wù)邊界。

??????在使用容器管理事務(wù)時(shí),EJB 容器會(huì)攔截客戶請(qǐng)求,并自動(dòng)為EJB組建啟動(dòng)新的事務(wù),也就是說,容器會(huì)通過begin 語句調(diào)用底層事務(wù)系統(tǒng),從而啟動(dòng)事務(wù)。隨后,容器會(huì)將業(yè)務(wù)請(qǐng)求委派給EJB組件,組件中的業(yè)務(wù)操作將運(yùn)行在這一事務(wù)中。處于事務(wù)中的EJB 組件能夠執(zhí)行任何業(yè)務(wù)邏輯,如寫入數(shù)據(jù)庫(kù)、發(fā)送異步信息、調(diào)用其他的EJB組件等。一旦在處理業(yè)務(wù)過程中出現(xiàn)問題,則EJB 組建需要通知EJB 容器去回滾事務(wù)。當(dāng)EJB 組建完成業(yè)務(wù)處理后,會(huì)將控制權(quán)交回給EJB 容器。隨后,EJB容器能夠通過commit 或abort 語句調(diào)用底層事務(wù)系統(tǒng)。

???????我們可以使用@TransactionAttribute注釋或部署描述符來指定事務(wù)屬性。EJB 容器通過分析事務(wù)屬性便能夠知道如何處理EJB 組件的事務(wù)需求。

????????如果用簡(jiǎn)短的話總結(jié)上面的內(nèi)容就是,用CMT管理事務(wù),事務(wù)都是被容器管理的,開發(fā)人員不需要對(duì)事務(wù)進(jìn)行管理,需要做的就是配置事務(wù)屬性.

??????EJB 事務(wù)屬性的取值有以下幾種:

(1 )Required ,如果EJB組件必須總是運(yùn)行在事務(wù)中,則應(yīng)該使用Required 模式。如果已經(jīng)有事務(wù)在運(yùn)行,則EJB 組件參與其中;如果沒有事務(wù)運(yùn)行,則EJB 容器會(huì)為EJB組件啟動(dòng)新的事務(wù)。

??????????Required 是默認(rèn)和最常使用的事務(wù)屬性值。這個(gè)值指定必須在事務(wù)之內(nèi)調(diào)用EJB方法。如果從非事務(wù)性客戶端調(diào)用方法,那么容器會(huì)在調(diào)用方法之前開始事務(wù),并且在方法返回時(shí)結(jié)束事務(wù)。另一方面,如果調(diào)用者從事務(wù)性上下文調(diào)用方法,那么方法會(huì)聯(lián)結(jié)已有事務(wù)。在從客戶段傳播事務(wù)的情況下,如果我們的方法表示應(yīng)該回滾事務(wù),那么容器不僅回回滾整個(gè)事務(wù),而且會(huì)向客戶端拋出異常,從而讓客戶端知道它開始的事務(wù)已經(jīng)被另一個(gè)方法回滾了。

(2 )Requires_New,當(dāng)客戶調(diào)用EJB 時(shí),如果總是希望啟動(dòng)新的事務(wù),則應(yīng)該使用RequiresNew 事務(wù)屬性,如果客戶在調(diào)用EJB組件時(shí)已經(jīng)存在事務(wù),則當(dāng)前事務(wù)會(huì)被掛起,進(jìn)而容器啟動(dòng)新的事務(wù),并將調(diào)用請(qǐng)求委派給EJB組件。也就是說,如果客戶端已經(jīng)有了事務(wù),那么它暫停該事務(wù),知道方法返回位置,新事務(wù)是成功還是失敗都不會(huì)影響客戶端已有的事務(wù)。EJB組件執(zhí)行相應(yīng)的業(yè)務(wù)操作,容器會(huì)提交或回滾事務(wù),最終容器將恢復(fù)原有的事務(wù),當(dāng)然,如果客戶在調(diào)用EJB 組件時(shí)不存在事務(wù),則不需要執(zhí)行事務(wù)的掛起或恢復(fù)操作。

??????? ? RequiresNew 事務(wù)屬性非常有用。如果EJB 組件需要事務(wù)的ACID屬性,并且將EJB 組件運(yùn)行在單個(gè)獨(dú)立的工作單元中,從而不會(huì)將其他外部邏輯也包括在當(dāng)前的事務(wù)中,則必須使用RequiredNew事務(wù)屬性。如果需要事務(wù),但是不希望事務(wù)的回滾影響客戶端,就應(yīng)該使用它。另外,當(dāng)不希望客戶端的回滾影響你的時(shí)候,也應(yīng)該使用這個(gè)值。

(3 )Supports ,如果某個(gè)EJB組件使用了Supports 事務(wù)屬性,則只有調(diào)用它的客戶已經(jīng)啟用了事務(wù)時(shí),這一EJB 組件才會(huì)運(yùn)行在事務(wù)中。如果客戶并沒有運(yùn)行在事務(wù)中,則EJB組建也不會(huì)運(yùn)行在事務(wù)中。Supports 同Required 事務(wù)屬性很相似,但是,Required 要求EJB 組件必須運(yùn)行在事務(wù)中。如果使用Support事務(wù)屬性,EJB 組建很可能沒有運(yùn)行在事務(wù)中。

(4 )Mandatory ,Mandatory事務(wù)屬性要求調(diào)用EJB 組件的客戶必須已經(jīng)運(yùn)行在事務(wù)中。如果從非事務(wù)性客戶端調(diào)用使用Mandatory 屬性的EJB方法,那么客戶將接受到系統(tǒng)拋出的javax.ejb.EJBTransactionRequiredException 異常。EJB 組件使用Mandatory事務(wù)屬性是非常安全的,它能夠保證EJB 組建運(yùn)行在事務(wù)中。如果客戶沒有運(yùn)行在事務(wù)中,則不能夠調(diào)用到應(yīng)用了Mandatory 事務(wù)屬性的EJB組件。但是,Mandatory 事務(wù)屬性要求第3 方(及客戶)在調(diào)用EJB 組件前必須啟動(dòng)了事務(wù)。EJB 容器并不會(huì)為Mandatory事務(wù)屬性自動(dòng)啟動(dòng)新事務(wù),這是同Support 事務(wù)屬性的最主要區(qū)別。

(5 )NotSupported ,如果EJB組件使用了NotSupport事務(wù)屬性,它根本不會(huì)參與到事務(wù)中。如果調(diào)用者使用相關(guān)聯(lián)的事務(wù)調(diào)用方法,容器就會(huì)暫停事務(wù),調(diào)用方法,然后再方法返回時(shí)恢復(fù)事務(wù)。通常,此屬性只用于非實(shí)物性的自動(dòng)確認(rèn)模式中,支持JMS提供者的MDB 。

(6 )Never ,如果EJB組件使用Never 事務(wù)屬性,它就不能夠參與到事務(wù)中,而且,如果調(diào)用它的客戶已經(jīng)處于事務(wù)中,則容器會(huì)將javax.ejb.EJBException異常拋給客戶。

當(dāng)然在上面所列出的屬性中我們最常用的還是Required具體可以看下面的一段片段代碼:
?

 
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "UserManager")
@Remote
@TransactionManagement(TransactionManagementType.CONTAINER)
public class UserManagerBean implements UserManager {

	@PersistenceContext
	private EntityManager em ;
	@TransactionAttribute(TransactionAttributeType.REQUIRED)
	public void addUser(String name) {

		User s = new User();
		s.setName(name);
		em.persist(s);
		System.out.println("服務(wù)器端執(zhí)行成功:保存姓名" + name);

	}

}

?

?上面的例子中

? ? @TransactionManagement(TransactionManagementType.CONTAINER)

表示指定事務(wù)的類型。如果省略,默認(rèn)為CMT方式。

? ? @TransactionAttribute(TransactionAttributeType.REQUIRED)

通知容器如何管理事務(wù),事務(wù)的屬性控制了事務(wù)的使用范圍,因?yàn)槭聞?wù)之間的關(guān)系非常的復(fù)雜,這個(gè)屬性主要是用來處理事務(wù)與事務(wù)之間怎樣來處理的的問題。

至此 事務(wù)已全部輸出完畢 歡迎小伙伴補(bǔ)充

JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解

?

到了這里,關(guān)于JDBC事務(wù) Hibernate事務(wù) EJB事務(wù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • spring boot 整合jdbc和事務(wù)

    spring boot 整合jdbc和事務(wù)

    目錄 1、j在pom文件中引入dbc驅(qū)動(dòng)與mybatis ?2、數(shù)據(jù)庫(kù)連接池參數(shù)配置 3、mybatis配置 4、application配置 5、通用mapper配置 6、編寫UserMapper 7、user表(需要自行去mysql創(chuàng)建數(shù)據(jù)庫(kù)表新增用戶數(shù)據(jù),sql語句見下一步) 8、sql信息 9、UserService編寫 10、測(cè)試結(jié)果 11、測(cè)試輸出結(jié)果 訪問效果

    2024年02月15日
    瀏覽(22)
  • 高效掌握J(rèn)DBC技術(shù)(三)| 三層架構(gòu)理念 | 書寫符合事務(wù)特性的工具類 | JUnit測(cè)試框架 | JDBC項(xiàng)目開發(fā)步驟

    高效掌握J(rèn)DBC技術(shù)(三)| 三層架構(gòu)理念 | 書寫符合事務(wù)特性的工具類 | JUnit測(cè)試框架 | JDBC項(xiàng)目開發(fā)步驟

    ?作者簡(jiǎn)介:熱愛后端語言的大學(xué)生,CSDN內(nèi)容合伙人 ?精品專欄:C++面向?qū)ο???系列專欄:JDBC快速入門 一種合理的項(xiàng)目分層理念,好處為可以簡(jiǎn)化設(shè)計(jì)、各司其職、更容易擴(kuò)展內(nèi)容 三層架構(gòu)分為: 表示層 (UI、WEB):跟用戶對(duì)接 業(yè)務(wù)邏輯層 (service):書寫功能的整體

    2024年02月16日
    瀏覽(23)
  • springboot第55集:思維導(dǎo)圖Sharding-JDBC,事務(wù),微服務(wù)分布式架構(gòu)周刊

    事務(wù)定義 在數(shù)據(jù)庫(kù)管理系統(tǒng)中,事務(wù)是單個(gè)邏輯或工作單元,有時(shí)由多個(gè)操作組成,在數(shù)據(jù)庫(kù)中以一致模式完成的邏輯處理稱為事務(wù)。一個(gè)例子是從一個(gè)銀行賬戶轉(zhuǎn)賬到另一個(gè)賬戶:完整的交易需要減去從一個(gè)賬戶轉(zhuǎn)賬的金額,然后將相同的金額添加到另一個(gè)賬戶。 事務(wù)特

    2024年02月19日
    瀏覽(34)
  • EJB基本概念和使用

    EJB是sun的JavaEE服務(wù)器端組件模型,是一種規(guī)范,設(shè)計(jì)目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。 EJB2.0過于復(fù)雜,EJB3.0的推出減輕了開發(fā)人員進(jìn)行底層開發(fā)的工作量,它取消或最小化了很多(以前這些是必須實(shí)現(xiàn))回調(diào)方法的實(shí)現(xiàn),并且降低了實(shí)體Bean及O/R映射模型的復(fù)雜性。 EJB大

    2024年02月12日
    瀏覽(13)
  • EJB和Spring

    EJB和Spring

    功能日趨復(fù)雜的軟件,如果把所有的功能實(shí)現(xiàn)都放在客戶端,不僅代碼沒有安全性,部署及發(fā)布運(yùn)維都會(huì)變的很復(fù)雜,所以將軟件的功能實(shí)現(xiàn)分為客戶端和服務(wù)端,服務(wù)端和客戶端之間通過網(wǎng)絡(luò)調(diào)用進(jìn)行功能實(shí)現(xiàn)。 客戶端只做界面展示和數(shù)據(jù)交互,功能的實(shí)現(xiàn)統(tǒng)統(tǒng)交給服務(wù)端

    2024年04月28日
    瀏覽(9)
  • JDBC詳解(一):JDBC概述

    JDBC詳解(一):JDBC概述

    本博主將用CSDN記錄軟件開發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識(shí),有興趣的小伙伴可以關(guān)注博主!也許一個(gè)人獨(dú)行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)! 1、概念 持久化( persistence ): 把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中以供之后使用 。 大多數(shù)情況下,特

    2023年04月24日
    瀏覽(15)
  • JDBC詳解(五):批量插入(超詳解)

    本博主將用CSDN記錄軟件開發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識(shí),有興趣的小伙伴可以關(guān)注博主!也許一個(gè)人獨(dú)行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)! 當(dāng)需要成批插入或者更新記錄時(shí),可以采用Java的批量 更新 機(jī)制,這一機(jī)制允許多條語句一次性提

    2024年02月02日
    瀏覽(17)
  • Java EE開發(fā)系列教程 - 使用EJB組件與JPA層交互

    Java EE開發(fā)系列教程 - 使用EJB組件與JPA層交互

    因?yàn)橹癑PA原生 property 屬性在Wildfly實(shí)現(xiàn)中并不總是生效,所以這里換成了Wildfly默認(rèn)的JPA實(shí)現(xiàn),即Hibernate。把屬性改成了Hibernate專有的。 hibernate.hbm2ddl.auto 定義是否自動(dòng)生成表, create-and-drop 意為如果表存在,則刪除后再創(chuàng)建。 hibernate.dialect 用來指定數(shù)據(jù)庫(kù)廠商,以根據(jù)不同

    2024年04月13日
    瀏覽(22)
  • Java JDBC 詳解

    目錄 2、Java JDBC 的核心組件有哪些? 3、如何使用JDBC API? 4、DriverManager 和 DataSource 的區(qū)別 5、如何使用DataSource進(jìn)行數(shù)據(jù)庫(kù)連接? ????????Java JDBC (Java Database Connectivity)是Java語言中用于訪問數(shù)據(jù)庫(kù)的API。JDBC API提供了一組標(biāo)準(zhǔn)的接口,允許Java應(yīng)用程序通過使用標(biāo)準(zhǔn)SQL查詢語

    2024年02月02日
    瀏覽(19)
  • 詳解JDBC各個(gè)對(duì)象

    詳解JDBC各個(gè)對(duì)象

    概述:DriverManager 是驅(qū)動(dòng)管理類 作用 獲取數(shù)據(jù)庫(kù)連接 url 語法 如果連接的是本機(jī) MySQL 服務(wù)器,并且端口號(hào)默認(rèn)則 url簡(jiǎn)寫為: jdbc:mysql:///數(shù)據(jù)庫(kù)名稱 示例代碼 概述:Connection 是數(shù)據(jù)庫(kù)連接類 作用 獲取執(zhí)行 SQL 的對(duì)象 方法 作用 Statement createStatement(); 返回執(zhí)行 SQL 對(duì)象 Prepared

    2024年01月20日
    瀏覽(11)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包