Vorwort
Wenn wir Back-End-Serviceentwicklung durchführen, insbesondere wenn Big Data in Chargen eingefügt wird, können gewöhnliche Orm-Frameworks (MyBatis, Hibernate, JPA) die Leistungsanforderungen des Programms nicht erfüllen. Natürlich ist es für uns unmöglich, native JDBC zum Betrieb zu verwenden, sodass die Effizienz, obwohl sie hoch ist, die Komplexität zunimmt.
In Anbetracht umfassend verwenden wir JDBctemplate in Spring und als Parameterjdbctemplate, um Stapelvorgänge auszuführen.
Vor der Transformation
Bevor wir mit der Erklärung beginnen, schauen wir uns zunächst an, wie JPA in Chargen betrieben wurde.
Entität Benutzer:
öffentliche Klasse Appstudent {private Integer id; private Ganzzahlklasse; privater Zeichenfolge Name; privates Ganzzahlalter; // Pseudocode, konstruiert und abgerufen, Methoden festlegen}DynamicQuery Pseudocode:
@RepositoryPublic Class DynamicQueryImpl implementiert DynamicQuery {@persistencontext private EntityManager em; public entityManager getentityManager () {return em; } // In der Tat ist es nur für die Schleife und die persistierte Methode von EntityManager, um @Override public <T> void Savelist (Liste <T> resultlist) {für (int i = 0; i <resultlist.size (); i ++) {t t = resultlist.get (i) zu speichern. Em.Persist (t); }}}Nach der Transformation
JDBCTEMPLATE
Die wichtigsten Methoden von Jdbctemplate:
Wir müssen nur @Autowired zur Injektion in der JDBCTEMPLET -Klasse verwenden:
@AutowiredPrivate JDBCTEMPLET JDBCTEMPLET;
Batch -Einsatzvorgang:
public void batchsave () {list <Object []> batchargs = new ArrayList <Object []> (); batchargs.add (neues Objekt [] {1, "xiao ming", 21}); batchargs.add (neues Objekt [] {2, "xiaohong", 22}); batchargs.add (neues Objekt [] {3, "Lucy", 23}); String SQL = "In den Benutzer (Benutzername, Kennwort) Werte (?,?) Einfügen"; JDBCTEMPLET.BATCHUPDATE (SQL, Batchargs);};Die obigen implementiert grundsätzlich die Stapeleinfügungsfunktion, aber wenn es viele Datenbankfelder gibt, ist es möglicherweise nicht so gut, sie in Form eines Platzhalters zu codieren. Hier bietet die Spring auch SimpleJdbCtemplate (Spring3.1+ wird später als veraltet markiert, wird jedoch in der Feder 4.3 vollständig entfernt. Letzteres kann die Anforderungen vollständig erfüllen) und namerparameterjdbctemplate -Vorlagen -Motor.
NamedParameterjdbctemplate
Ich glaube, dass Schüler, die Hibernate verwendet haben, wissen, dass er in HQL verwendet werden kann? Oder: * Um Abfrageparameter extern zu konfigurieren. Im Frühlings -JDBC -Framework wird auch ein Weg zur Bindung von SQL -Parametern unter Verwendung der benannten Parameter bereitgestellt.
Wir müssen nur @Autowired zur Injektion in der namerparameterjdbctemplate -Klasse verwenden:
@AutowiredPrivate namedParameterjdbCtemplate namedParameterjdbctemplate;
Batch -Einsatzvorgang:
public void batchsave () {list <Unter> list = new ArrayList <Bener> (); // Neue Benutzerliste hinzufügen.ADD (neuer Appstudent (1, "Zhang San", 21)); list.add (neuer AppStudent (1, "li si", 22)); list.add (neuer Appstudent (1, "Wang Erazi", 23)); // Batch zu Array SQLParameterSource [] BeanSources = SQLParametersourceutils.createbatch (list.toArray ()); String SQL = "In app_student (class_id, name, älter) Werte (: classId,: name,: Alter)"; namedParameterjdbctemplate.batchupdate (SQL, BeanSources);}Schließlich verwenden wir System.currentTimemillis (), um die Ausführungszeit vor und nach der spezifischen Transformation zu vergleichen und zu drucken.
Long start = system.currentTimemillis (); // den Code vor und nachher umgestalten und ihn selbst ergänzen.
Schnell ist definitiv schnell. Wie schnell es ist, muss es einen relevanten Vergleich basierend auf dem Datenvolumen und der Maschinenkonfiguration durchführen.
Projektquellcode: https://gitee.com/52itstyle/spring-data-jpa
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.