Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
来源:互联网 发布:apache与nginx的区别 编辑:程序博客网 时间:2024/05/20 09:48
昨天在技术问答区,发出了这个问题,首先感谢大家给出的回复,但是还没能解决问题。刚刚又仔细的思考下,并查了些资料,终于解决了。下面贴出自己的解决方法:主要是配置文件和如何写注解
----------------配置文件
-------------------------------------META-INF/persistence.xml-------------------------------------------------------------
01
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02
<
persistence
xmlns
=
"http://java.sun.com/xml/ns/persistence"
03
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
04
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
05
version
=
"1.0"
>
06
07
<!--配置mysql数据源-->
08
<
persistence-unit
name
=
"mysql"
transaction-type
=
"RESOURCE_LOCAL"
>
09
<
provider
>org.hibernate.ejb.HibernatePersistence</
provider
>
10
<
non-jta-data-source
>mysqlDataSource</
non-jta-data-source
>
11
<!--这里的class是指要储存于本数据库的Entity-->
12
<
class
>com.sunhope.model.core.ExternalEnvironment</
class
>
13
14
<
properties
>
15
<
property
name
=
"hibernate.dialect"
value
=
"org.hibernate.dialect.MySQL5Dialect"
/>
16
<
property
name
=
"hibernate.archive.autodetection"
value
=
"false"
/>
17
<
property
name
=
"hibernate.transaction.auto_close_session"
value
=
"false"
/>
18
<
property
name
=
"hibernate.hbm2ddl.auto"
value
=
"update"
/>
19
</
properties
>
20
</
persistence-unit
>
21
<!--配置postgre数据源-->
22
<
persistence-unit
name
=
"postgre"
transaction-type
=
"RESOURCE_LOCAL"
>
23
<
provider
>org.hibernate.ejb.HibernatePersistence</
provider
>
24
25
<
non-jta-data-source
>postgreDataSource</
non-jta-data-source
>
26
27
<
class
>com.sunhope.model.baseinfo.BdStorageCompany</
class
>
28
<
class
>com.sunhope.model.baseinfo.BdHouseType</
class
>
29
<
class
>com.sunhope.model.baseinfo.BdStorage</
class
>
30
<
class
>com.sunhope.model.core.StoreEnvironment</
class
>
31
32
<
properties
>
33
<
property
name
=
"hibernate.dialect"
value
=
"org.hibernate.dialect.PostgreSQLDialect"
/>
34
<
property
name
=
"hibernate.archive.autodetection"
value
=
"false"
/>
35
<
property
name
=
"hibernate.transaction.auto_close_session"
value
=
"false"
/>
36
<
property
name
=
"hibernate.hbm2ddl.auto"
value
=
"update"
/>
37
</
properties
>
38
</
persistence-unit
>
39
40
</
persistence
>
-------------------------------------applicationContext.xml-------------------------------------------------------------
001
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
002
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
003
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
004
xmlns:tx
=
"http://www.springframework.org/schema/tx"
005
xsi:schemaLocation="http://www.springframework.org/schema/beans
006
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
007
http://www.springframework.org/schema/tx
008
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
009
010
<
bean
id
=
"defaultPersistenceUnitManager"
011
class
=
"org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"
>
012
<
property
name
=
"persistenceXmlLocation"
value
=
"classpath:META-INF/persistence.xml"
/>
013
<!-- comment dataSourceLooup to use jndi -->
014
<
property
name
=
"dataSourceLookup"
>
015
<
bean
016
class
=
"org.springframework.jdbc.datasource.lookup.BeanFactoryDataSourceLookup"
/>
017
</
property
>
018
</
bean
>
019
020
<!-- #########################PostgreSql####################### -->
021
<
tx:annotation-driven
transaction-manager
=
"postgreEntityManagerFactory"
/>
022
023
<
bean
id
=
"postgreJpaVendor"
024
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
>
025
<
property
name
=
"showSql"
value
=
"true"
/>
026
<
property
name
=
"generateDdl"
value
=
"true"
/>
027
</
bean
>
028
029
<
bean
id
=
"postgreDataSource"
class
=
"org.apache.commons.dbcp.BasicDataSource"
destroy-method
=
"close"
>
030
<
property
name
=
"driverClassName"
value
=
"org.postgresql.Driver"
/>
031
<
property
name
=
"url"
value
=
"..."
/>
032
<
property
name
=
"username"
value
=
"..."
/>
033
<
property
name
=
"password"
value
=
"..."
/>
034
<
property
name
=
"initialSize"
value
=
"1"
/>
035
<
property
name
=
"maxActive"
value
=
"100"
/>
036
<
property
name
=
"maxIdle"
value
=
"8"
/>
037
<
property
name
=
"minIdle"
value
=
"1"
/>
038
</
bean
>
039
040
<
bean
id
=
"postgreEntityManagerFactory"
041
class
=
"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
>
042
<
property
name
=
"persistenceUnitManager"
ref
=
"defaultPersistenceUnitManager"
/>
043
<
property
name
=
"persistenceUnitName"
value
=
"postgre"
/>
044
<
property
name
=
"jpaVendorAdapter"
ref
=
"postgreJpaVendor"
/>
045
<
property
name
=
"loadTimeWeaver"
>
046
<
bean
047
class
=
"org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
/>
048
</
property
>
049
<
property
name
=
"jpaDialect"
>
050
<
bean
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaDialect"
>
051
</
bean
>
052
</
property
>
053
</
bean
>
054
055
<
bean
id
=
"postgreTransactionManager"
class
=
"org.springframework.orm.jpa.JpaTransactionManager"
>
056
<
property
name
=
"entityManagerFactory"
ref
=
"postgreEntityManagerFactory"
/>
057
<
qualifier
value
=
"postgreEM"
/>
058
<
property
name
=
"jpaDialect"
>
059
<
bean
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaDialect"
/>
060
</
property
>
061
</
bean
>
062
063
<!--########################MySql################################# -->
064
<
tx:annotation-driven
transaction-manager
=
"mysqlEntityManagerFactory"
/>
065
066
<
bean
id
=
"mysqlJpaVendor"
067
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
>
068
<
property
name
=
"showSql"
value
=
"true"
/>
069
<
property
name
=
"generateDdl"
value
=
"true"
/>
070
</
bean
>
071
072
<
bean
id
=
"mysqlDataSource"
class
=
"org.apache.commons.dbcp.BasicDataSource"
destroy-method
=
"close"
>
073
<
property
name
=
"driverClassName"
value
=
"org.gjt.mm.mysql.Driver"
/>
074
<
property
name
=
"url"
value
=
"..."
/>
075
<
property
name
=
"username"
value
=
"..."
/>
076
<
property
name
=
"password"
value
=
"..."
/>
077
<
property
name
=
"initialSize"
value
=
"1"
/>
078
<
property
name
=
"maxActive"
value
=
"100"
/>
079
<
property
name
=
"maxIdle"
value
=
"8"
/>
080
<
property
name
=
"minIdle"
value
=
"1"
/>
081
</
bean
>
082
083
<
bean
id
=
"mysqlEntityManagerFactory"
084
class
=
"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
>
085
<
property
name
=
"persistenceUnitManager"
ref
=
"defaultPersistenceUnitManager"
/>
086
<
property
name
=
"persistenceUnitName"
value
=
"mysql"
/>
087
<
property
name
=
"jpaVendorAdapter"
ref
=
"mysqlJpaVendor"
/>
088
<
property
name
=
"loadTimeWeaver"
>
089
<
bean
090
class
=
"org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
/>
091
</
property
>
092
<
property
name
=
"jpaDialect"
>
093
<
bean
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaDialect"
>
094
</
bean
>
095
</
property
>
096
</
bean
>
097
098
<
bean
id
=
"mysqlTransactionManager"
class
=
"org.springframework.orm.jpa.JpaTransactionManager"
>
099
<
property
name
=
"entityManagerFactory"
ref
=
"mysqlEntityManagerFactory"
/>
100
<
qualifier
value
=
"mysqlEM"
/>
101
<
property
name
=
"jpaDialect"
>
102
<
bean
class
=
"org.springframework.orm.jpa.vendor.HibernateJpaDialect"
/>
103
</
property
>
104
</
bean
>
105
106
</
beans
>
---------------------注解
-------------------------------------DAO-------------------------------------------------------------
------------MySqlBaseDaoImpl.java
1
@Transactional
(value=
"mysqlEM"
)
2
public
class
MySqlBaseDaoImpl<T>
implements
IMySqlBaseDao<T>{
3
@PersistenceContext
(unitName=
"mysql"
)
4
protected
EntityManager em;
5
6
//......
7
}
------------PostgreSqlBaseDaoImpl.java
1
@Transactional
(value=
"postgreEM"
)
2
public
class
PostgreSqlBaseDaoImpl<T>
implements
IPostgreSqlBaseDao<T>{
3
@PersistenceContext
(unitName=
"postgre"
)
4
protected
EntityManager em;
5
6
//.......
7
}
-------------------------------------Service-------------------------------------------------------------
---------------ExternalEnvironmentServiceImpl.java
1
@Service
2
@Transactional
(value=
"mysqlEM"
)
3
public
class
ExternalEnvironmentServiceImpl
extends
4
MySqlBaseDaoImpl<ExternalEnvironment>
implements
IExternalEnvironmentService {
5
6
}
--------------------BdStorageCompanyServiceImpl.java
1
@Service
2
@Transactional
(value=
"postgreEM"
)
3
public
class
BdStorageCompanyServiceImpl
extends
PostgreSqlBaseDaoImpl<BdStorageCompany>
4
implements
IBdStorageCompanyService {
5
6
}
-------------------------------------Model(Entity)-------------------------------------------------------------
-------------ExternalEnvironment.java
1
@Entity
(name =
"TBL_EXTERNALENVIRONMENT"
)
2
public
class
ExternalEnvironment
extends
BaseModel{
3
4
//......
5
6
}
-----------------BdStorageCompany.java
1
@Entity
(name =
"TBL_BDSTORAGECOMPANY"
)
2
public
class
BdStorageCompany
extends
BaseModel {
3
4
//.......
5
6
}
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Spring3+Jpa 配置多个数据源的解决方案(基于注解)
- pring3+Hibernate3(Jpa) 配置多个数据源的解决方案
- spring 配置多个数据源(基于JPA)
- spring 配置多个数据源(基于JPA)
- 基于注解的spring3+hibernate3的springMVC框架
- Spring3+Hibernate4 配置多个数据源的方法
- Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载
- Spring3.0配置多个事务管理器(即操作多个数据源)的方法
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式 .
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统 .
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- php设计模式之单例模式
- ActionBar
- DOM方式获取xml文档
- 严重: IOException while loading persisted sessions:
- mysql中字符串分割并转换成列
- Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
- Openssl-SHA1
- Eclipse的使用
- java文件上传和下载
- NFC与其它无线传输对比
- android自动获取短信验证码
- ART登场,Android要和核心虚拟机Dalvik说再见了
- 2014-04-01工作日志:error无法启动此程序,因为计算机中丢失DLL_Md5Check.dll。尝试重新安装该程序以解决此问题
- ViewTreeObserver