Hibernate em Rede Intranet

E ai pessoal algum de vcs trabalha com Hibernate e JPA em redes intranets ? estou com erros quando atualiza em uma maquina nao atualiza em outra. alguém pode me dar um help ?

Teoricamente o escopo aonde a aplicação que usa JPA é visível não faz a menor diferença. O que está acontecendo? Pode descrever o problema com mais detalhes?

Tenho uma aplicação que acessa o mesmo banco de vários pcs e não atualiza os dados das sessoes não se atualizam Ex: PC 1 muda o status de um item ; PC2 não sabe que o status foi atualizado;
usei o refresh() no objeto e funcionou mas gera uma lentidão devido ao tamanho da lista
que tem que ser atualizada demora de 30 a 50 segundos para atualizar essa lista e com isso clientes estão reclamando da demora para abrir a tela.

Esse é um problema normal que vai acontecer quando muitas aplicações acessam um banco de dados diretamente. É mais uma das diversas situações na nossa área onde uma análise é necessária para decidir entre performance da aplicação e precisão dos dados.

Se você precisa que as atualizações sejam propagadas o mais rápido possível, você vai perder um pouco de performance. Ficar dando refresh talvez não seja tão interessante, mas podem haver soluções um pouco diferentes. Que tal criar um gateway de dados, uma aplicação que faz o acesso ao DB de forma exclusiva? Dessa forma, como todo o acesso aos dados passa por essa camada, você pode se beneficiar de cache, por exemplo.

É apenas uma ideia, tenho certeza que existem mais delas, pois é um problema comum.

Poste as configurações do hibernate, sem elas fica difícil ter ideia do que está de fato ocorrendo. Com essas poucas informações eu chutaria que o seu problema está relacionado ao cache de segundo nível.

Estou pensando nessa possibilidade só que demanda um pouco de tempo e está corrido no momento queria algo mais simples.

Ai está minha classe de configuração do hibernate.

package br.com.gourmet7pos.connector;

import br.com.gourmet7pos.model.;
import static br.com.gourmet7pos.util.Util.
;
import org.hibernate.Cache;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

private static SessionFactory factory;
private static final ThreadLocal sessionThread = new ThreadLocal();
private static final ThreadLocal transactionThread = new ThreadLocal();

public static Session getSession() {
    if (factory == null || factory.isClosed()) {
        factory = createFactory();
    }
    Session session = (Session) sessionThread.get();
    if ((session == null) || (!(session.isOpen()))) {
        session = factory.openSession();
        sessionThread.set(session);
    }
    return ((Session) sessionThread.get());
}

public static void clearCache(){
        Session session = getSession();
        if(session != null){
            session.clear();
        }
        
        Cache cache = factory.getCache();
        if(cache != null){
            cache.evictAllRegions();
        }
}

public static void closeSession() {
    Session session = (Session) sessionThread.get();
    if ((session != null) && (session.isOpen())) {
        sessionThread.set(null);
        session.close();
        factory.close();
    }
}

public static void beginTransaction() {
    Transaction transaction = getSession().beginTransaction();
    transactionThread.set(transaction);
}

public static void commitTransaction() {
    Transaction transaction = (Transaction) transactionThread.get();
    if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
        transaction.commit();
        transactionThread.set(null);
    }
}

public static void rollbackTransaction() {
    Transaction transaction = (Transaction) transactionThread.get();
    if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
        transaction.rollback();
        transactionThread.set(null);
    }
}

static {
    createFactory();
}

static SessionFactory createFactory() {
    try {
        return factory = new AnnotationConfiguration()
                .setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect")
                .setProperty("hibernate.connection.driver_class", "org.postgresql.Driver")
                .setProperty("hibernate.connection.url", DB)
                .setProperty("hibernate.connection.username", USER_NAME)
                .setProperty("hibernate.connection.password", PASSWORD)
                .setProperty("hibernate.hbm2ddl.auto", "update")
                .setProperty("hibernate.c3p0.max_size", "20")
                .setProperty("hibernate.c3p0.min_size", "5")
                .setProperty("hibernate.c3p0.timeout", "300")
                .setProperty("hibernate.c3p0.max_statements", "50")
                .setProperty("hibernate.c3p0.idle_test_period", "3000")
                .setProperty("hibernate.show_sql", "false")
                //                    .setProperty("hibernate.c3p0.acquire_increment", "2")
                .setProperty("show_sql", "false")
                .setProperty("use_outer_join", "true")
                .setProperty("hibernate.generate_statistics", "true")
                .setProperty("hibernate.use_sql_comments", "true")
                .setProperty("hibernate.format_sql", "true")
                .addAnnotatedClass(Additped.class)
                .addAnnotatedClass(Additvenda.class)
                .addAnnotatedClass(Balanca.class)
                .addAnnotatedClass(Caixa.class)
                .addAnnotatedClass(Cartao.class)
                .addAnnotatedClass(CartoesOperadora.class)
                .addAnnotatedClass(Cidades.class)
                .addAnnotatedClass(Comanda.class)
                .addAnnotatedClass(Combo.class)
                .addAnnotatedClass(CompMod.class)
                .addAnnotatedClass(Composicao.class)
                .addAnnotatedClass(Compra.class)
                .addAnnotatedClass(ConfigNfce.class)
                .addAnnotatedClass(ConfigPizza.class)
                .addAnnotatedClass(ConfigRec.class)
                .addAnnotatedClass(ConfigTalher.class)
                .addAnnotatedClass(ConfigVenda.class)
                .addAnnotatedClass(ContaPagar.class)
                .addAnnotatedClass(ContaReceber.class)
                .addAnnotatedClass(ConvenioPessoa.class)
                .addAnnotatedClass(Convenios.class)
                .addAnnotatedClass(Cupom.class)
                .addAnnotatedClass(Custos.class)
                .addAnnotatedClass(CustosComposicao.class)
                .addAnnotatedClass(Delitped.class)
                .addAnnotatedClass(Delitvenda.class)
                .addAnnotatedClass(Despesa.class)
                .addAnnotatedClass(DiasPromocao.class)
                .addAnnotatedClass(Enderecos.class)
                .addAnnotatedClass(Estados.class)
                .addAnnotatedClass(Estoque.class)
                .addAnnotatedClass(GrupoDeCustos.class)
                .addAnnotatedClass(GrupoModificador.class)
                .addAnnotatedClass(GrupoPizza.class)
                .addAnnotatedClass(GrupoProdutos.class)
                .addAnnotatedClass(GrupoTam.class)
                .addAnnotatedClass(Grupocustos.class)
                .addAnnotatedClass(Grupoobservacao.class)
                .addAnnotatedClass(HistoricoCaixa.class)
                .addAnnotatedClass(HistoricoMovcaixa.class)
                .addAnnotatedClass(Horapromo.class)
                .addAnnotatedClass(Ibptpr.class)
                .addAnnotatedClass(Impressora.class)
                .addAnnotatedClass(ImpressorasProduto.class)
                .addAnnotatedClass(ItensComposicao.class)
                .addAnnotatedClass(ItensCompra.class)
                .addAnnotatedClass(ItensPizza.class)
                .addAnnotatedClass(Itpagamento.class)
                .addAnnotatedClass(Itpedvenda.class)
                .addAnnotatedClass(Itrecebimento.class)
                .addAnnotatedClass(Itvenda.class)
                .addAnnotatedClass(Local.class)
                .addAnnotatedClass(LocalEstoque.class)
                .addAnnotatedClass(MateriaPrima.class)
                .addAnnotatedClass(Mesa.class)
                .addAnnotatedClass(Modificadores.class)
                .addAnnotatedClass(ModificadoresGrupomod.class)
                .addAnnotatedClass(Moeda.class)
                .addAnnotatedClass(MoedaHistoricoCaixa.class)
                .addAnnotatedClass(Movcaixa.class)
                .addAnnotatedClass(Nfce.class)
                .addAnnotatedClass(ObsGrupos.class)
                .addAnnotatedClass(Observacoes.class)
                .addAnnotatedClass(Obsitped.class)
                .addAnnotatedClass(Obsitvenda.class)
                .addAnnotatedClass(Operadora.class)
                .addAnnotatedClass(Pagamento.class)
                .addAnnotatedClass(Passomontagem.class)
                .addAnnotatedClass(PedidoDeVenda.class)
                .addAnnotatedClass(Pessoa.class)
                .addAnnotatedClass(Pizza.class)
                .addAnnotatedClass(Produto.class)
                .addAnnotatedClass(ProdutoFiscal.class)
                .addAnnotatedClass(Promocao.class)
                .addAnnotatedClass(PromocaoProduto.class)
                .addAnnotatedClass(Recebimento.class)
                .addAnnotatedClass(RecebimentoMoeda.class)
                .addAnnotatedClass(Role.class)
                .addAnnotatedClass(Roleuser.class)
                .addAnnotatedClass(StatusCompra.class)
                .addAnnotatedClass(Tamanho.class)
                .addAnnotatedClass(Taxas.class)
                .addAnnotatedClass(Telefones.class)
                .addAnnotatedClass(TipoDocumento.class)
                .addAnnotatedClass(TipoTelefone.class)
                .addAnnotatedClass(UnidadeMedida.class)
                .addAnnotatedClass(Usuario.class)
                .addAnnotatedClass(Venda.class)
                .addAnnotatedClass(VendaTipodocumento.class)
                .addAnnotatedClass(StonePagamento.class)
                .buildSessionFactory();
    } catch (RuntimeException e) {
        e.printStackTrace();
        return null;
    }
}

}

Se alguém puder me dar alguma ideia de como trabalhar de forma diferente estou aceitando.