최근에, 스프링을 위해 여러 데이터 소스를 구성하는 방법에 대해 컨설팅하는 사람들이 많으며, 하나씩 답변하는 것도 번거롭고 이전 블로그 게시물의 구성도 문제가되므로 모든 사람을위한 데모를 출시 할 것입니다.
데모에는 MySQL과 Oracle과 같은 두 가지 데이터 소스가 있으며 간단한 테스트가 수행되었습니다. 데이터 소스를 동적으로 전환하는 데 아무런 문제가 없습니다. 이 데모가 모두에게 도움이되기를 바랍니다.
데모 다운로드 주소 :
스프링은 다이나 디나 타타 소스 데모 : http://xiazai.vevb.com/201701/yuanma/dynamicdatasourcedemo_jb51.rar
또한 멀티 데이터 소스를 구성 할 때 핵심 요점을 설명하기위한 설명을 할 것입니다.
1. 트랜잭션 인터셉터의 구성에주의하십시오
이것이 첫 번째 우선 순위입니다. 우선, Spring의 거래 관리가 데이터 소스에 묶여 있음을 이해해야합니다. 프로그램이 트랜잭션 관리 계층 (예 : 서비스 등)으로 실행되면이 계층에 들어가기 전에 인터셉터를 통해 트랜잭션이 열렸 으므로이 레이어에서 데이터 소스를 전환 할 수 없습니다. 거래 원칙을 이해하는 것이 특히 중요합니다. 이전 기사에서는 DAO 계층의 데이터 소스를 전환하도록 인터셉터를 구성하는 것이 문제가됩니다 (예를 들어, 부주의하고 모든 사람을 오도하는 것에 대해 사과하기 때문에). 제공된 아이디어는 문제가되지 않습니다.
데모에서 데이터 소스를 스위치하는 DataSourceInterceptor는 TXADVICE (Transaction Interceptor)의 이전 레이어, 즉 컨트롤러 계층에서 구성됩니다.
2. 데이터베이스 테이블 생성에주의하십시오
어떤 사람들은 Hibernate의 자동 테이블 생성 기능을 사용하는 것을 좋아하지만 여러 데이터 소스, 특히 다른 데이터베이스의 여러 데이터 소스에서 테이블을 자동으로 만들 수는 없습니다. 프로젝트 시작시 최대 절차체 자동 테이블 생성이 트리거되므로 프로젝트에서 구성된 기본 데이터 소스에 대한 테이블 만 생성되는 반면 다른 데이터 소스에 대한 테이블은 자동으로 생성되지 않습니다. 모두가주의를 기울여야합니다.
3. Hibernate의 데이터베이스 방언은 무시할 수 있습니다
여러 데이터 소스가 있으면 방언 설정을 무시할 수 있습니다. Hibernate는 사용될 때 다른 데이터베이스를 자동으로 인식 하므로이 구성에 대해 걱정할 필요가 없으며 구성 할 수 없습니다.
4. 현재 세션 오류를보고하지 마십시오
이것은 sessionFactory.getCurrentSess ()를 사용하여 발생합니다. 현재 세션은 스레드에 묶여 있습니다. 스레드는 한 세션 만 열립니다 (OpenSession ()을 사용하지 않는 한 오류가 없습니다). 따라서 세션과 스레드 사이의 결합 관계를 설정해야합니다.
데모는 Spring을 사용하여 최대 절전 모드 세션을 관리하므로 OpenSessionInViewFilter는 web.xml에서 구성되며 current_session_context_class는 hibernate.cfg.xml로 구성됩니다. [PS : Spring을 사용하여 최대 절전 모드를 관리 할 때 Hibernate.cfg.xml을 제거 할 수 있으며 구성된 모든 스프링의 구성 파일은 HibernateProperties입니다. 개인 취향에 의존]]
마지막으로, 일부 프레임 워크는 단순히 데모에 통합되어있어 모든 사람이 사용하기 편리합니다. 모든 사람에게 혜택입니다. 나는 여기에서 그 프레임 워크의 구성과 기술을 설명하지 않을 것입니다. 알고 싶다면 주소를 확인할 수 있습니다.
스프링 멀티 데이터 소스 구성 : //www.vevb.com/article/102282.htm
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.