Consejos: Netbeans Platform, Hibernate u otras persistencias para aplicaciones de escritorio

Buen dìa a todos, estoy empezando a crear un sistema contable para escritorio en Java y estoy trabajando con Netbeans Platform. Me gustarìa que me aconsejaràn sobre que usar persistencia usar si usar Hibernate u otra. Ademàs el sistema que creare podran abrirla multiples personas se que tendre que usar concurrencias para estos casos. Ojala me puedan aconsejar ya que no tengo mucho tiempo programando en Java.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Hibernate

Si no llevas mucho tiempo programando en Java puedes practicar, leer tutoriales, etc. en Internent hay mucha información. Creo si es buena elección usar Hibernate para el manejo de la persistencia.

Imagen de CuicaJavier

Tecnico programador

jeje creo que no me explique bien, si se programar solo que no tengo mucha experiencia haciendo programas para empresas e ahi mi duda sobre que persistencias me serian mas utiles.
PD: Estoy trabajando con Netbeans Platform

Imagen de CuicaJavier

De esta forma estoy trabajando con Netbeans Platform

package com.galileo.netbeans.module;

import com.galileo.netbeans.myentities.Genre;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

   public static EntityManagerFactory EMF;
   public static EntityManager        EM;

   @Override
   public void close() {
      EM.close();
      EMF.close();
   }

   @Override
   public void restored() {

      try {
         EMF = Persistence.createEntityManagerFactory("Cap29JavaLibraryPU");
         EM = EMF.createEntityManager();
      } catch (Throwable ex) {
         System.err.println("Initial EntityManagerFactory creation failed." + ex);
         throw new ExceptionInInitializerError(ex);
      }

      EM.getTransaction().begin();
      EM.merge(new Genre(1, "Techno, Trance & Dance"));
      EM.merge(new Genre(2, "Rock & Pop"));
      EM.merge(new Genre(3, "Country & Classic"));
      EM.getTransaction().commit();
   }
}

//Sus metodos son los siguientes....................................................
package com.galileo.netbeans.module;

import com.galileo.netbeans.myentities.Genre;
import com.galileo.netbeans.myentities.Album;
import java.util.List;
import javax.persistence.Query;

public class DataModel {

   @SuppressWarnings("unchecked")
   public static List<Album> getAlbums() {
      Installer.EM.getTransaction().begin();
      Query q = Installer.EM.createQuery("SELECT a FROM Album a");
      List<Album> list = q.getResultList();
      Installer.EM.getTransaction().commit();

      return list;
   }

   @SuppressWarnings("unchecked")
   public static List<Genre> getGenres() {
      Installer.EM.getTransaction().begin();
      Query q = Installer.EM.createQuery("SELECT g FROM Genre g");
      List<Genre> list = q.getResultList();
      Installer.EM.getTransaction().commit();

      return list;
   }

   public static void updateAlbum(Album album) {
      Installer.EM.getTransaction().begin();
      Installer.EM.persist(album);
      Installer.EM.getTransaction().commit();
   }

   public static void insertAlbum(Album album) {
      updateAlbum(album);

   }

   public static void deleteAlbum(Album album) {
      Installer.EM.getTransaction().begin();
      Installer.EM.remove(album);
      Installer.EM.getTransaction().commit();
   }
   
}