开发网页游戏过程记录21-hibernate配置

接下来是介绍hibernate的配置了,首先是hibernate.cfg.xml文件,这里我们用到了proxool这个数据库连接池,proxool.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>Only_DBPool</alias> <driver-url> jdbc:mysql:loadbalance://192.168.x.x:3306 </driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="xxx"/> <property name="password" value="xxxxxx"/> <property name="autoReconnect" value="true" /> <property name="autoReconnectForPools" value="true" /> <property name="loadBalanceStrategy" value="random" /> </driver-properties> <statistics>1m,30m,1d</statistics> <prototype-count>1</prototype-count> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <!-- test-before-use>true</test-before-use--> <house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql> <maximum-connection-count>30</maximum-connection-count> <minimum-connection-count>5</minimum-connection-count> <maximum-connection-lifetime>18000000</maximum-connection-lifetime> <!-- 5 hours --> <simultaneous-build-throttle>20</simultaneous-build-throttle> <recently-started-threshold>60000</recently-started-threshold> <overload-without-refusal-lifetime>60000</overload-without-refusal-lifetime> <maximum-active-time>240000</maximum-active-time> <verbose>false</verbose> <trace>false</trace> </proxool> </something-else-entirely>配置好proxool就可以在hibernate配置文件中配置proxool连接池了,如这里:

<hibernate-configuration> <session-factory> <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property> <property name="hibernate.proxool.pool_alias">Only_DBPool</property><!--这里的别名是在proxool配置文件中的<alias>所配置的--> <property name="hibernate.proxool.xml">../conf/database/proxool.xml</property> </session-factory> </hibernate-configuration>在这里的hibernate配置文件当中没有配置我们之前常用的一些pojo类的mapping,我们将pojo类的mapping配置文件单独区分开来,达到层次分明,如我们这里的pojo mapping配置文件:

<hibernate-configuration> <session-factory> <mapping resource="com/Club.hbm.xml" /> <class-cache class="com.pojo.Club" usage="nonstrict-read-write" /> </session-factory> </hibernate-configuration>这个配置文件只是列出了一个例子,如果又要加的后面加上即可。

配置好了hibernate的基础文件以后我们还需要在spring的配置文件加上hibernate的支持以集成hibernate,如下:

<bean id="abstractSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" abstract="true"> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.jdbc.fetch_size">30</prop> <prop key="hibernate.jdbc.batch_size">30</prop> <prop key="hibernate.max_fetch_depth">3</prop> <prop key="hibernate.default_batch_fetch_size">30</prop> <prop key="hibernate.order_updates">true</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.use_sql_comments">true</prop> <prop key="hibernate.connection.autocommit">${hibernate.connection.autocommit}</prop> <prop key="hibernate.cache.use_second_level_cache">false</prop> <prop key="hibernate.cache.use_query_cache">false</prop> <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> <prop key="hibernate.cache.use_structured_entries">false</prop> <prop key="hibernate.connection.release_mode">auto</prop> <prop key="hibernate.current_session_context_class">jta</prop> <prop key="hibernate.cache.provider_class">com.googlecode.hibernate.memcached.MemcachedCacheProvider</prop> <prop key="hibernate.memcached.memcacheClientFactory">com.bfgame.cache.hibernate.SpyMemcacheClientFactory</prop> <prop key="hibernate.memcached.servers">${hibernate.memcached.servers}</prop> <prop key="hibernate.memcached.readBufferSize">${hibernate.memcached.readBufferSize}</prop> <prop key="hibernate.memcached.operationQueueLength">${hibernate.memcached.operationQueueLength}</prop> <prop key="hibernate.memcached.operationTimeout">${hibernate.memcached.operationTimeout}</prop> <prop key="hibernate.memcached.hashAlgorithm">NATIVE_HASH</prop> <!-- DefaultConnectionFactory, KetamaConnectionFactory, BinaryConnectionFactory --> <prop key="hibernate.memcached.connectionFactory">DefaultConnectionFactory</prop> <prop key="hibernate.memcached.clearSupported">false</prop> <prop key="hibernate.memcached.cacheTimeSeconds">${hibernate.memcached.cacheTimeSeconds}</prop> <prop key="hibernate.memcached.threadLocalCacheEnabled">true</prop> </props> </property> </bean> <!-- SessionFactory --> <bean id="slaveSessionFactory" parent="abstractSessionFactory"> <property name="entityInterceptor"> <bean class="com.dao.EntityInterceptor"> <property name="readOnly" value="true"/> </bean> </property> <property name="configLocations"> <list> <value>/WEB-INF/conf/database/hibernate.cfg.xml</value> <value>/WEB-INF/conf/database/mapping.cfg.xml</value> </list> </property> </bean><bean id="slaveHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="slaveSessionFactory" /> </bean>

上面用到了memcached的配置,这个配置在这里就不介绍了,因为memcache是公司内部自己封装的关于cache操作的类。

配置完成之后,现在还需要利用上文的AtomikosDataSource来对pojo类进行事务控制,如下:

<bean id="gameSessionFactory" parent="abstractSessionFactory"> <property name="dataSource" ref="gameDataSource"/> <property name="configLocations"> <list> <value>/WEB-INF/conf/database/mapping.cfg.xml</value> </list> </property> </bean>上文少说了一句,如果项目当中会关联到多个数据库,这时候就会有多个dataSource的配置,我们可以像上文那样再写一个dataSource,但是uniqueResourceName一定得是不相同的,否则不会报错但是就是不会达到我们想要的目的。所以这里要小心。
至此hibernate和spring集成的配置基本上已经完成,接下来就是struts的配置和一些dao,service之类的配置了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值