예제 #1
0
  public void saveEvent(Event event) {
    Event event1 = getEvent(event);

    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      if (event1 == null) {
        Transaction transaction = session.beginTransaction();
        try {
          session.save(event);
          transaction.commit();
        } catch (HibernateException e) {
          transaction.rollback();
          e.printStackTrace();
        }
      } else {
        Transaction transaction = session.beginTransaction();
        try {
          session.update(event);
          transaction.commit();
        } catch (HibernateException e) {
          transaction.rollback();
          e.printStackTrace();
        }
      }
    } finally {
      if (session.isOpen()) {
        session.flush();
        session.disconnect();
        session.close();
      }
    }
  }
예제 #2
0
 public void saveEventPassesRequest(EventNumberOfPassesRequest eventNumberOfPassesRequest) {
   Session session = SessionFactoryUtil.getInstance().getCurrentSession();
   try {
     Transaction transaction = session.beginTransaction();
     List result =
         session
             .createQuery(
                 "from EventNumberOfPassesRequest as eventNumberOfPassesRequest "
                     + "where eventNumberOfPassesRequest.idevent="
                     + eventNumberOfPassesRequest.getIdevent()
                     + " and eventNumberOfPassesRequest.iduser="
                     + eventNumberOfPassesRequest.getIduser())
             .list();
     transaction.commit();
     if (result != null && result.size() > 0) {
       Session session1 = SessionFactoryUtil.getInstance().getCurrentSession();
       Transaction transaction1 = session1.beginTransaction();
       for (Object o : result) {
         session1.delete(o);
       }
       transaction1.commit();
     }
   } finally {
     if (session.isOpen()) {
       session.disconnect();
       session.close();
     }
   }
   saveObject(eventNumberOfPassesRequest);
 }
예제 #3
0
 public void savePartnerRequest(ActivityPartnerRequest activityPartnerRequest) {
   Session session = SessionFactoryUtil.getInstance().getCurrentSession();
   try {
     Transaction transaction = session.beginTransaction();
     List result =
         session
             .createQuery(
                 "from ActivityPartnerRequest as partnerrequest "
                     + "where partnerrequest.idactivity="
                     + activityPartnerRequest.getIdactivity()
                     + " and partnerrequest.iduser="
                     + activityPartnerRequest.getIduser())
             .list();
     transaction.commit();
     if (result != null && result.size() > 0) {
       Session session1 = SessionFactoryUtil.getInstance().getCurrentSession();
       Transaction transaction1 = session1.beginTransaction();
       for (Object o : result) {
         session1.delete(o);
       }
       transaction1.commit();
     }
   } finally {
     if (session.isOpen()) {
       session.disconnect();
       session.close();
     }
   }
   saveObject(activityPartnerRequest);
 }
예제 #4
0
  public void setUp(short pageSize, IndexFactory<Long, Integer> indexType) throws IOException {
    File path = File.createTempFile("test-mixed", ".tmp", new File("test"));
    path.delete();
    System.out.println("file: " + path);

    m_pageSize = pageSize;
    m_dataSize = (short) (pageSize - (MAGIC.length + Long.SIZE / 8));
    m_pageFile = createFileFactory(path, pageSize);
    m_indexFactory = indexType;

    // create the index
    Transaction tx = m_pageFile.tx();
    try {
      Index<Long, Integer> index = m_indexFactory.create(tx);

      // seed the index with some metadata about the test
      index.put(-2L, (int) m_pageSize);
      index.put(-3L, (int) m_dataSize);
      index.put(-4L, MAGIC.length);
    } finally {
      tx.commit();
    }

    m_pageFile.flush();
  }
