jdbc batch processing
Deze tutorial biedt een volledig begrip van JDBC Batch Processing en Java Stored Procedure met voorbeeld Java-voorbeelden:
In de Afhandeling van JDBC-uitzonderingen tutorial van de JDBC-tutorialserie hebben we manieren geleerd om met SQL-uitzonderingen om te gaan met behulp van programmeervoorbeelden.
In deze zelfstudie bespreken we methoden om batchverwerking in Java uit te voeren met behulp van een JDBC-stuurprogramma. We zullen ook leren hoe u opgeslagen procedures kunt maken en deze vanuit een Java-programma kunt aanroepen.
Laten we beginnen met het begrijpen van batchverwerking en de voordelen ervan.
Wat je leert:
JDBC-batchverwerking
Het is het proces waarbij meerdere SQL-instructies in één transactie worden uitgevoerd. Dit proces verkort de communicatietijd en verhoogt de prestaties. Het maakt het verwerken van een grote hoeveelheid gegevens veel gemakkelijker.
Voordelen van batchverwerking
Batchverwerking is bedoeld om de prestaties en gegevensconsistentie te verbeteren.
Prestatie
Beschouw het scenario waarin meerdere (zeg 5) vermeldingen moeten worden toegevoegd aan een tabel vanuit een JAVA-programma. De eenvoudige benadering is het openen van een verbinding met de database, het schrijven van INSERT-query's en het uitvoeren van elke query met Statement of PreparedStatement.
Deze aanpak zal het aantal netwerkreizen naar de database vergroten en als gevolg daarvan tot slechte prestaties leiden. Met behulp van batchverwerking kunnen we deze bewerking in één oproep uitvoeren.
Data consistentie
In sommige gevallen moeten we gegevens in meerdere tabellen invoegen / bijwerken. Dit zal leiden tot een onderling gerelateerde transactie waarbij de volgorde van de queries die worden ingevoegd of bijgewerkt, belangrijk is. Eventuele fouten die optreden tijdens de uitvoering zouden resulteren in een terugdraaien van de gegevens die zijn ingevoegd door eerdere query's, indien van toepassing.
Voorbeeld:
# 1) Tabel ‘EMPLOYEE_DETAILS’ heeft drie kolommen: ID kaart Naam , en Rol van de medewerker.
#twee) Tabel ‘EMPLOYEE_ADDRESS’ heeft 2 kolommen: EMP-ID en Adres
In het bovenstaande voorbeeld kan een probleem optreden wanneer de eerste instructie met succes wordt uitgevoerd, maar de tweede instructie mislukt. In deze situatie is er geen terugdraaiing van de gegevens die zijn ingevoegd door de eerste instructie. Dit leidt tot inconsistentie van gegevens.
We kunnen gegevensconsistentie bereiken door de transactie aan het einde te plegen of door een rollback uit te voeren in geval van uitzonderingen. Maar om dit te bereiken, moet de DB voor elke instructie herhaaldelijk worden geraakt.
Aan de andere kant, bij batchverwerking, worden de gegevens alleen vastgelegd als alle query's in een batch met succes worden uitgevoerd. Anders niet.
Batchverwerking uitvoeren
We kunnen batchverwerking uitvoeren met behulp van de methoden addbatch () en executeBatch () die beschikbaar zijn in zowel de klassen Statement als PreparedStatement.
In deze tutorial zijn alle programma's geschreven in Java. We hebben de Java 8-versie en Oracle DB gebruikt.
Klik hier om de Oracle-software te downloaden
Klik hier om de Java-versie 8 te downloaden
In het volgende voorbeeld zullen we uitgebreid zien hoe we batchverwerking kunnen uitvoeren. Het heeft het stapsgewijze Java-installatieproces.
Gegevens in de WERKNEMER-tabel voordat gegevens worden ingevoegd:
gebruik van c ++ in de echte wereld
Java-programma
UITGANG:
Gegevens in WERKNEMER Tabel na invoeging van de gegevens:
Uitleg:
In het bovenstaande programma hebben we gegevens van 3 werknemers in één oproep ingevoegd met behulp van een batchbewerking.
- Maak één invoegquery om de kolomwaarden door te geven.
- Open de verbinding en maak een preparaat-object met behulp van het verbindingsobject en roep de methode preparStatement aan.
- Stel vervolgens de waarden in voor de 1stwerknemer met behulp van setXXX-methoden en roep de addBatch () -methode aan om de nieuwe rij in de batch toe te voegen.
- Voeg op deze manier de waarden voor 2 toenden 3rdmedewerkers. Nadat we de queries aan de addBatch () - methode hebben toegevoegd, moeten we de executeBatch () - methode aanroepen met behulp van het preparaat-object.
- executeBatch () methode voegt de gegevens van de drie werknemers in één aanroep in.
- Controleer in de tabel WERKNEMER of de gegevens correct zijn ingevoerd of niet.
In Java opgeslagen procedures
Een opgeslagen procedure is een groep SQL-instructies die een enkele eenheid vormen en een specifieke taak uitvoeren. Ze zullen worden gebruikt om een reeks bewerkingen of vragen uit te voeren die op een databaseserver moeten worden uitgevoerd. Het kan worden samengesteld en uitgevoerd met verschillende parameters en resultaten.
Elke procedure heeft zijn unieke naam waarnaar moet worden verwezen. Deze subprogramma-eenheid wordt opgeslagen als een databaseobject in DB.
Een subprogramma is niets anders dan een procedure, en het moet handmatig worden gemaakt zoals we willen en het opslaan als een DB-object.
Stored Procedures zijn zelfstandige blokken van een programma die we in DB kunnen opslaan. Door de naam van de opgeslagen procedure te gebruiken, kunnen we deze oproepen en uitvoeren. Het wordt voornamelijk gebruikt om een proces in PL / SQL uit te voeren. De procedure kan geneste blokken hebben of kan binnen de andere blokken zijn genest.
De opgeslagen procedure bestaat uit 3 delen:
- Aangiftedeel (optioneel): In dit deel kunnen we de variabelen, constanten, cursors, enz. Declareren. Het is een optioneel onderdeel. Op basis van de vereisten kunnen we het gebruiken.
- Uitvoeringsgedeelte: Dit deel bevat de belangrijkste bedrijfslogica van de procedure. Normaal gesproken heeft het een blok SQL-instructies.
- Uitzonderlijk behandelingsgedeelte (optioneel): In dit deel kunnen we de uitzondering behandelen die kan optreden als gevolg van de onderdeelcode Execution. Het is ook optioneel.
Op basis van de vereisten kunnen we een procedure opstellen. We kunnen de waarden doorgeven of ophalen uit de parameters.
Er zijn drie soorten parameters beschikbaar in opgeslagen procedures. Zij zijn:
- IN: Het wordt gebruikt om de invoerwaarde door te geven aan de opgeslagen procedure. De opgeslagen procedure gebruikt de invoerparameter in het programma als een alleen-lezen variabele. De waarde kan niet binnen de subprogramma's worden gewijzigd. Oracle gebruikt IN als de standaardmodus van de parameter. Het is de standaardparameter.
- UIT: Het wordt gebruikt om de waarde van de opgeslagen procedure te retourneren of op te halen na de uitvoering. Het is een lees-schrijfvariabele binnen de subprogramma's. De waarde kan binnen de subprogramma's worden gewijzigd.
- IN UIT: Het wordt gebruikt om de invoerwaarden door te geven aan de opgeslagen procedure en ook de waarden uit de procedure te retourneren of op te halen. Het is zowel leesbaar als beschrijfbaar. We kunnen het lezen en wijzigen.
TERUGKEER
We zullen het return-sleutelwoord gebruiken om de controle terug te geven aan het hoofdprogramma, zoals het Java-programma. Wanneer de procedure het RETURN-sleutelwoord vindt, verlaat het de uitvoering en slaat de code of instructie erna over.
Opgeslagen procedure oproepen vanuit Java
We hebben een CallableStatement-interface in Java om Stored Procedure aan te roepen. Het interfaceobject CallableStatement kan worden gemaakt met behulp van de methode preparCall () van de verbindingsinterface en daarna moeten we de methode executeQuery () aanroepen om de opgeslagen procedure in het Java-programma uit te voeren.
Voordat we het Java-programma schrijven om dit te implementeren, moeten we opgeslagen procedures maken om het in het programma te gebruiken.
Het volgende is de syntaxis om opgeslagen procedures in het Java-programma aan te roepen:
Syntaxis | Geen van de parameters |
---|---|
{bel PROCEDURE_NAME ()} | Geen invoerparameters en geen uitvoerparameters |
{bel PROCEDURE_NAME (?,?,?)} | Drie invoerparameters en geen uitvoerparameters |
{? = bel PROCEDURE_NAME ()} | Geen invoerparameters en één uitvoerparameter (RETURN-waarde) |
{? = bel PROCEDURE_NAME (?,?)} | Twee invoerparameters en één uitvoerparameter (RETURN-waarde) |
Stappen om opgeslagen procedures te maken
# 1) Maak de procedure in de DB-server. Hier gebruiken we Oracle DB.
# 2) Syntaxis voor het maken van de volledige procedure:
We kunnen de opgeslagen procedure ook in Java-code schrijven.
# 3) Geef de IN- en OUT-parameters door om deze in de procedure te gebruiken.
# 4) Het AS / IS-sleutelwoord moet worden vermeld. Als we een andere procedure aan de nieuwe procedure toevoegen, gebruik dan het IS-sleutelwoord of AS-sleutelwoord als de procedure op zichzelf staat.
# 5) Declareer de variabelen, het is niet verplicht, op basis van de vereiste die we kunnen creëren.
# 6) BEGIN vervolgens de procedure met het sleutelwoord BEGIN en schrijf vervolgens de SQL-instructies of queries die in de procedure moeten worden uitgevoerd.
# 7) Vervolgens kunnen we de uitzondering afhandelen in het gedeelte Uitzondering. Het is ook niet verplicht om te vermelden.
# 8) Beëindig de procedure door het END-sleutelwoord en de procedurenaam te noemen.
We kunnen de procedure in Oracle creëren en opslaan met een unieke naam en die procedure aanroepen vanuit het Java-programma. We kunnen de procedure maken en die procedure ook in Java aanroepen.
Maak een procedure in Oracle, sla deze op en roep de procedure op in Java Program.
# 1) Open de databaseserver. Hier gebruiken we de Oracle DB-server.
#twee) Klik met de rechtermuisknop op de map Procedure en klik op de optie Nieuwe procedure.
# 3) Het vraagt om de naam van de procedure en parameterdetails.
Notitie: We kunnen de parameterdetails ook geven tijdens het schrijven van de procedure.
# 4) Schrijf de procedure met behulp van de stappen die we al in deze tutorial hebben besproken en sla de procedure op met de unieke naam.
De procedure in de schermafbeelding toont de uitvoer in DB. We kunnen het wijzigen om het ook in het Java-programma weer te geven. Daarvoor hebben we OUT-parameters nodig.
# 5) Voer de procedure uit door op de knop Uitvoeren te klikken
# 6) Voer de waarde in de kolom Invoerwaarde in. Het toont de gegevens voor de opgegeven waarde.
Tot nu toe hebben we gezien hoe we de procedure in de DB-console zelf kunnen maken en uitvoeren.
Maak de procedure in DB. Roep het aan en geef de gegevens weer in de Java-console
Maak de volgende procedure met behulp van de bovenstaande stappen en sla deze op met de naam 'DISPLAY_EMPLOYEE_DETAILS'.
Voorbeeldprogramma voor opgeslagen procedure in Java
UITGANG:
Uitleg:
Wat we in het bovenstaande programma hebben gedaan, is dat we één procedure hebben gemaakt en deze hebben opgeslagen in Oracle DB. Riep vervolgens die procedure met CallableStatement en gaf de gegevens weer in Java Console.
- Maak de procedure en sla deze op in Oracle DB.
- Open in het Java-programma de DB-verbinding en roep de methode preparCall aan met behulp van de objecten connection en CallableStatement.
- Geef de invoerparameterwaarde door met behulp van de setXXX-methode.
- Haal de waarden van de uitvoerparameters op met de methode registerOutParameter. Bij deze methode moeten we de parameterindexwaarde en het gegevenstype van de parameter doorgeven. Het slaat de waarden op in de parameterindex.
- Met behulp van de getXXX-methoden kunnen we de gegevens ophalen en weergeven in de Java-console.
Maak de procedure en voer deze uit in het Java-programma zelf.
Java-programma
UITGANG:
Gegevens in de tabel Employee_details vóór de uitvoering van het programma:
Gegevens in de tabel Employee_details na de uitvoering van het programma:
Uitleg:
In het bovenstaande programma slaan we de procedurecode op als een string.
- Open de Oracle DB Connection en maak het instructieobject met behulp van het verbindingsobject.
- Roep de createStatement-methode aan met behulp van een statement-object, omdat we de procedure in Java-code maken.
- Roep de procedure aan met behulp van de syntaxis {call UPD_EMPLOYEE_DETAILS (?,?) to PreparCall-methode van de CallableStatement.
- Aangezien we de procedure in Java-code aan het maken zijn, moeten we die 'Create procedure Code' uitvoeren.
- Om die procedure uit te voeren, roept u de execute-methode aan met behulp van Statement-object “ stmt.execute (Stored_Procedure) Hierdoor wordt de procedure tijdelijk in de database gemaakt.
- De scope van de procedure is het einde van de uitvoering van het programma. Daarna is het niet meer beschikbaar. Stel met behulp van setXXX-methoden de waarden in die moeten worden bijgewerkt in de tabel Employee_Details.
- Roep de methode executeUpdate aan met het object callableStatement. Met deze methode worden de waarden in het Empoyee_Details-verhaal bijgewerkt.
- Controleer in de tabel Employee_details of de gegevens correct zijn bijgewerkt.
Punten om te onthouden:
- Batchverwerking verbetert de prestaties en handhaaft de gegevensconsistentie.
- Het uitvoeren van meerdere SQL-instructies in één transactie wordt batchverwerking genoemd.
- Stored Procedure is het blok SQL-instructies dat wordt gebruikt om bedrijfslogica uit te voeren.
- We kunnen de invoerparameter met het IN-sleutelwoord doorgeven aan de procedure en het OUT-sleutelwoord voor de uitvoerparameter.
- We kunnen een procedure in de DB-server zelf maken en ook tijdelijk Java-code gebruiken.
Veel Gestelde Vragen
V # 1) Welke interface moet worden gebruikt om batchverwerking in JDBC uit te voeren?
Antwoord: Het Java-pakket heeft Statement- en PreparedStatement-interfaces, die de methoden bieden voor batchverwerking.
V # 2) Hoe werken batchupdates in JDBC?
Antwoord: Een JDBC-batchupdate is een reeks updates die in één keer zijn gegroepeerd en naar de database worden verzonden in plaats van de updates één voor één te verzenden. Het vermindert dus het netwerkverkeer in de database.
wat is de beste software voor externe toegang
V # 3) Hoe verhoogt batchverwerking de prestaties?
Antwoord: Batchverwerking stuurt de gegevens in één keer naar de database (slechts 1 retour) in plaats van ze een voor een te verzenden, en de database kan mogelijk enkele instructies parallel uitvoeren. Op deze manier verhoogt het de prestaties van de applicatie en bespaart het tijd.
V # 4) Welke parameters worden geaccepteerd in opgeslagen procedures in JDBC?
Antwoord: Er zijn drie soorten parameters: IN, OUT en INOUT parameters. De IN-parameter is om de invoerwaarde te krijgen. De OUT-parameter is voor het ophalen van de outputwaarde. De INOUT-parameter wordt gebruikt voor zowel invoer als uitvoer.
V # 5) Welke methoden zijn beschikbaar om een opgeslagen procedure in JDBC uit te voeren?
Antwoord: Met behulp van CallableStatement Interface kunnen we de procedure aanroepen. De CallableStatement-interface biedt drie methoden om de opgeslagen procedures uit te voeren.
De drie methoden zijn:
- executeUpdate (): Gebruik deze methode als de procedure geen retourwaarden oplevert.
- executeQuery (): Gebruik deze methode als de procedure slechts één resultatenset retourneert.
- uitvoeren (): Gebruik deze methode als de procedure veel resultatensets of een onbekend aantal resultatensets retourneert.
Gevolgtrekking
In deze zelfstudie hebben we batchverwerking en opgeslagen procedures behandeld. In de moderne wereld zijn hoge prestaties, gegevensconsistentie en herbruikbaarheid de buzzwoorden voor elke populaire applicatie. Zowel batchverwerking als opgeslagen procedures spelen een zeer belangrijke rol bij het implementeren van deze functies. Kennis hiervan is voor iedere software engineer onvermijdelijk.
Aanbevolen literatuur
- Java JDBC-zelfstudie: wat is JDBC (Java Database Connectivity)
- Zelfstudie voor Java JDBC-verbinding met programmeervoorbeeld
- Java JDBC-transactiebeheer met voorbeeld
- JDBC ResultSet: Java ResultSet gebruiken om gegevens op te halen
- Afhandeling van JDBC-uitzonderingen - Hoe om te gaan met SQL-uitzonderingen
- JDBC DriverManager, JDBC PreparedStatement en Statement
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials