`

hibernate多数据源配置与使用

 
阅读更多

关于hibernate中多个数据源数据传输的使用:

1.首先需要配置文件:

oracle:oracle.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>

		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@ip:1521:orcl</property>
		<property name="hibernate.connection.username">username</property>
		<property name="hibernate.connection.password">password</property>

		<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>

		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>

		<property name="hibernate.hbm2ddl.auto">none</property>

		<property name="hibernate.jdbc.fetch_size">100</property>
		<property name="hibernate.jdbc.batch_size">30</property>

		<!-- 配置二级缓存 -->
	 	<property name="hibernate.cache.use_second_level_cache">false</property>
	 	<property name="hibernate.cache.use_query_cache">false</property>
		<!-- Hibernate4 这里和Hibernate3不一样 要特别注意!!!-->
	 	<property name="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</property>
		
		<!-- Hibernate3 -->
		<!-- <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> -->
		
		<!-- 配置C3P0 -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">1</property>
		<property name="hibernate.c3p0.max_statements">3</property>
		<property name="hibernate.c3p0.timeout">30</property>
		<property name="hibernate.c3p0.acquire_increment">1</property>
		<property name="hibernate.c3p0.idle_test_periodt">10</property>
		
		 <!-- <property name="current_session_context_class">thread</property>  -->
		 <mapping class="实体全路径"/>

	</session-factory>
</hibernate-configuration>

oracle使用hibernate4连接配置

public class OracleHibernateUtil {
	private static Logger logger = Logger.getLogger(OracleHibernateUtil.class);
	public static final String ORACLE_CFG = "oracle.cfg.xml";
	private static final SessionFactory sessionFactory ;
	private static Configuration config = null;
	public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
	
	static {
		config = new Configuration().configure(ORACLE_CFG);
		sessionFactory = config.buildSessionFactory(new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry());
	}

	/**
	 * 获取session
	 * @return
	 */
	public static Session currentSession() {
		Session s = session.get();
		if(s == null || !s.isOpen()) {
			s = sessionFactory.openSession();
			session.set(s);
		}
		if(s != null) {
			Transaction tran = null;
			try {
				tran = s.getTransaction();
			} catch (Exception e) {
				logger.error(e.getMessage(), e);
			}
			if(tran != null && !tran.isActive()) {
				tran.begin();
			}
		}
		
		return s;
	}
	
	public static void closeSession() {
		Session s = session.get();
		if(s != null && s.isOpen()) {
			Transaction tran = null;
			try {
				tran = s.getTransaction();
			} catch (Exception e) {
				logger.error(e.getMessage(), e);
			}
			if(tran != null && tran.isActive()) {
				tran.commit();
			} else {
				tran.rollback();
			}
		}
		session.set(null);
		if(s != null) {
			s.close();
		}
	}
	
	/**
	 * 提交
	 */
	public static void doCommit() {
		closeSession();
	}
	
	
}

 

 

2. sqlserver配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>

		<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
		<property name="hibernate.connection.url">jdbc:sqlserver://ip:1433;databaseName=databasename</property>
		<property name="hibernate.connection.username">username</property>
		<property name="hibernate.connection.password">password</property>

		<property name="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</property>

		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>

		<property name="hibernate.hbm2ddl.auto">none</property>

		<property name="hibernate.jdbc.fetch_size">100</property>
		<property name="hibernate.jdbc.batch_size">30</property>

		<!-- 配置二级缓存 -->
	 	<property name="hibernate.cache.use_second_level_cache">false</property>
	 	<property name="hibernate.cache.use_query_cache">false</property>
		<!-- Hibernate4 这里和Hibernate3不一样 要特别注意!!!-->
	 	<property name="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</property>
		
		<!-- Hibernate3 -->
		<!-- <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> -->
		
		<!-- 配置C3P0 -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">1</property>
		<property name="hibernate.c3p0.max_statements">3</property>
		<property name="hibernate.c3p0.timeout">30</property>
		<property name="hibernate.c3p0.acquire_increment">1</property>
		<property name="hibernate.c3p0.idle_test_periodt">10</property>
		
		 <!-- <property name="current_session_context_class">thread</property>  -->
		 <mapping class="实体全路径名"/>
		
		 
	</session-factory>
</hibernate-configuration>

 hibernate4连接sqlserver2008

public class SqlServerHibernateUtil {
	private static Logger logger = Logger.getLogger(SqlServerHibernateUtil.class);
	public static final String DEST_CFG = "sqlserver.cfg.xml";
	private static final SessionFactory sessionFactory ;
	private static Configuration config = null;
	public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
	
	static {
		config = new Configuration().configure(SQLSERVER_CFG);
		sessionFactory = config.buildSessionFactory(new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry());
	}

	/**
	 * 获取session
	 * @return
	 */
	public static Session currentSession() {
		Session s = session.get();
		if(s == null || !s.isOpen()) {
			s = sessionFactory.openSession();
			session.set(s);
		}
		if(s != null) {
			Transaction tran = null;
			try {
				tran = s.getTransaction();
			} catch (Exception e) {
				logger.error(e.getMessage(), e);
			}
			if(tran != null && !tran.isActive()) {
				tran.begin();
			}
		}
		return s;
	}
	
	public static void closeSession() {
		Session s = session.get();
		if(s != null && s.isOpen()) {
			Transaction tran = null;
			try {
				tran = s.getTransaction();
			} catch (Exception e) {
				logger.error(e.getMessage(), e);
			}
			if(tran != null && tran.isActive()) {
				tran.commit();
			} else {
				tran.rollback();
			}
		}
		session.set(null);
		if(s != null) {
			s.close();
		}
	}
	
	/**
	 * 提交
	 */
	public static void doCommit() {
		closeSession();
	}

}

 

 

 

分享到:
评论

相关推荐

    java+hibernate双数据源配置

    总的来说,Java+Hibernate双数据源配置是一项关键技能,它使得开发者能够在同一个应用中管理和操作多个数据库,实现读写分离、负载均衡等高级功能。结合SpringBoot的自动化配置和AOP特性,能够简化配置过程,提升...

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    对于多数据源,我们需要创建多个数据源配置,例如: ```yaml spring: datasource: primary: url: jdbc:mysql://localhost:3306/main_db username: root password: password driver-class-name: ...

    spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码

    6. **测试与验证**:编写测试用例确保多数据源配置正确,能正常执行查询、插入等数据库操作。 在提供的`common-muldb-hb`和`common-muldb-mb`文件中,应该包含了完整的配置文件、实体类、Mapper接口和XML映射文件,...

    hibernate多数据库配置

    Hibernate 多数据库配置 在 Hibernate 中配置多数据库,并自由切换,可以使用 Spring 框架来实现。...使用 Spring 框架和 Hibernate,我们可以轻松地配置多数据库连接信息,并自由切换不同的数据源。

    spring3+springmvc+jpa+hibernate多数据源

    在多数据源场景下,Hibernate可以配置为连接不同的数据库,使得应用可以根据业务需求灵活切换数据源。 **多数据源** 是指在一个应用中管理多个独立的数据库连接。在本项目中,数据源被配置为Hibernate和Datastore,...

    配置hibernate数据源

    Hibernate数据源配置过程如下: 1. 下载必要的驱动。为了连接MySQL数据库,我们需要下载MySQL的JDBC驱动,即mysql-connector-java-5.0.8-bin.jar,并将其添加到项目的类路径中。 2. 在MyEclipse中创建一个Java项目...

    hibernate 数据源配置文件

    本文将详细介绍在Java服务器端使用Hibernate时,针对MySQL、Oracle及SQL Server三种常见数据库的数据源配置方法。 #### 二、基于Properties文件的数据源配置 在传统的配置方式下,我们通常会在项目的类路径下放置...

    Spring+Hibernate多数据源

    在Spring Boot中,我们可以使用@ConfigurationProperties注解来读取YAML或Properties文件中的数据源配置。然后,通过@Bean注解创建Hibernate SessionFactory和TransactionManager,确保它们指向正确的DataSource。 ...

    Hibernate配置数据源.

    Hibernate作为Java领域内广泛使用的对象关系映射(ORM)工具之一,其灵活高效的数据源配置方式为开发者提供了极大的便利。本文将详细介绍在Hibernate框架中配置不同数据源的方法,帮助读者更好地理解和应用这些配置...

    hibernate数据源配置

    一个hibernate数据源的c3p0配置,希望对你有帮助

    spring+hibernate解决多数据源问题3.pdf

    本文主要介绍在Spring与Hibernate框架下解决多数据源配置的问题。在企业级应用开发中,因为业务需求的不同,往往需要同时操作多个数据库,这就需要配置多数据源来满足这样的需求。 知识点一:数据源与会话工厂 在...

    spring集合hibernate多数据切换

    本知识点主要探讨如何在Spring中集成Hibernate来实现多数据源的动态切换功能,这对于需要处理多种数据源的应用来说至关重要。 首先,我们需要理解什么是多数据源。多数据源意味着一个应用程序可以连接并操作多个...

    Hibernate配置各种数据源详解

    Hibernate配置各种数据源 &lt;hibernate-configuration&gt; &lt;!– 各属性的配置–&gt; &lt;!—为true表示将Hibernate发送给数据库的sql显示出来 –&gt; ”show_sql”&gt;true &lt;!– SQL方言,这边设定的是MySQL –&gt; ”dialect”&gt;...

    spring数据源配置

    ### Spring 数据源配置详解 #### 一、Spring与数据源简介 在Java企业级应用开发中,数据库操作是必不可少的一部分。Spring框架作为一种流行的轻量级Java应用开发框架,提供了强大的数据库访问支持,其中包括对数据...

    spring3+hibernate4+maven+junit 多库多数据源实现

    "Spring3+Hibernate4+Maven+JUnit 多库多数据源实现"是一个典型的Java Web项目配置,它涉及了多个核心技术来处理复杂的数据管理需求。下面将详细阐述这些技术以及如何协同工作以实现多库多数据源。 首先,Spring...

    hibernate数据源

    Hibernate 数据源是 Hibernate 框架中连接数据库的关键组件,它是 Hibernate 与底层数据库进行交互的桥梁。在 Hibernate 应用程序中,数据源扮演着存储数据库连接信息的角色,包括数据库URL、用户名、密码等,使得 ...

    java项目多数据源配置

    项目框架是springMVC+hibernate,一个简单的demo易懂,数据库配置自己修改datasource.properties文件,其中连接了两个MySQL数据库,数据库分别各有一张表,一张student表和一张t_user需要自己创建

    spring+hibernate+atomikos多数据源

    6. 测试:最后,通过dstest这样的测试用例,验证多数据源配置是否正确,以及事务处理是否符合预期。 这个压缩包"dstest"可能包含了完成上述配置的源代码和测试用例,可以帮助开发者理解并实践多数据源的配置。学习...

    针对SSH框架Spring管理Hibernate连接多个数据源配置文件

    该配置文件连接的是两个数据库结构相同的数据源,其他比如数据库结构不原理也可行。本人在遇到此问题时上网搜了很多答案结果都不怎么如意,有的太深奥不过思想很好,有的又太不给力,后来自己慢慢研究配置成功后想与...

Global site tag (gtag.js) - Google Analytics