예제 #5
0
  public EventNumberOfPassesRequest getEventPassesRequest(User user, Event event) {
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = session.beginTransaction();
      List result =
          session
              .createQuery(
                  "from EventNumberOfPassesRequest as eventNumberOfPassesRequest "
                      + "where eventNumberOfPassesRequest.idevent="
                      + event.getIdevent()
                      + " and eventNumberOfPassesRequest.iduser="
                      + user.getIduser())
              .list();
      transaction.commit();

      if (result != null && result.size() > 0) {
        return (EventNumberOfPassesRequest) result.get(0);
      }
    } finally {
      if (session.isOpen()) {
        session.disconnect();
        session.close();
      }
    }
    return null;
  }
  @Test(groups = "dev")
  public void sinkSingleModelTest() throws EventDeliveryException {
    ctx.put(MongoSink.MODEL, MongoSink.CollectionModel.single.name());

    MongoSink sink = new MongoSink();
    Configurables.configure(sink, ctx);

    sink.setChannel(channel);
    sink.start();

    Transaction tx = channel.getTransaction();
    tx.begin();
    JSONObject msg = new JSONObject();
    msg.put("name", "test");
    msg.put("age", 11);
    msg.put("birthday", new Date().getTime());

    Event e = EventBuilder.withBody(msg.toJSONString().getBytes());
    channel.put(e);
    tx.commit();
    tx.close();

    sink.process();
    sink.stop();

    DB db = mongo.getDB("test_events");
    DBCollection collection = db.getCollection("test_log");
    DBCursor cursor = collection.find(new BasicDBObject(msg));
    assertTrue(cursor.hasNext());
    DBObject dbObject = cursor.next();
    assertNotNull(dbObject);
    assertEquals(dbObject.get("name"), msg.get("name"));
    assertEquals(dbObject.get("age"), msg.get("age"));
    assertEquals(dbObject.get("birthday"), msg.get("birthday"));
  }
  /** {@inheritDoc} */
  @Override
  public void txEnd(GridCacheTx tx, boolean commit) throws GridException {
    init();

    Session ses = tx.removeMeta(ATTR_SES);

    if (ses != null) {
      Transaction hTx = ses.getTransaction();

      if (hTx != null) {
        try {
          if (commit) {
            ses.flush();

            hTx.commit();
          } else hTx.rollback();

          if (log.isDebugEnabled())
            log.debug("Transaction ended [xid=" + tx.xid() + ", commit=" + commit + ']');
        } catch (HibernateException e) {
          throw new GridException(
              "Failed to end transaction [xid=" + tx.xid() + ", commit=" + commit + ']', e);
        } finally {
          ses.close();
        }
      }
    }
  }
예제 #8
0
  @Override
  public ArrayList<User> getAllUsers() throws Exception {
    dLog.info("Entering method getAllUsers");
    ArrayList<User> result = new ArrayList<User>();
    Session session = null;

    try {
      session = getSession();
      session.clear();
      Transaction tranx = session.beginTransaction();

      String hql = "select from User";
      Query query = session.createQuery(hql);
      List<?> list = query.list();

      for (int n = 0; n < list.size(); n++) {
        result.add((User) list.get(n));
      }

      tranx.commit();
      session.flush();
      session.evict(User.class);
    } catch (Exception e) {
      dLog.error("Exception in getAllUsers", e);
    } finally {
      // ensure that session is close regardless of the errors in try/catch
      if (session != null) {
        session.close();
      }
    }

    return result;
  }
예제 #9
0
  public void addAntiCount() {
    String ip = this.request.getClientIP();
    String id = $V("ID");

    Transaction trans = new Transaction();
    ZCCommentSchema task = new ZCCommentSchema();

    task.setID(id);
    task.fill();
    String supportAntiIP = task.getSupportAntiIP();
    if ((XString.isNotEmpty(supportAntiIP)) && (supportAntiIP.indexOf(ip) >= 0)) {
      this.response.setMessage("您已经评论过,谢谢支持!");
      this.response.put("count", task.getAntiCount());
      return;
    }
    long count = task.getAntiCount();

    task.setAntiCount(count + 1L);
    task.setSupportAntiIP((XString.isEmpty(supportAntiIP) ? "" : supportAntiIP) + ip);
    trans.add(task, OperateType.UPDATE);
    if (trans.commit()) {
      this.response.setStatus(1);
      this.response.setMessage("您的评论提交成功!");
      this.response.put("count", count + 1L);
    } else {
      this.response.setLogInfo(0, "审核失败");
    }
  }
