Formas de persistencia

olá, qual a diferença entre estas duas formas de persistir dados ?
Uma precisa do persistence.xml e a outra do hibernate.cfg.xml ?
A segunda usa EJB3 ?

sessao = HibernateUtil.   
            transacao = sessao.beginTransaction();   
            sessao.save(obj);   
            sessao.flush();   
            transacao.commit();   
            sessao.close();   

e este :

em.getTransaction().begin();   
		try {   
			em.persist(object);   
			em.getTransaction().commit();   
		} catch (Exception e) {   
			e.printStackTrace();   
			em.getTransaction().rollback();   
		} finally {   
			em.close();   
		}