prog:java_hibernate_sql_native
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
prog:java_hibernate_sql_native [2013/04/22 12:24] – gpipperr | prog:java_hibernate_sql_native [2013/04/22 12:27] (aktuell) – [Quellen] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Native SQL Queries in Hibernate ===== | ||
+ | |||
+ | In Hibernate können mit HQL und SQL direkt Abfragen auf die Datenbank formuliert werden. | ||
+ | |||
+ | |||
+ | |||
+ | ===Beispiele: | ||
+ | |||
+ | Einfaches SQL Beispiel mit Bindvariablen Verwendung und Blätterfunktion. | ||
+ | |||
+ | Das Ergebnis wird in die Entity Klasse Emp transformiert. | ||
+ | |||
+ | <code java> | ||
+ | query = session.createSQLQuery(" | ||
+ | query.setDouble(" | ||
+ | query.setCacheable(true); | ||
+ | |||
+ | query.setFirstResult(10); | ||
+ | query.setMaxResults(20); | ||
+ | |||
+ | emps = (List< | ||
+ | |||
+ | for (Emp e : emps) { | ||
+ | e.toString(); | ||
+ | } | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Namen und Datentypen der Ergebnis Spalten setzen, Bind Variable übergeben und Werte ausgeben: | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | // SQL Query mit Verwendung mit AddScalar | ||
+ | // vor Hibernate 4 Hibernate.STRING => StringType.INSTANCE | ||
+ | |||
+ | query = | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | |||
+ | query.setDouble(" | ||
+ | |||
+ | query.setCacheable(true); | ||
+ | |||
+ | List< | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | |||
+ | Iterator iterator = qemps.iterator(); | ||
+ | System.out.println(" | ||
+ | |||
+ | while (iterator.hasNext()) { | ||
+ | Object[] obj = (Object[])iterator.next(); | ||
+ | |||
+ | Integer empno = (Integer)obj[0]; | ||
+ | System.out.print(empno); | ||
+ | |||
+ | String ename = (String)obj[1]; | ||
+ | System.out.print(" | ||
+ | |||
+ | Date hiredate = (Date)obj[4]; | ||
+ | System.out.print(" | ||
+ | |||
+ | System.out.println(); | ||
+ | } | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Wert über eine Map ausgeben: | ||
+ | |||
+ | |||
+ | <code java> | ||
+ | |||
+ | query = session.createSQLQuery(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | |||
+ | |||
+ | query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); | ||
+ | |||
+ | query.setDouble(" | ||
+ | |||
+ | query.setCacheable(true); | ||
+ | |||
+ | |||
+ | List data = query.list(); | ||
+ | |||
+ | for (Object o : data) { | ||
+ | Map row = (Map)o; | ||
+ | System.out.print(" | ||
+ | System.out.println(", | ||
+ | } | ||
+ | |||
+ | System.out.println(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ergebnis einer eigenen Klassen zuweisen. Diese Klasse muss keine Enity Klasse sein, aber die get und set Methoden müssen 1zu1 mit den Spaltennamen des Resultsets des Ergebnisses übereinstimmen: | ||
+ | |||
+ | <code java> | ||
+ | | ||
+ | |||
+ | query = | ||
+ | session.createSQLQuery(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .addScalar(" | ||
+ | .setResultTransformer(Transformers.aliasToBean(EmpDept.class)); | ||
+ | |||
+ | query.setCacheable(false); | ||
+ | |||
+ | List< | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | for (EmpDept e : empDepts) { | ||
+ | System.out.println(e.toString()); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Quellen ==== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | |||
+ | Sehr gutes Hibernate Tutorial: | ||
+ | |||
+ | |||
+ | Über den Hibernate Cache: http:// | ||
+ | |||
+ | |||
+ | === Migration von Hibernate 3 nach 4 === | ||
+ | |||
+ | * http:// |
prog/java_hibernate_sql_native.txt · Zuletzt geändert: 2013/04/22 12:27 von gpipperr