当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

hibernate多服务器间数据同步[Java编程]

赞助商链接



  本文“hibernate多服务器间数据同步[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

需求功效介绍:

为性能考虑,单一服务器改成集群(每太服务器数据答应在一按时间内保持相步),给出的改正时间短,不过代码长期层对比统一(hibernate 感激天还好是她! ).网络衔接不安定(铁路内网!).

完成后效果:

当网络衔接成功时,大都据库的同步.

当网络衔接失利时,本地利用程序应用hibernate拦阻器拦阻正操作对象并记录下操作行动,序列化到本地局势库 z_jcyy_tb 表中.表数据属性为:id,inputdate(记录时间),object(序列对象),action(操作行动).并安一按时间测试衔接.假如成功,读取 z_jcyy_tb 表中数据 反序列化 再同步到 其他数据库中.

代码阐明:

1.新Session 成立

hibernate.cfg.xml 在文件<session-factory>中增添

<property name="connection.url_b">jdbc:oracle:thin:@192.168.1.114:1521:JCYY</property>
   <property name="connection.username_b">jcyy</property>
   <property name="connection.password_b">jcyy</property>

TBDao -> OpenSession()

private static String url_b = null ;
private static String use_b = null ;
private static String pass_b = null ;
private static String dirver_b = null ;
static {try {
//获得hibernate.cfg.xml逻辑途径,和本来程序关联上 
     Field field  =  SessionManager.class.getDeclaredField("CONFIG_FILE_LOCATION");
field.setAccessible( true );
String path = (String) field.get(SessionManager. class );
//通过 dom4j 加载 配置文件
     Document docT = new SAXReader().read( TBDao.class.getResourceAsStream(path) );
//正则+xpath读取 在hbn文件中加入的<property name="..._b"> 的属性
     String xpath = "/hibernate-configuration/session-factory/property[@name='XPATH_I']" ;
Pattern p = Pattern.compile("(XPATH_I)");
Matcher ma = p.matcher(xpath);
url_b = DocumentHelper.createXPath( ma.replaceAll("connection.url_b") ).selectSingleNode(docT).getText();
use_b = DocumentHelper.createXPath( ma.replaceAll("connection.username_b")).selectSingleNode(docT).getText();
pass_b = DocumentHelper.createXPath( ma.replaceAll("connection.password_b")).selectSingleNode(docT).getText();
dirver_b = DocumentHelper.createXPath( ma.replaceAll("connection.driver_class")).selectSingleNode(docT).getText();
} catch (Exception e) {e.printStackTrace();}}
//操纵hbn的SessionFactory得到 openSession(Connection); 翻开异地数据库衔接.
//操纵私有反射得到 加载完成的SessionFactory
   public Session openSessionb(){
try {
Class.forName(dirver_b);
Connection conn = DriverManager.getConnection(url_b,use_b,pass_b);
Field[] fields  =  SessionManager.class.getDeclaredFields();
Field field = null ;
for(int i=0;i<fields.length;i++){
if( SessionFactory.class.equals( fields[i].getType() ) )
field = fields[i];
}
field.setAccessible(true);
SessionFactory sessionFactory = (SessionFactory) field.get(SessionManager.class );
return sessionFactory.openSession(conn);
} catch (Exception e) {
System.out.println("--没有衔接到总服务(openSessionb)--");
return null ;
}
}


  以上是“hibernate多服务器间数据同步[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在Hibernate里面动态切换SChema实现访谒差别的数据库的几种办法
  • Hibernate 3新增XML关系长期性介绍
  • Hibernate配置文件在单元测试中的操纵
  • 在Hibernate中动态切换Schema
  • hibernate annoation (八 关联映射)
  • hibernate annoation (九 cascading)
  • <b>hibernate annoation (十 映射查询)</b>
  • hibernate annoation(十一 缓存Ehcache 采纳annoation)
  • Hibernate:操作配置文件生成数据库
  • hibernate annoation (一 加载)
  • hibernate annoation (二 成立表)
  • <b>hibernate annoation (三 id生成器)</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .