快速业务通道

Java开发2.0: 使用Hibernate Shards进行切分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
on>   <session-factory name="HibernateSessionFactory0">     <property name="dialect">org.hibernate.dialect.HSQLDialect</property>     <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>     <property name="connection.url">       jdbc:hsqldb:file:/.../db01/db01      </property>     <property name="connection.username">SA</property>     <property name="connection.password"></property>     <property name="hibernate.connection.shard_id">0</property>     <property name="hibernate.shard.enable_cross_shard_relationship_checks">true      </property>   </session-factory> </hibernate-configuration>

Java开发2.0: 使用Hibernate Shards进行切分(5)

时间:2010-10-26 IBM Andrew Glover

如其名字所示,enable_cross_shard_relationship_checks 属性对跨切分关系进行了检查。根据 Hibernate Shards 文档记录,该属性非常耗时,在生成环境中应该关闭。

最后,ShardedSessionFactoryBuilder 通过创建 ShardStrategyFactory ,然后添加三个类型(包括 清单 1 中的 RacerShardSelectionStrategy),将一切都整合到了一起,如清单 7 中所示:

清单 7. 创建 ShardStrategyFactory

private ShardStrategyFactory buildShardStrategyFactory() {  ShardStrategyFactory shardStrategyFactory = new ShardStrategyFactory() {  public ShardStrategy newShardStrategy(List<ShardId> shardIds) {   ShardSelectionStrategy pss = new RacerShardSelectionStrategy();   ShardResolutionStrategy prs = new AllShardsShardResolutionStrategy(shardIds);   ShardAccessStrategy pas = new SequentialShardAccessStrategy();   return new ShardStrategyImpl(pss, prs, pas);  }  };  return shardStrategyFactory; }

最后,我执行了那个名为 createSessionFactory 的绝妙方法,在本示例中创建了一个 ShardedSessionFactory,如清单 8 所示:

清单 8. 创建 ShardedSessionFactory

public SessionFactory createSessionFactory() {  Configuration prototypeConfig = this.getPrototypeConfig   (this.hibernateConfigurations.get(0), this.resourceConfigurations);  List<ShardConfiguration> shardConfigs = new ArrayList<ShardConfiguration>();  for (String hibconfig : this.hibernateConfigurations) {  shardConfigs.add(buildShardConfig(hibconfig));  }  ShardStrategyFactory shardStrategyFactory = buildShardStrategyFactory();  ShardedConfiguration shardedConfig = new ShardedConfiguration(   prototypeConfig, shardConfigs,shardStrategyFactory);  return shardedConfig.buildShardedSessionFactory(); }

使用 Spring 连接域对象

现在可以深呼吸一下了,因为我们马上就成功了。到目前为止,我已经创建一个可以合理配置 ShardedSessionFactory 的生成器类,其实就是实现 Hibernate 无处不在的 SessionFactory 类型。ShardedSessionFactory 完成了切分中所有的神奇。它利用我在 清单 1 中所部署的切分选择策略,并从我配置的两个切分中读写数据。(清单 6 显示了切分 0

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号