예제 #10
0
  @Test
  public void testCursorPutAndGet() throws Exception {
    k1.putLong(0, 14);
    v1.putLong(0, 15);
    k2.putLong(0, 16);
    v2.putLong(0, 17);

    try (Transaction tx = env.createWriteTransaction()) {
      try (Cursor cursor = db.openCursor(tx)) {
        cursor.put(k1, v1, 0);
        cursor.put(k2, v2, 0);
      }
      tx.commit();
    }

    DirectBuffer k = new DirectBuffer();
    DirectBuffer v = new DirectBuffer();

    try (Transaction tx = env.createReadTransaction()) {
      try (Cursor cursor = db.openCursor(tx)) {
        cursor.position(k, v, GetOp.FIRST);
        assertThat(k.getLong(0), is(14L));
        assertThat(v.getLong(0), is(15L));

        cursor.position(k, v, GetOp.NEXT);
        assertThat(k.getLong(0), is(16L));
        assertThat(v.getLong(0), is(17L));
      }
    }
  }
예제 #11
0
  public User getUser(String username) {
    User result = null;
    Session session;
    Object user;
    session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = null;
      user = null;
      try {
        transaction = session.beginTransaction();
        Query query =
            session.createQuery("from User as user where user.userName='******'");
        user = query.uniqueResult();
        transaction.commit();
      } catch (HibernateException e) {
        transaction.rollback();
        e.printStackTrace();
      }

      if (user != null) {
        result = (User) user;
      }
    } finally {
      if (session.isOpen()) {
        if (session.isOpen()) {
          session.disconnect();
          session.close();
        }
      }
    }
    return result;
  }
예제 #12
0
 public List<Activity> getActivities(Event parent) {
   List<Activity> result = new ArrayList<Activity>();
   Session session = SessionFactoryUtil.getInstance().getCurrentSession();
   try {
     Transaction transaction = session.beginTransaction();
     Object event =
         session
             .createQuery("from Event as event where event.idevent= " + parent.getIdevent())
             .uniqueResult();
     transaction.commit();
     if (event != null) {
       Event eventEntity = (Event) event;
       Collection<Activity> activityList = eventEntity.getActivities();
       for (Activity activity : activityList) {
         result.add(activity);
       }
     }
   } finally {
     if (session.isOpen()) {
       session.flush();
       session.disconnect();
       session.close();
     }
   }
   return result;
 }
예제 #13
0
  public Location getLocation(int id) {
    Location result = null;
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = session.beginTransaction();
      Object o =
          session
              .createQuery("from Location as location where location.idlocation = " + id)
              .uniqueResult();

      transaction.commit();
      if (o != null) {
        if (o instanceof Location) {
          Location location = (Location) o;
          result = new Location();
          result.setName(location.getName());
          result.setIdlocation(location.getIdlocation());
        }
      }
    } finally {
      if (session.isOpen()) {
        session.flush();
        session.disconnect();
        session.close();
      }
    }
    return result;
  }
예제 #14
0
  public ClassificationValue getClassification(String value) {
    ClassificationValue result = null;
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = session.beginTransaction();

      Object o =
          session
              .createQuery(
                  "from ClassificationValue as classificationValue where classificationValue.value like '"
                      + value
                      + "'")
              .uniqueResult();

      transaction.commit();
      if (o != null) {
        if (o instanceof ClassificationValue) {
          result = (ClassificationValue) o;
        }
      }
    } finally {
      if (session.isOpen()) {
        session.flush();
        session.disconnect();
        session.close();
      }
    }
    return result;
  }
예제 #15
0
  public Location getLocation(String s) {
    Location result = null;
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = session.beginTransaction();
      Object o =
          session
              .createQuery("from Location as location where location.name like '" + s + "'")
              .uniqueResult();

      transaction.commit();
      if (o != null) {
        if (o instanceof Location) {
          result = (Location) o;
        }
      }
    } finally {
      if (session.isOpen()) {
        session.flush();
        session.disconnect();
        session.close();
      }
    }
    return result;
  }
예제 #16
0
  public List<Team> getTeams() {
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    List result = null;
    try {
      Transaction transaction = session.beginTransaction();
      result = session.createQuery("from Team").list();
      session.flush();
      transaction.commit();
    } catch (HibernateException e) {
      e.printStackTrace();
    } finally {
      if (session.isOpen()) {
        session.close();
      }
    }

    List<Team> teams = new ArrayList<Team>();
    for (Object o : result) {
      if (o instanceof Team) {
        teams.add((Team) o);
      }
    }

    return teams;
  }
  @Test(groups = "dev")
  public void autoWrapTest() throws EventDeliveryException {
    ctx.put(MongoSink.AUTO_WRAP, Boolean.toString(true));
    ctx.put(MongoSink.DB_NAME, "test_wrap");

    MongoSink sink = new MongoSink();
    Configurables.configure(sink, ctx);

    sink.setChannel(channel);
    sink.start();

    Transaction tx = channel.getTransaction();
    tx.begin();
    String msg =
        "2012/10/26 11:23:08 [error] 7289#0: *6430831 open() \"/usr/local/nginx/html/50x.html\" failed (2: No such file or directory), client: 10.160.105.161, server: sg15.redatoms.com, request: \"POST /mojo/ajax/embed HTTP/1.0\", upstream: \"fastcgi://unix:/tmp/php-fpm.sock:\", host: \"sg15.redatoms.com\", referrer: \"http://sg15.redatoms.com/mojo/mobile/package\"";

    Event e = EventBuilder.withBody(msg.getBytes());
    channel.put(e);
    tx.commit();
    tx.close();

    sink.process();
    sink.stop();

    DB db = mongo.getDB("test_wrap");
    DBCollection collection = db.getCollection("test_log");
    DBCursor cursor = collection.find(new BasicDBObject(MongoSink.DEFAULT_WRAP_FIELD, msg));
    assertTrue(cursor.hasNext());
    DBObject dbObject = cursor.next();
    assertNotNull(dbObject);
    assertEquals(dbObject.get(MongoSink.DEFAULT_WRAP_FIELD), msg);
    mongo.dropDatabase("test_wrap");
  }
예제 #18
0
  @Test
  public void testCursorSeekRange() throws Exception {
    ByteBuffer byteBuffer = ByteBuffer.allocateDirect(8);
    k1.putLong(0, 18);
    v1.putLong(0, 19);
    k2.putLong(0, 20);
    v2.putLong(0, 21);

    try (Transaction tx = env.createWriteTransaction()) {
      try (Cursor cursor = db.openCursor(tx)) {
        cursor.put(k1, v1, 0);
        cursor.put(k2, v2, 0);
      }
      tx.commit();
    }

    try (Transaction tx = env.createReadTransaction()) {
      try (Cursor cursor = db.openCursor(tx)) {
        DirectBuffer k = new DirectBuffer(byteBuffer);
        DirectBuffer v = new DirectBuffer();
        k.putLong(0, 10);

        cursor.seekPosition(k, v, SeekOp.RANGE);
        assertThat(k.getLong(0), is(18L));
        assertThat(v.getLong(0), is(19L));

        k.wrap(byteBuffer);
        k.putLong(0, 19);
        cursor.seekPosition(k, v, SeekOp.RANGE);
        assertThat(k.getLong(0), is(20L));
        assertThat(v.getLong(0), is(21L));
      }
    }
  }
예제 #19
0
 @Test
 public void testIteration() {
   k1.putLong(0, 18);
   v1.putLong(0, 19);
   k2.putLong(0, 20);
   v2.putLong(0, 21);
   db.put(k1, v1, 0);
   db.put(k2, v2, 0);
   List<Long> result = new ArrayList<>();
   try (Transaction tx = env.createWriteTransaction()) {
     try (Cursor cursor = db.openCursor(tx)) {
       DirectBuffer k = new DirectBuffer();
       DirectBuffer v = new DirectBuffer();
       for (int rc = cursor.position(k, v, FIRST);
           rc != NOTFOUND;
           rc = cursor.position(k, v, NEXT)) {
         result.add(k.getLong(0));
       }
     }
     tx.commit();
   }
   assertThat(result.size(), is(2));
   assertThat(result.get(0), is(18L));
   assertThat(result.get(1), is(20L));
 }
예제 #20
0
  public boolean createUser(User user) {
    boolean result = false;
    if (user.getEmployeeId() != null) {
      User userById = getUserByEmployeeId(user.getEmployeeId());
      if (userById != null) {
        MessageUtils.createMessage("Brugeren eksisterer allerede.");
        return false;
      }
    }
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    Transaction transaction = session.beginTransaction();
    try {
      session.saveOrUpdate(user);
      result = true;
      session.flush();
      transaction.commit();
    } catch (StaleObjectStateException sose) {
      System.out.println("StaleObjectException");
      transaction.rollback();
    } catch (HibernateException e) {
      e.printStackTrace();
      transaction.rollback();
      result = false;
    } finally {
      if (session.isOpen()) {
        session.close();
      }
    }

    return result;
  }
예제 #21
0
 public void Verify() {
   String ID = $V("ID");
   String Type = $V("Type");
   String IDs = $V("IDs");
   if ((XString.isNotEmpty(ID)) && (XString.isEmpty(IDs))) {
     ZCCommentSchema comment = new ZCCommentSchema();
     comment.setID(ID);
     comment.fill();
     if (Type.equals("Pass")) comment.setVerifyFlag("Y");
     else if (Type.equals("NoPass")) {
       comment.setVerifyFlag("N");
     }
     comment.setVerifyUser(User.getUserName());
     comment.setVerifyTime(new Date());
     if (comment.update()) this.response.setLogInfo(1, "审核成功");
     else this.response.setLogInfo(0, "审核失败");
   } else if ((XString.isNotEmpty(IDs)) && (XString.isEmpty(ID))) {
     ZCCommentSchema comment = new ZCCommentSchema();
     ZCCommentSet set = comment.query(new QueryBuilder("where ID in (" + IDs + ")"));
     Transaction trans = new Transaction();
     for (int i = 0; i < set.size(); i++) {
       comment = set.get(i);
       if (Type.equals("Pass")) comment.setVerifyFlag("Y");
       else if (Type.equals("NoPass")) {
         comment.setVerifyFlag("N");
       }
       comment.setVerifyUser(User.getUserName());
       comment.setVerifyTime(new Date());
       trans.add(comment, OperateType.UPDATE);
     }
     if (trans.commit()) this.response.setLogInfo(1, "审核成功");
     else this.response.setLogInfo(0, "审核失败");
   }
 }
예제 #22
0
  public ActivityPartnerRequest getPartnerRequest(User user, Activity activity) {
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    try {
      Transaction transaction = session.beginTransaction();
      List result =
          session
              .createQuery(
                  "from ActivityPartnerRequest as partnerrequest "
                      + "where partnerrequest.idactivity="
                      + activity.getIdactivity()
                      + " and partnerrequest.iduser="
                      + user.getIduser())
              .list();
      transaction.commit();

      if (result != null && result.size() > 0) {
        return (ActivityPartnerRequest) result.get(0);
      }
    } finally {
      if (session.isOpen()) {
        session.disconnect();
        session.close();
      }
    }
    return null;
  }
예제 #23
0
  @Override
  public final void store(byte[] value) throws IOException {
    byte[] key = mKey;
    if (key == null) {
      throw new IllegalStateException("Cursor position is undefined");
    }

    try {
      Transaction txn = mTxn;
      if (txn == null) {
        txn = mTree.mDatabase.newAlwaysRedoTransaction();
        try {
          if (txn.lockMode() != LockMode.UNSAFE) {
            txn.lockExclusive(mTree.mId, key, keyHash());
          }
          store(txn, leafExclusive(), value, false);
          txn.commit();
        } catch (Throwable e) {
          txn.reset();
          throw e;
        }
      } else {
        if (txn.lockMode() != LockMode.UNSAFE) {
          txn.lockExclusive(mTree.mId, key, keyHash());
        }
        store(txn, leafExclusive(), value, false);
      }
    } catch (Throwable e) {
      throw handleException(e, false);
    }
  }
예제 #24
0
 @Override
 public void deleteSubscription(int userId, int forumId) {
   // TODO Auto-generated method stub
   Session session = this.sessionFactory.openSession();
   Transaction tx = null;
   try {
     tx = session.beginTransaction();
     Query query =
         session.createQuery(
             "delete from Subscription where userId = :userId and forumId = :forumId");
     query.setParameter("userId", userId);
     query.setParameter("forumId", forumId);
     int result = query.executeUpdate();
     System.out.println("Execute query..");
     if (result > 0) {
       tx.commit();
       // System.out.println("Subscription Removed..");
     } else {
       // System.out.println("Subscription does not exist");
       tx.rollback();
     }
   } catch (HibernateException e) {
     if (tx != null) {
       tx.rollback();
       e.printStackTrace();
     }
   } finally {
     session.close();
   }
 }
예제 #25
0
  @Override
  public boolean storeUser(User u) throws Exception {
    dLog.info("Entering method storeUser | User ID: " + u.getId());
    boolean result = false;
    Session session = null;

    try {
      // ensure we were passed a valid object before attempting to write
      if (u.validate()) {
        session = getSession();
        Transaction tranx = session.beginTransaction();
        session.save(u);
        tranx.commit();
        result = tranx.wasCommitted();
        dLog.info("Was committed: " + result);
      }
    } catch (Exception e) {
      dLog.error("Exception in storeUser", e);
    } finally {
      // ensure that session is close regardless of the errors in try/catch
      if (session != null) {
        session.close();
      }
    }

    return result;
  }
예제 #26
0
  @Override
  public void save(Group group) throws TransactionFailException {
    Session session = null;
    Transaction tx = null;

    try {
      session = sessionFactory.openSession();
      tx = session.beginTransaction();

      if (group.getId() == null) {
        session.persist(group);
      } else {
        session.saveOrUpdate(group);
      }

      tx.commit();

    } catch (Exception e) {
      e.printStackTrace();
    } finally {

      if (!tx.wasCommitted()) {
        tx.rollback();

        session.close();
        throw new TransactionFailException();
      }

      session.close();
    }
  }
예제 #27
0
 public void save(Treatment treatment) {
   Session session = this.sessionFactory.openSession();
   Transaction tx = session.beginTransaction();
   session.persist(treatment);
   tx.commit();
   session.close();
 }
예제 #28
0
  public void put(WebURL url) throws DatabaseException {

    /*
     * The key that is used for storing URLs determines the order
     * they are crawled. Lower key values results in earlier crawling.
     * Here our keys are 6 bytes. The first byte comes from the URL priority.
     * The second byte comes from depth of crawl at which this URL is first found.
     * The rest of the 4 bytes come from the docid of the URL. As a result,
     * URLs with lower priority numbers will be crawled earlier. If priority
     * numbers are the same, those found at lower depths will be crawled earlier.
     * If depth is also equal, those found earlier (therefore, smaller docid) will
     * be crawled earlier.
     */
    byte[] keyData = new byte[6];
    keyData[0] = url.getPriority();
    keyData[1] = (url.getDepth() > Byte.MAX_VALUE ? Byte.MAX_VALUE : (byte) url.getDepth());
    Util.putIntInByteArray(url.getDocid(), keyData, 2);

    DatabaseEntry value = new DatabaseEntry();
    webURLBinding.objectToEntry(url, value);
    Transaction txn;
    if (resumable) {
      txn = env.beginTransaction(null, null);
    } else {
      txn = null;
    }
    urlsDB.put(txn, new DatabaseEntry(keyData), value);
    if (resumable) {
      if (txn != null) {
        txn.commit();
      }
    }
  }
예제 #29
0
  @Override
  public void saveEventDetails(Event event) {
    // TODO Auto-generated method stub

    // Opening a session to create a database connection
    Session session = this.sessionFactory.openSession();

    // for CRUD operations, we need to create a transaction
    Transaction tx = null;

    // adding a try catch block for maintaining the atomicity of transaction
    try {
      tx = session.beginTransaction();
      System.out.println("DbHelper..saveEventDetails");

      // session save inserts the object into DB
      session.save(event);

      tx.commit();
      System.out.println("Event saved");
    } catch (HibernateException e) {
      if (tx != null) {
        tx.rollback();
        e.printStackTrace();
      }
    } finally {
      session.close();
    }
  }
예제 #30
0
  @Override
  public void delete(Group group) throws TransactionFailException {
    Session session = null;
    Transaction tx = null;

    try {
      session = sessionFactory.openSession();
      tx = session.beginTransaction();

      session.delete(group);

      tx.commit();

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (!tx.wasCommitted()) {
        tx.rollback();

        session.close();

        throw new TransactionFailException();
      }

      session.close();
    }
  }