Verwendung einer ParameterExpression im Vergleich zu einer Variablen in der JPA-Kriterien-API

9

Was ist der Vorteil bei der Verwendung der JPA-Kriterien-API, wenn eine ParameterExpression direkt über eine Variable verwendet wird? Z.B. Wenn ich in einer String-Variablen nach einem Kunden anhand des Namens suchen möchte, könnte ich etwas wie

schreiben %Vor%

Mit Parametern wird dies:

%Vor%

Für Prägnanz würde ich den ersten Weg bevorzugen, besonders wenn die Abfrage mit optionalen Parametern länger wird. Gibt es Nachteile bei der Verwendung von Parametern wie SQL Injection?

    
Henno Vermeulen 08.05.2013, 10:31
quelle

2 Antworten

0

Wenn ein Parameter verwendet wird (abhängig von der JPA-Implementierung, dem verwendeten Datenspeicher und dem JDBC-Treiber), wird die SQL für einen JDBC-Parameter optimiert. Wenn Sie dasselbe mit einem anderen Wert des Parameters ausführen, wird derselbe verwendet JDBC-Anweisung.

Die SQL-Injection ist immer dem Entwickler überlassen, ob sie eine Benutzereingabe validieren, die als Parameter verwendet wird.

    
DataNucleus 08.05.2013 10:36
quelle
0

Sie können ParameterExpression wie folgt verwenden: Angenommen, Sie haben einen Eingabefilter, ein Beispiel könnte das sein:

  • In Ihrer Anfrage müssen Sie den Wert eines Steuercodes überprüfen.

Fangen wir an: Erstellen Sie zuerst criteriaQuery und criteriaBuilder und root

%Vor%

1) Inizialisieren Sie eine Prädikatliste (verwenden Sie für where-Klausel) und eine paramList (verwenden Sie für param)

%Vor%

2 ) Überprüfen Sie, ob die Eingabe null ist und erstellen Sie predicateList und param

%Vor%

3 ) Erstellen Sie die where-Klausel

%Vor%

4 ) legen Sie den Parameterwert

fest %Vor%     
Taioli Francesco 15.03.2017 16:08
quelle

Tags und Links