package com.infinitescrolling.server.model; import org.hibernate.*; import org.hibernate.criterion.Restrictions; import java.util.Iterator; import java.util.List; public class DudeDao { public Integer addDude(String fname, String lname) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; Integer dudeID = null; try { tx = session.beginTransaction(); Dude dude = new Dude(); dude.setFirstName(fname); dude.setLastName(lname); dudeID = (Integer) session.save(dude); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } return dudeID; } public void saveDude(Dude dude) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.save(dude); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public void saveList(List<Dude> dudeList) { StatelessSession session = HibernateUtil.getSessionFactory().openStatelessSession(); Transaction tx = null; try { tx = session.beginTransaction(); for (Dude d : dudeList) session.insert(d); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public void listDudes() { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); List dudes = session.createQuery("FROM DUDE").list(); for (Iterator iterator = dudes.iterator(); iterator.hasNext(); ) { Dude dude = (Dude) iterator.next(); System.out.print("First Name: " + dude.getFirstName()); System.out.println(" Last Name: " + dude.getLastName()); } tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public Dude findById(int DudeID) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; Dude dude = null; try { tx = session.beginTransaction(); dude = (Dude) session.get(Dude.class, DudeID); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } return dude; } public List<Dude> getListByRange(int start, int end) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = null; List<Dude> dudeList = null; try { tx = session.beginTransaction(); dudeList = session.createCriteria(Dude.class) .add(Restrictions.ge("id", start)) .add(Restrictions.lt("id", end)).list(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } return dudeList; } public List<Dude> getSortedListByRange(int start, int end, String column, boolean asc) { if (column == null) { return getListByRange(start, end); } Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = null; List<Dude> dudeList = null; String order = asc ? "ASC" : "DESC"; String sql = "SELECT * FROM DUDE ORDER BY " + column + " " + order + " LIMIT " + String.valueOf(end - start) + " OFFSET " + String.valueOf(start); try { tx = session.beginTransaction(); Query query = session.createSQLQuery(sql).addEntity(Dude.class); dudeList = query.list(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } return dudeList; } public void updateDude(Integer DudeID) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Dude dude = (Dude) session.get(Dude.class, DudeID); session.update(dude); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public void clearTable() { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.createSQLQuery("DROP TABLE DUDE IF EXISTS").executeUpdate(); //session.createSQLQuery("CHECKPOINT DEFRAG").executeUpdate(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } // Intentionally bypassing Hibernate schema creation on update public void createSchema() { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.createSQLQuery("CREATE MEMORY TABLE PUBLIC.DUDE(ID INTEGER NOT NULL PRIMARY KEY,FNAME VARCHAR(255),LNAME VARCHAR(255))").executeUpdate(); session.createSQLQuery("CREATE INDEX FNAMEINDEX ON PUBLIC.DUDE(FNAME)").executeUpdate(); session.createSQLQuery("CREATE INDEX LNAMEINDEX ON PUBLIC.DUDE(LNAME)").executeUpdate(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public void prepare() { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.createSQLQuery("SET FILES LOG FALSE").executeUpdate(); session.createSQLQuery("SET DATABASE GC 10000").executeUpdate(); session.createSQLQuery("SET FILES NIO SIZE 512").executeUpdate(); session.createSQLQuery("SET DATABASE TRANSACTION CONTROL MVCC").executeUpdate(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } public void deleteDude(Integer DudeID) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Dude dude = (Dude) session.get(Dude.class, DudeID); session.delete(dude); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } }