Este artigo descreve como estender o Hibernate usando um pool de conexão de banco de dados personalizado. Compartilhe -o para sua referência, como segue:
No processo de Hibernate, geralmente encontramos esse problema: nossos produtos prontos já usam nosso próprio pool de conexão de banco de dados. Se usarmos o Hibernate, também devemos configurar as informações de conexão do banco de dados na configuração do Hibernate. Isso requer manter as informações de conexão do banco de dados em dois lugares, o que parece bastante estranho de manter.
Como não ingressamos no Hibernate no início do desenvolvimento do produto, não é apropriado permitir que o produto use diretamente o pool de conexões da Hibernate; portanto, tivemos que deixar o Hibernate usar o próprio pool de conexões do produto. Felizmente, o Hibernate forneceu uma interface de extensão para o pool de conexões: ConnectionProvider.
O próprio Hibernate usa a interface ConnectionProvider para gerenciar conexões de banco de dados. Por exemplo, seu próprio C3P0ConnectionProvider, ProxOolConnectionProvider, etc., escrevemos uma classe que implementa a interface ConnectionProvider. No arquivo de configuração do hibernato, não há problema em alterar os parâmetros relevantes para esta classe. O código relevante é o seguinte:
O código a seguir é usado para substituir a configuração anterior de informações de conexão do banco de dados em hibernate.cfg.xml:
<!-Personalizado-Pool de conexões usando produtos NMS-> <Propriedade name = "hibernate.connection.provider_class"> com.shine.sourcedesk.jbpm.nmsconnectionprovider </ouse>
Classes que implementam a Interface ConnectionManager:
pacote com.shine.sourcedesk.jbpm; importar java.sql.connection; importar java.sql.sqLexception; importar java.util.properties; importação Org.hibernate.hibernateException; importwork.hibernate.connection.connectionProvider; Pool de conexão de hibernato, deixe o hibernato usar o conexão do produto * @author jiangkunpeng * */public class nmsConnectionProvider implementa o conexão provider {@OverridePublic void Close () lança a conexão com a conexão com a conexão com a conexão sq {} }ridePublic » ConnectionManager.close (conexão);}@substituir o Void Configure (Propriedades Propriedades) lança HibernateException {} @OverridePublic Connection getConnection () lança sqLexception {// use o pool de conexão do produto@) para obter o pool de conexão com a conexão com a conexão. falso;}Espero que a descrição deste artigo seja útil para a programação Java de todos com base na estrutura do Hibernate.