1. META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="localdb" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/> <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/> <property name="hibernate.connection.username" value="sa"/> <property name="hibernate.connection.password" value="123"/> <property name="hibernate.connection.url" value="jdbc:jtds:sqlserver://localhost:1433/CollectionDB;instance="/> <property name="hibernate.max_fetch_depth" value="3"/> <property name="hibernate.format_sql" value="false" /> <property name="hibernate.hbm2ddl.auto" value="none"/> <property name="javax.persistence.validation.mode" value="none"/> <!-- validate --> </properties> </persistence-unit> <persistence-unit name="remotedb" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.connection.password" value="123"/> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/futures?useUnicode=true&characterEncoding=UTF-8"/> <property name="hibernate.max_fetch_depth" value="3"/> <property name="hibernate.format_sql" value="false" /> <property name="hibernate.hbm2ddl.auto" value="none"/> <property name="javax.persistence.validation.mode" value="none"/> </properties> </persistence-unit> </persistence>
2. spring-jpa-hibernate.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- scan all beans and inject dependence --> <context:component-scan base-package="com.myproject" /> <bean id="defaultPersistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> <!-- comment dataSourceLooup to use jndi --> <property name="dataSourceLookup"> <bean class="org.springframework.jdbc.datasource.lookup.BeanFactoryDataSourceLookup" /> </property> </bean> <!-- 整合localjpa --> <bean id="localEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitManager" ref="defaultPersistenceUnitManager"></property> <property name="persistenceUnitName" value="localdb"></property> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="false"></property> <property name="database" value="SQL_SERVER"></property> </bean> </property> </bean> <bean id="localtransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="localEntityManagerFactory" /> <qualifier value="localEM" /> </bean> <tx:annotation-driven transaction-manager="localtransactionManager" proxy-target-class="false" /> <!-- 整合remotejpa --> <bean id="remoteEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitManager" ref="defaultPersistenceUnitManager"></property> <property name="persistenceUnitName" value="remotedb"></property> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="false"></property> <property name="database" value="MYSQL"></property> </bean> </property> </bean> <bean id="remotetransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="remoteEntityManagerFactory" /> <qualifier value="remoteEM" /> </bean> <tx:annotation-driven transaction-manager="remotetransactionManager" proxy-target-class="false" /> </beans>
3. StockAccountEntity.java
package com.myproject.example.vo; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "stockaccount", schema = "") @SuppressWarnings("serial") public class StockAccountEntity implements java.io.Serializable { @Id @Column(name ="ID",nullable=false,length=40) private java.lang.String id; @Column(name ="USERNAME",nullable=true,length=40) private java.lang.String username; public java.lang.String getId(){ return this.id; } public void setId(java.lang.String id){ this.id = id; } public java.lang.String getUsername(){ return this.username; } public void setUsername(java.lang.String username){ this.username = username; } }
4. StockAccountDao.java
package com.myproject.example.dao; import java.util.List; import com.myproject.example.dao.common.MyCriteriaBuilder; import com.myproject.example.vo.StockAccountEntity; public interface StockAccountDao { public List<StockAccountEntity> query(MyCriteriaBuilder cb, int maxResult); public void update(StockAccountEntity entity); public void insert(StockAccountEntity entity); public void delete(StockAccountEntity entity); public StockAccountEntity queryById(int id); }
5.StockAccountDaoBean.java
package com.myproject.example.dao.jpa; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.springframework.stereotype.Repository; import com.myproject.example.dao.StockAccountDao; import com.myproject.example.dao.common.MyCriteriaBuilder; import com.myproject.example.vo.StockAccountEntity; @Repository public class StockAccountDaoBean implements StockAccountDao{ @PersistenceContext(unitName="localdb") EntityManager em; @Override public List query(MyCriteriaBuilder cb, int maxResult) { String hql = "select a from StockAccountEntity a" + cb.getCriteriaString(); Query q = em.createQuery(hql); for(String key : cb.getCriteriaParams().keySet()){ q.setParameter(key, cb.getCriteriaParams().get(key)); } if(maxResult!=0) q.setMaxResults(maxResult); return q.getResultList(); } @Override public void update(StockAccountEntity entity) { em.merge(entity); } @Override public void insert(StockAccountEntity entity) { em.persist(entity); } @Override public void delete(StockAccountEntity entity) { em.remove(entity); } @Override public StockAccountEntity queryById(int id) { return em.find(StockAccountEntity.class, id); } }
6.StockAccountService.java
package com.myproject.example.service; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.myproject.example.dao.StockCashFlowDao; import com.myproject.example.dao.common.MyCriteria; import com.myproject.example.dao.common.MyCriteriaBuilder; import com.myproject.example.vo.StockCashFlowEntity; @Service @Transactional(value="localEM") public class StockAccountService { @Resource private StockAccountDao stockAccountDaoBean; public List<StockAccountEntity> queryByTradecodeTradedate(String tradeCode, Date lastTradeDate, Date tradeDate){ MyCriteriaBuilder accountCB = new MyCriteriaBuilder(); cashFlowCB.put(MyCriteria.Type_Equil, "tradecode", tradeCode); cashFlowCB.put(MyCriteria.Type_Bigger, "tradedate", "tradedate1", lastTradeDate); cashFlowCB.put(MyCriteria.Type_SmallerEquil, "tradedate", "tradedate2", tradeDate); List<StockAccountEntity> cashFlowList = stockAccountDaoBean.query(accountCB, 0); return accountList; } }
相关推荐
首先,`springboot+jpa配置多数据源.zip`这个压缩包可能包含了一个示例项目,用于演示如何在Spring Boot中集成JPA并配置多个数据源。JPA是Java平台上的ORM(Object-Relational Mapping)标准,它简化了与关系型...
在Spring Boot应用中,使用`spring-data-jpa`来配置MySQL多数据源是一项常见的需求,尤其是在构建大型分布式系统时,为了实现数据隔离、负载均衡或读写分离等目的。本教程将详细介绍如何在Spring Boot项目中配置多个...
Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...
在 hopsuncms\WebRoot\WEB-INF\conf\custom-component.xml 文件中配置数据源信息。该文件用于存储数据源信息,如数据源名称、驱动程序等。配置示例如下: ``` ${database.url}"/> ${database.username}"/> ${...
本教程将详细讲解如何使用Spring Boot结合JPA或MyBatis框架实现多数据源的动态切换。 **一、Spring Boot与JPA** 1. **Spring Boot简介**:Spring Boot是Spring Framework的一个模块,旨在简化Spring应用的初始搭建...
在Spring Boot中,我们可以使用`DataSource` bean来配置数据源。 对于多数据源配置,我们需要创建至少两个`DataSource` bean,每个对应一个不同的数据库。通常,我们会为每个数据源创建一个配置类,例如`...
"spring3+springmvc+jpa+hibernate多数据源"是一个示例项目,它演示了如何在一个应用中集成Spring 3、Spring MVC、JPA 2.0以及Hibernate,以实现对多个数据源的支持。下面将详细介绍这些技术及其集成的关键点。 **...
总结起来,配置Spring+JPA与BoneCP数据源涉及的关键知识点包括:Spring框架、JPA、BoneCP连接池、数据库驱动、依赖管理、Spring配置、实体类、Repository接口以及Spring Boot的启动配置。理解并熟练掌握这些知识点,...
通过以上步骤,你就可以在Spring Boot项目中成功配置并使用JPA进行多数据源操作了。这种方式允许你灵活地管理不同数据库的数据,对于复杂的分布式系统和多租户应用特别有用。在实际开发中,还可能需要考虑数据源的...
在Spring Boot中配置多数据源,我们需要创建两个或更多的数据源配置,每个数据源对应一个数据库。以下是一个基本的配置示例: ```yaml spring: datasource: primary: url: jdbc:mysql://localhost:3306/db1 ...
2. **配置数据源** 在`application.yml`或`application.properties`文件中,为每个数据源创建单独的配置,例如两个数据源`db1`和`db2`: ```yaml spring: datasource: db1: url: jdbc:mysql://localhost:3306...
在Spring Boot应用中,多...接下来,我们要配置数据源事务管理器。Spring Boot默认使用`DataSourceTransactionManager`,但我们需要为每个数据源创建一个实例: ```java @Bean(name = "primaryTransactionManager") ...
在SpringMVC框架中配置多数据源是一项常见的需求,尤其在大型企业级应用中,由于业务的复杂性,往往需要连接不同的数据库以满足不同模块的需求。以下将详细讲解如何实现这一功能。 首先,理解数据源(DataSource)...
在传统的单数据源配置中,我们通常使用Spring的Annotation在代码内部直接配置数据源,例如使用@Configuration和@Bean注解来配置数据源和实体管理工厂。以下是一个简单的单数据源配置代码: ```java @Configuration ...
// 类似地配置数据源2 } ``` 这样,我们就可以在不同的Repository中使用`@Autowired`的`MongoTemplate`来操作不同的数据源了。例如,`DataSource1Repo`和`DataSource2Repo`可以分别处理`datasource1`和`datasource...
本资源包含了两个子项目,分别进行了springboot+jpa+jdbcTemplate的多数据源独立事务配置和jta分布式事务配置,并针对不同的情况编写了事务配置测试接口,还演示了JPA的domain一对多自动生成数据库表且不生成数据库...
本项目"springboot+mysql+jpa多数据源操作源码"旨在提供一个示例,帮助开发者了解如何在Spring Boot环境中配置和管理多个数据源。 首先,我们需要理解Spring Boot的自动配置特性。Spring Boot通过`@...
本项目结合了SpringBoot、Gradle和MyBatis,旨在实现多数据源的动态配置,这对于处理多个数据库或者分库分表的场景尤其有用。以下是对这个项目的详细解析: **SpringBoot** SpringBoot是由Pivotal团队提供的全新...
2. 配置数据源:为每个数据库创建单独的数据源,如DataSource bean,分别配置连接信息(URL、用户名、密码等)。 3. 配置事务管理器:使用Atomikos的UserTransaction和TransactionManager,配置JTA事务管理器,以...
总之,Spring Boot的多数据源配置涉及多个层面,包括依赖管理、配置类、数据源对象创建、JPA实体管理工厂、事务管理器以及业务代码中的数据源选择。通过合理配置,我们可以轻松地实现对多个数据库的管理和操作。