public static void main(String[] args) { HibernateUtils.start(); HibernateUtils.startTransaction(); Pessoa p = new Pessoa(); p.setNome("Pedro"); HibernateUtils.getSession().save(p); p.setNome("Pedro Batista"); // Nem 'Pedro' nem 'Pedro Batista' será inserido! HibernateUtils.rollbackTransaction(); }
/** delete data by raw SQL */ public void updateBySQL(String sql) { Session session = HibernateUtils.getSession(); try { sql = sql + conditionBuilder.build(); this.queryBuilder.buildSQLQuery(session, sql).executeUpdate(); } catch (Throwable e) { LOGGER.error("fail to update, sql: {}, list: {}", sql, e); throw e; } finally { HibernateUtils.commit(session); // ensure session is closed } }
/** * method to execute update * * @param clazz class to update * @param setClause such as 'username=:username,password=:password' and so on */ public void update(Class<?> clazz, String setClause) { Session session = HibernateUtils.getSession(); String hql = "UPDATE " + clazz.getSimpleName() + " SET " + setClause + " " + conditionBuilder.build(); try { this.queryBuilder.buildQuery(session, hql).executeUpdate(); } catch (Throwable e) { LOGGER.error("fail to update, hql: {}, info: {}", hql, e); throw e; } finally { HibernateUtils.commit(session); // ensure session is closed } }
public static void inserePessoas() { HibernateUtils.startTransaction(); Pessoa p = null; Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR, -101); for (int i = 1; i <= 10; i++) { p = new Pessoa(); p.setNome(Integer.toString(i)); c.add(Calendar.YEAR, 1); p.setNascimento((Calendar) c.clone()); p.setSexo(i % 2 == 0 ? 'M' : 'F'); p.setCasado(i % 2 == 0); p.setPeso(i); HibernateUtils.getSession().save(p); } HibernateUtils.commitTransaction(); }
/** * Получение следующего вопроса * * @param questionKind Маска поиска вопроса. Константы - в определении класса <br> * ВНИМАНИЕ! Сейчас - не работает! * @return Следующий вопрос или null в случае проблем */ public static Question getNextQuestion(int questionKind) { Question res = null; // Session sess = HibernateUtils.getSession(); // Делаем хитрую сортировку. Пытаемся искать вопросы через random // Вопросы пытаемся искать до 3-х раз... int tries = 0; Criteria criteria; while (tries < 3) { double rand = Math.random(); criteria = sess.createCriteria(Question.class) .addOrder(Order.asc("rand")) .add(Restrictions.eq("played", false)) .add(Restrictions.ge("rand", rand)); criteria.setMaxResults(1); res = (Question) criteria.uniqueResult(); if (res == null) { tries++; rand /= 2; } else { break; } } if (res == null) { // Значит за 3 попытки не смогли найти вопрос - значит просто // выберем первый criteria = sess.createCriteria(Question.class) .addOrder(Order.asc("rand")) .add(Restrictions.eq("played", false)); criteria = doFormKindsCriteria(criteria, questionKind); criteria.setMaxResults(1); res = (Question) criteria.uniqueResult(); } // Отладочное // Question res = new Question(); // res.setChampionship("ЧГК-микст \"Кубок Аленки - 2011\" (Санкт-Петербург)"); // res.setDate("07-Jun-2011"); // res.setInfo("Посвящено двухлетию Елены Львовны Орловой. Авторы благодарят за\n" // + // "тестирование и ценные советы Евгения Рубашкина, Асю Самойлову, Дмитрия\n" // + // "Карякина, Диану Ильягуеву, Анну Парфёнову, Сергея Коновалова, Ирину\n" // + // "Медноногову, Игоря Бахарева, Владимира Севриновского, Екатерину и\n" // + "Станислава Мереминских, Константина Изъюрова."); // res.setRound("1 тур"); // res.setQuestionNum("Вопрос 1:"); // res.setQuestion("(pic: 20110432.jpg) (pic: 20000001.gif)\n" // + "(aud: 20110001.mp3) (aud: 20050001.mp3)\n" // + "Тезка этих девочек, появившаяся на свет в Петербурге, по мнению\n" // + // "некоторых остряков, является однофамилицей советского политического\n" // + "деятеля. Назовите имя и отчество этого деятеля."); // res.setAnswer("Надежда Константиновна."); // res.setComment("Раздатка изображает обертки шоколадки \"Аленка\" разных лет. Петербургская\n" // + // "\"Фабрика им. Крупской\" выпускает шоколадки \"Крупская Аленка\"."); // res.setSource("1. http://www.alenka.ru/museum/\n" // + "2. http://www.uralweb.ru/pages/article.4455.html"); // res.setAuthor("Лев Орлов и Светлана Орлова"); return res; }