- 浏览: 360773 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zzy2011266:
以上是特殊情况, 正确的方式是打开windowsshowVi ...
Android 出现 Your project contains errors, please fix them 。。。。 -
小奶牛:
BFGFG[b][/b]
PHP计算字符串长度 -
小奶牛:
[b][/b]YTYTY
PHP计算字符串长度 -
yuankunliu:
这样处理ppt里边的文本框在图片中有边框,知道怎么去掉不请问? ...
java转换ppt为图片 -
vtrtbb:
哦,我试试
简单的JS分页代码
项目中需要多个数据库,而且每个数据库的基本信息都是保存在一个公共库(public)的sysarea表中的:表格式如下
AREA_ID
AREA_NAMEEN
AREA_DATABASE
AREA_DBNAME
AREA_DBPWD
AREA_DBSERVE
1
数据库1
infodb1
root
111111
192.168.1.1
2
数据库1
infodb2
root
111111
192.168.1.2
persistence.xml 文件如下:
[code="xml"]org.hibernate.ejb.HibernatePersistencejava:comp/env/jdbc/PUBLICDBorg.hibernate.ejb.HibernatePersistence
根据数据库名称取链接属性类:
[code="java"]public class AreaFactory {
private static final Map> map = new HashMap>();
private static final String SHOWSQL = HttpContext.getConfig().getString(AppConfig.SHOWSQL);
private static AreaFactory areaFactory = new AreaFactory();
public static AreaFactory getInstance (){
return areaFactory;
}
public Map getAreaMap(String unitName) {
Map mp = map.get(unitName);
if (mp == null) {
mp = new HashMap();
UnitDAO unitDAO = DAOFactory.getInstance().getUnitDAO();
SysArea sysArea = unitDAO.findArea(unitName);
if (sysArea != null) {
mp.put("hibernate.connection.url", "jdbc:mysql://"+sysArea.getAreaDbserve()+":"+sysArea.getAreaPort()+"/"+sysArea.getAreaDatabase());
mp.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
mp.put("hibernate.connection.username", ""+ sysArea.getAreaDbname()+"");
mp.put("hibernate.connection.password", ""+ sysArea.getAreaDbpwd() +"");
mp.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
mp.put("hibernate.show_sql", SHOWSQL);
mp.put("hibernate.transaction.factory_class", "org.hibernate.transaction.JDBCTransactionFactory");
mp.put("hibernate.query.substitutions", "true=1, false=0");
map.put(unitName, mp);
}
}
return mp;
}
}
DAOFactory.java 类
[code="java"]public class DAOFactory {
private final Map factory = new HashMap();
private static DAOFactory instance;
public static DAOFactory getInstance(){
if(instance == null){
instance = new DAOFactory();
}
return instance;
}
public UnitDAO getUnitDAO() {
final String key = UnitDAO.class.getSimpleName();
UnitDAO dao = (UnitDAO)factory.get(key);
if (dao == null) {
dao = new UnitDAOImpl();
factory.put(key, dao);
}
return dao;
}
}
sysArea类
[code="java"]@Entity
@Table(name = "sys_area")
public class SysArea implements java.io.Serializable {
private int areaId;
private String areaNameen;
private String areaDatabase;
private String areaDbname;
private String areaDbpwd;
private String areaDbserve;
public SysArea() {
}
@Id
@GeneratedValue (strategy=GenerationType.AUTO)
@Column(name = "AREA_ID", unique = true, nullable = false)
public int getAreaId() {
return this.areaId;
}
public void setAreaId(int areaId) {
this.areaId = areaId;
}
@Column(name = "AREA_NAMEEN", nullable = false, length = 16)
public String getAreaNameen() {
return this.areaNameen;
}
public void setAreaNameen(String areaNameen) {
this.areaNameen = areaNameen;
}
@Column(name = "AREA_DATABASE", nullable = false, length = 32)
public String getAreaDatabase() {
return this.areaDatabase;
}
public void setAreaDatabase(String areaDatabase) {
this.areaDatabase = areaDatabase;
}
@Column(name = "AREA_DBNAME", nullable = false, length = 32)
public String getAreaDbname() {
return this.areaDbname;
}
public void setAreaDbname(String areaDbname) {
this.areaDbname = areaDbname;
}
@Column(name = "AREA_DBPWD", nullable = false, length = 64)
public String getAreaDbpwd() {
return this.areaDbpwd;
}
public void setAreaDbpwd(String areaDbpwd) {
this.areaDbpwd = areaDbpwd;
}
@Column(name = "AREA_DBSERVE", nullable = false, length = 256)
public String getAreaDbserve() {
return this.areaDbserve;
}
public void setAreaDbserve(String areaDbserve) {
this.areaDbserve = areaDbserve;
}
}
SessionFactory 类:
[code="java"]package com.og.cms.dao.impl;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;
import com.og.cms.AppConfig;
import com.og.cms.HttpContext;
public class SessionFactory {
private static final Map map = new HashMap();
private static final Map> factory = new HashMap>();
private static final String PUBLICDB = HttpContext.getConfig().getString(AppConfig.PUBLICDB_SUBDIVISION);
static {
EntityManagerFactory emf = map.get(PUBLICDB);
if(emf == null){
emf = Persistence.createEntityManagerFactory(PUBLICDB);
map.put(PUBLICDB, emf);
}
}
private SessionFactory(){
}
public static EntityManagerFactory getFactory(String unitName){
EntityManagerFactory emf = map.get(unitName);
if(emf == null){
Map mp = AreaFactory.getInstance().getAreaMap(unitName);
emf = Persistence.createEntityManagerFactory("hdbms",mp);
map.put(unitName, emf);
}
return emf;
}
public static EntityManager get(final String unitName){
ThreadLocal local = factory.get(unitName);
if(local == null){
local=new ThreadLocal(){
protected synchronized EntityManager initialValue() {
EntityManagerFactory emf = getFactory(unitName);
return emf.createEntityManager();
}
};
factory.put(unitName, local);
}
EntityManager em = local.get();
if(em == null||!em.isOpen()){
em = getFactory(unitName).createEntityManager();
local.set(em);
}
return em;
}
public static void close(final String unitName) throws PersistenceException {
ThreadLocal local = factory.get(unitName);
if(local == null) return;
EntityManager em = local.get();
local.set(null);
if (em != null)
em.close();
}
}
基本测试
:
[code="java"]class testDao {
public List> findAllInfoSoure(String unitName) throws PersistenceException {
List> list = null;
EntityManager em = SessionFactory.get(unitName);
try{
list = em.createQuery("FROM xxx po ORDER BY po.xxDESC").getResultList();
}
catch(PersistenceException ex) {
throw new PersistenceException();
}
finally{
if (em.isOpen()) em.close();
}
return list;
}
}
其中:unitName 代表是哪个表
AREA_ID
AREA_NAMEEN
AREA_DATABASE
AREA_DBNAME
AREA_DBPWD
AREA_DBSERVE
1
数据库1
infodb1
root
111111
192.168.1.1
2
数据库1
infodb2
root
111111
192.168.1.2
persistence.xml 文件如下:
[code="xml"]org.hibernate.ejb.HibernatePersistencejava:comp/env/jdbc/PUBLICDBorg.hibernate.ejb.HibernatePersistence
根据数据库名称取链接属性类:
[code="java"]public class AreaFactory {
private static final Map> map = new HashMap>();
private static final String SHOWSQL = HttpContext.getConfig().getString(AppConfig.SHOWSQL);
private static AreaFactory areaFactory = new AreaFactory();
public static AreaFactory getInstance (){
return areaFactory;
}
public Map getAreaMap(String unitName) {
Map mp = map.get(unitName);
if (mp == null) {
mp = new HashMap();
UnitDAO unitDAO = DAOFactory.getInstance().getUnitDAO();
SysArea sysArea = unitDAO.findArea(unitName);
if (sysArea != null) {
mp.put("hibernate.connection.url", "jdbc:mysql://"+sysArea.getAreaDbserve()+":"+sysArea.getAreaPort()+"/"+sysArea.getAreaDatabase());
mp.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
mp.put("hibernate.connection.username", ""+ sysArea.getAreaDbname()+"");
mp.put("hibernate.connection.password", ""+ sysArea.getAreaDbpwd() +"");
mp.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
mp.put("hibernate.show_sql", SHOWSQL);
mp.put("hibernate.transaction.factory_class", "org.hibernate.transaction.JDBCTransactionFactory");
mp.put("hibernate.query.substitutions", "true=1, false=0");
map.put(unitName, mp);
}
}
return mp;
}
}
DAOFactory.java 类
[code="java"]public class DAOFactory {
private final Map factory = new HashMap();
private static DAOFactory instance;
public static DAOFactory getInstance(){
if(instance == null){
instance = new DAOFactory();
}
return instance;
}
public UnitDAO getUnitDAO() {
final String key = UnitDAO.class.getSimpleName();
UnitDAO dao = (UnitDAO)factory.get(key);
if (dao == null) {
dao = new UnitDAOImpl();
factory.put(key, dao);
}
return dao;
}
}
sysArea类
[code="java"]@Entity
@Table(name = "sys_area")
public class SysArea implements java.io.Serializable {
private int areaId;
private String areaNameen;
private String areaDatabase;
private String areaDbname;
private String areaDbpwd;
private String areaDbserve;
public SysArea() {
}
@Id
@GeneratedValue (strategy=GenerationType.AUTO)
@Column(name = "AREA_ID", unique = true, nullable = false)
public int getAreaId() {
return this.areaId;
}
public void setAreaId(int areaId) {
this.areaId = areaId;
}
@Column(name = "AREA_NAMEEN", nullable = false, length = 16)
public String getAreaNameen() {
return this.areaNameen;
}
public void setAreaNameen(String areaNameen) {
this.areaNameen = areaNameen;
}
@Column(name = "AREA_DATABASE", nullable = false, length = 32)
public String getAreaDatabase() {
return this.areaDatabase;
}
public void setAreaDatabase(String areaDatabase) {
this.areaDatabase = areaDatabase;
}
@Column(name = "AREA_DBNAME", nullable = false, length = 32)
public String getAreaDbname() {
return this.areaDbname;
}
public void setAreaDbname(String areaDbname) {
this.areaDbname = areaDbname;
}
@Column(name = "AREA_DBPWD", nullable = false, length = 64)
public String getAreaDbpwd() {
return this.areaDbpwd;
}
public void setAreaDbpwd(String areaDbpwd) {
this.areaDbpwd = areaDbpwd;
}
@Column(name = "AREA_DBSERVE", nullable = false, length = 256)
public String getAreaDbserve() {
return this.areaDbserve;
}
public void setAreaDbserve(String areaDbserve) {
this.areaDbserve = areaDbserve;
}
}
SessionFactory 类:
[code="java"]package com.og.cms.dao.impl;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;
import com.og.cms.AppConfig;
import com.og.cms.HttpContext;
public class SessionFactory {
private static final Map map = new HashMap();
private static final Map> factory = new HashMap>();
private static final String PUBLICDB = HttpContext.getConfig().getString(AppConfig.PUBLICDB_SUBDIVISION);
static {
EntityManagerFactory emf = map.get(PUBLICDB);
if(emf == null){
emf = Persistence.createEntityManagerFactory(PUBLICDB);
map.put(PUBLICDB, emf);
}
}
private SessionFactory(){
}
public static EntityManagerFactory getFactory(String unitName){
EntityManagerFactory emf = map.get(unitName);
if(emf == null){
Map mp = AreaFactory.getInstance().getAreaMap(unitName);
emf = Persistence.createEntityManagerFactory("hdbms",mp);
map.put(unitName, emf);
}
return emf;
}
public static EntityManager get(final String unitName){
ThreadLocal local = factory.get(unitName);
if(local == null){
local=new ThreadLocal(){
protected synchronized EntityManager initialValue() {
EntityManagerFactory emf = getFactory(unitName);
return emf.createEntityManager();
}
};
factory.put(unitName, local);
}
EntityManager em = local.get();
if(em == null||!em.isOpen()){
em = getFactory(unitName).createEntityManager();
local.set(em);
}
return em;
}
public static void close(final String unitName) throws PersistenceException {
ThreadLocal local = factory.get(unitName);
if(local == null) return;
EntityManager em = local.get();
local.set(null);
if (em != null)
em.close();
}
}
基本测试
:
[code="java"]class testDao {
public List> findAllInfoSoure(String unitName) throws PersistenceException {
List> list = null;
EntityManager em = SessionFactory.get(unitName);
try{
list = em.createQuery("FROM xxx po ORDER BY po.xxDESC").getResultList();
}
catch(PersistenceException ex) {
throw new PersistenceException();
}
finally{
if (em.isOpen()) em.close();
}
return list;
}
}
其中:unitName 代表是哪个表
发表评论
-
Maven运行Selenium报错org/w3c/dom/ElementTraversal
2017-06-21 17:11 727Maven运行Selenium报错org/w3c/dom/ ... -
logback日志按天滚动记录
2017-05-09 11:25 2400<?xml version="1.0&quo ... -
spring boot 中用Swagger2 构建API说明文档
2017-05-05 12:10 511maven: <dependency> ... -
SpringMVC测试框架Mock[转载]
2017-02-22 15:09 2758基于RESTful风格的SpringMVC的测试,我们 ... -
maven本地安装jar包
2016-07-22 17:32 490mvn install:install-file -Dfil ... -
java发消息MSMQ
2014-03-31 11:29 1383java发送消息给微软MSMQ的组件 -
maven导出依赖jar包到指定目录
2014-01-22 15:35 744项目建立后,导出依赖jar包到指定目录: mvn d ... -
hadoop执行hadoop namenode -format错误问题
2013-01-02 20:54 9216运行时遇到如下问题: Exception in thread ... -
sql 每个分类取N条数据例子
2012-12-30 09:43 5674取得分组TOP-N测试表与测试数据 CREATE TABLE ... -
effective java第一版系在
2012-12-17 09:16 777做个备注吧,以后又找不到了 -
多线程执行任务
2012-11-19 21:05 797只研究有用的,工作中的需求:要把多个任务分派给多个线程去执行, ... -
java代码构建线程池
2012-11-15 21:48 807在现代的操作系统中, ... -
BugFree说明
2012-08-06 11:55 787BugFree 说明 Fixed 已修复 ... -
android 阅读器分页读取字数
2012-06-05 12:33 3262// 本方法 分行又分页 public static ... -
linux更新系统时间
2012-01-11 10:23 1541检查是否安装过ntp rpm -aq | g ... -
jstl 一些函数用法
2011-11-29 09:44 790fn函数里面有很多好用的方法 <%@ taglib ... -
activeMq 简单的安全设置
2011-11-25 18:40 1169在conf 中找到 jetty.xml 文件 < ... -
activeMq收不到消息
2011-11-25 18:36 1131项目需要应用jms,在本地测试好的,到了服务器就后可以看 ... -
仿goolge验证码,自己没有试过
2011-10-13 14:55 1002仿goolge验证码,自己没有试过 -
Tomcat 配置数据源
2011-09-22 15:22 1001<Resource name="jdbc/ ...
相关推荐
在现代企业级应用程序开发中,数据源管理是一个关键部分,特别是在需要处理来自多个数据库的数据时。Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本...
下面将详细解释如何在Spring Boot中设置JPA的多数据源配置。 首先,我们需要理解数据源是什么。数据源是连接到数据库的桥梁,它封装了数据库连接池,提供获取数据库连接的方法。在Spring Boot中,我们可以使用`...
"spring3+springmvc+jpa+hibernate多数据源"是一个示例项目,它演示了如何在一个应用中集成Spring 3、Spring MVC、JPA 2.0以及Hibernate,以实现对多个数据源的支持。下面将详细介绍这些技术及其集成的关键点。 **...
通过以上步骤,你就可以在Spring Boot项目中成功配置并使用JPA进行多数据源操作了。这种方式允许你灵活地管理不同数据库的数据,对于复杂的分布式系统和多租户应用特别有用。在实际开发中,还可能需要考虑数据源的...
通过配置不同的数据源,我们可以灵活地处理多个数据库的交互,同时利用HikariCP提高性能和稳定性。在实际项目中,根据需求选择合适的方式操作数据源,可以极大地提升开发效率和系统的可维护性。
在Spring Boot应用中,使用Spring Data JPA与MySQL数据库进行多数据源操作是一项常见的需求,尤其是在构建分布式系统或需要处理多个数据库的应用中。本项目"springboot+mysql+jpa多数据源操作源码"旨在提供一个示例...
在SpringBoot中实现多数据源,意味着一个应用可以连接到多个不同的数据库,这在处理分布式系统或需要隔离不同业务数据的情况下非常有用。以下是一些关于SpringBoot 2.1.2.RELEASE与JPA多数据源的关键知识点: 1. **...
多数据源意味着应用程序能够连接并处理来自两个或更多数据库的数据。在Spring Boot中,我们可以使用`@ConfigurationProperties`注解来定义多个数据源的配置,如数据库URL、用户名、密码等。例如: ```java @...
在现代企业级应用程序中,处理多个数据库以支持不同的业务需求是常见的场景。Spring Boot结合JPA(Java Persistence API)和AOP(Aspect Oriented Programming,面向切面编程)提供了一种优雅的方式来配置和管理多...
在IT行业中,尤其是在企业级应用开发中,处理多个数据库已经成为常态。"spring+jpa+atomikos多数据源"是一个重要的技术组合,用于构建能够同时连接并操作不同数据库的应用程序。下面将详细介绍这个主题涉及的知识点...
总之,Spring Boot的多数据源和JTA分布式事务功能为企业级应用提供了强大的支撑,让开发者可以灵活地处理复杂的数据操作和事务管理。如果你是初学者,通过在线教程和提供的`demo`项目,相信你能够快速掌握这一技能。
3. **事务管理**:SpringBoot默认使用LocalContainerEntityManagerFactoryBean处理JPA事务,但在多数据源环境中,需要改为使用Atomikos的`JtaPlatformTransactionManager`。此外,确保开启@...
本篇文章将详细讲解如何在Spring应用中配置JPA,并使用BoneCP作为数据源。 BoneCP是一款高效的、开源的数据库连接池,它能显著提高数据库操作性能。 首先,我们需要理解Spring与JPA的关系。Spring是企业级Java应用...
本项目结合了SpringBoot、Gradle和MyBatis,旨在实现多数据源的动态配置,这对于处理多个数据库或者分库分表的场景尤其有用。以下是对这个项目的详细解析: **SpringBoot** SpringBoot是由Pivotal团队提供的全新...
总的来说,配置Spring JPA的多数据源工程涉及多个步骤,包括添加依赖、配置属性文件、创建数据源bean以及可能的JpaRepository和事务管理。通过这种方式,你可以灵活地管理和操作多个数据库,满足复杂业务场景的需求...
对于多数据源,我们需要在配置文件中定义多个数据源,并为每个数据源指定不同的连接信息,如主机地址、端口、数据库名称和认证信息。 以下是一个示例`application.yml`配置,展示如何配置两个MongoDB数据源: ```...
使用`PlatformTransactionManager`来处理多数据源的事务管理。需要为每个数据源创建一个事务管理器,并在`determineCurrentLookupKey()`返回的键值与之匹配。 ```java @Bean(name = "db1TransactionManager") ...
本项目将介绍如何在SpringBoot项目中结合Maven构建一个支持多数据源的系统,特别是如何处理MySQL和SQLServer两种不同的数据库类型,并使用Druid作为数据源连接池。 首先,我们需要理解“多数据源”这一概念。多数据...
在企业级应用开发中,Spring框架的广泛使用使得数据源管理变得尤为重要,特别是在处理多数据库环境时。"Spring多数据源动态切换方案"是解决这一问题的关键技术,它允许应用程序根据业务需求动态选择数据源,提高了...
在Spring Boot应用中,动态多...总之,Spring Boot的动态多数据源配置结合JPA,提供了一种高效、灵活的解决方案,使得开发者可以轻松处理多个数据库环境。理解并掌握这一技术,对于提升Java后端开发能力具有重要意义。