Advertisement
Guest User

HibernateTest

a guest
May 27th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.94 KB | None | 0 0
  1. package it.unibo.tw.hibernate;
  2.  
  3. import java.util.Calendar;
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. import org.hibernate.Criteria;
  8. import org.hibernate.Query;
  9. import org.hibernate.Session;
  10. import org.hibernate.Transaction;
  11. import org.hibernate.cfg.Configuration;
  12. import org.hibernate.criterion.Restrictions;
  13.  
  14. public class HibernateTest {
  15.  
  16. public static void main(String[] args){// throws Exception{
  17.  
  18. Session session = new Configuration().configure().buildSessionFactory().openSession();
  19. Transaction tx = null;
  20.  
  21. try {
  22. tx = session.beginTransaction();
  23.  
  24. // Student
  25.  
  26. Student student = new Student();
  27. student.setId(1);
  28. student.setFirstName("Marco");
  29. student.setLastName("Rossi");
  30. Calendar c = Calendar.getInstance();
  31. c.set(1984, 1, 24);
  32. student.setBirthDate(c.getTime());
  33. session.persist(student);
  34.  
  35. student = new Student();
  36. student.setId(2);
  37. student.setFirstName("Giovanni");
  38. student.setLastName("Gialli");
  39. c = Calendar.getInstance();
  40. c.set(1983, 4, 13);
  41. student.setBirthDate(c.getTime());
  42. session.persist(student);
  43.  
  44. tx.commit();
  45.  
  46.  
  47. // richiedo l'elenco degli studenti che hanno cognome "Gialli"
  48. // versione SQL
  49. System.out.println();
  50. System.out.println("query students: sql/hql");
  51.  
  52. // query HQL: il nome della tabella è ottenuto tramite il mapping
  53. // presente nel file XML relativo alla classe Student
  54. Query query = session.createQuery("from "+Student.class.getSimpleName()+" where lastName = ?");
  55.  
  56. // variante SQL: classica query in cui sis pecifica il nome della tabella
  57. //Query query = session.createSQLQuery("select * from students where lastName = ?").addEntity(Student.class);
  58.  
  59. query.setString(0, "Gialli");
  60. List<Student> students = query.list();
  61. System.out.println("students.size() "+ students.size());
  62. Iterator<Student> it = students.iterator();
  63. while(it.hasNext()){
  64. Student studentResult = it.next();
  65. System.out.println(studentResult.getFirstName()+" "+ studentResult.getLastName()+" "+studentResult.getBirthDate());
  66. }
  67.  
  68. // versione Criteria: soluzione completamente object-oriented
  69. System.out.println();
  70. System.out.println("query students: criteria");
  71. Criteria criteria = session.createCriteria(Student.class);
  72. criteria.add(Restrictions.eq("lastName", "Gialli"));
  73. students = criteria.list();
  74. System.out.println("students.size() "+ students.size());
  75. for(Student studentResult : students){
  76. System.out.println(studentResult.getFirstName()+" "+ studentResult.getLastName()+" "+studentResult.getBirthDate());
  77. }
  78.  
  79. }
  80. catch (Exception e1) {
  81. if (tx != null){
  82. try{
  83. tx.rollback();
  84. }
  85. catch(Exception e2){
  86. e2.printStackTrace();
  87. }
  88. }
  89. e1.printStackTrace();
  90. }
  91. finally {
  92. session.close();
  93. }
  94.  
  95. session = new Configuration().configure().buildSessionFactory().openSession();
  96.  
  97. try {
  98. tx = session.beginTransaction();
  99.  
  100. // Student
  101.  
  102. Course course = new Course();
  103. course.setId(1);
  104. course.setName("Tecnologie Web");
  105.  
  106. session.persist(course);
  107.  
  108. course = new Course();
  109. course.setId(2);
  110. course.setName("Fondamenti di Informatica");
  111.  
  112. session.persist(course);
  113.  
  114. tx.commit();
  115.  
  116.  
  117. // richiedo l'elenco degli studenti che hanno cognome "Gialli"
  118. // versione SQL
  119. System.out.println();
  120. System.out.println("query courses: sql/hql");
  121.  
  122. // query HQL: il nome della tabella è ottenuto tramite il mapping
  123. // presente nel file XML relativo alla classe Student
  124. Query query = session.createQuery("from "+Course.class.getSimpleName()+" where name = ?");
  125.  
  126. // variante SQL: classica query in cui sis pecifica il nome della tabella
  127. //Query query = session.createSQLQuery("select * from students where lastName = ?").addEntity(Student.class);
  128.  
  129. query.setString(0, "Tecnologie Web");
  130. List<Course> courses = query.list();
  131. System.out.println("courses.size() "+ courses.size());
  132. Iterator<Course> it = courses.iterator();
  133. while(it.hasNext()){
  134. Course courseResult = it.next();
  135. System.out.println(courseResult.getName());
  136. }
  137.  
  138. // versione Criteria: soluzione completamente object-oriented
  139. System.out.println();
  140. System.out.println("query courses: criteria");
  141. Criteria criteria = session.createCriteria(Course.class);
  142. criteria.add(Restrictions.eq("name", "Tecnologie Web"));
  143. courses = criteria.list();
  144. System.out.println("students.size() "+ courses.size());
  145. for(Course courseResult : courses){
  146. System.out.println(courseResult.getName());
  147. }
  148.  
  149. }
  150. catch (Exception e1) {
  151. if (tx != null){
  152. try{
  153. tx.rollback();
  154. }
  155. catch(Exception e2){
  156. e2.printStackTrace();
  157. }
  158. }
  159. e1.printStackTrace();
  160. }
  161. finally {
  162. session.close();
  163. }
  164.  
  165. session = new Configuration().configure().buildSessionFactory().openSession();
  166.  
  167. try {
  168. tx = session.beginTransaction();
  169.  
  170. // Student
  171.  
  172. Course course = new Course();
  173. course.setId(1);
  174. course.setName("Tecnologie Web");
  175.  
  176. session.persist(course);
  177.  
  178. Course course2 = new Course();
  179. course2.setId(2);
  180. course2.setName("Fondamenti di Informatica");
  181.  
  182. session.persist(course2);
  183.  
  184.  
  185. Student student = new Student();
  186. student.setId(1);
  187. student.setFirstName("Marco");
  188. student.setLastName("Rossi");
  189. Calendar c = Calendar.getInstance();
  190. c.set(1984, 1, 24);
  191. student.setBirthDate(c.getTime());
  192. session.persist(student);
  193.  
  194. SCMapping m= new SCMapping();
  195. m.setCourse(course);
  196. m.setStudent(student);
  197.  
  198. session.persist(m);
  199.  
  200. m = new SCMapping();
  201. m.setCourse(course2);
  202. m.setStudent(student);
  203.  
  204. session.persist(m);
  205.  
  206. tx.commit();
  207.  
  208. // richiedo l'elenco degli studenti che hanno cognome "Gialli"
  209. // versione SQL
  210. System.out.println();
  211. System.out.println("query mappings: sql/hql");
  212.  
  213. // query HQL: il nome della tabella è ottenuto tramite il mapping
  214. // presente nel file XML relativo alla classe Student
  215. Query query = session.createQuery("from "+SCMapping.class.getSimpleName());
  216.  
  217. // variante SQL: classica query in cui sis pecifica il nome della tabella
  218. //Query query = session.createSQLQuery("select * from students where lastName = ?").addEntity(Student.class);
  219.  
  220.  
  221. List<SCMapping> mappings = query.list();
  222. System.out.println("mappings.size() "+ mappings.size());
  223. Iterator<SCMapping> it = mappings.iterator();
  224. while(it.hasNext()){
  225. SCMapping mappingResult = it.next();
  226. System.out.println("Course: "+mappingResult.getCourse()+ " Student: "+mappingResult.getStudent());
  227. }
  228.  
  229. // versione Criteria: soluzione completamente object-oriented
  230. System.out.println();
  231. System.out.println("query courses: criteria");
  232. Criteria criteria = session.createCriteria(SCMapping.class);
  233. criteria.add(Restrictions.eq("course", course));
  234. mappings = criteria.list();
  235. System.out.println("mappings.size() "+ mappings.size());
  236. for(SCMapping mappingResult : mappings){
  237. System.out.println("Course: "+mappingResult.getCourse()+ " Student: "+mappingResult.getStudent());
  238. }
  239.  
  240. }
  241. catch (Exception e1) {
  242. if (tx != null){
  243. try{
  244. tx.rollback();
  245. }
  246. catch(Exception e2){
  247. e2.printStackTrace();
  248. }
  249. }
  250. e1.printStackTrace();
  251. }
  252. finally {
  253. session.close();
  254. }
  255.  
  256. }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement