2016-12-12 34 views
1

我正在尋找Spring + Hibernate + Cassandra示例項目。 沒有什麼好處嗎?如何使用Spring + Hibernate + Cassandra組合運行

儘管我試圖尋找和嘗試,但我嘗試了各種方法,但都失敗了。

作爲一種方式感興趣的是Hibernate OGM。

所以我先做了Spring + Hibernate + MySQL環境(它工作正常) 我決定修改它。

來源如下。

https://github.com/hidetarou2013/SpringDataBaseSample

  • 功能/ MySQL的:正常運行證實
  • 功能/ cassandra_1:我在掙扎。它不好用。

發展環境

  • IDE:昴-E4.5
  • JRE:JavaSE的-1.8
  • 的Tomcat:8.0.26
  • org.springframework版本:4.0.3。 RELEASE
  • hibernate.version:4.3.6.Final
  • 卡桑德拉:version3.9

最不清楚的地方在於spring.xml的「Hibernate 4 Session Factory Bean」。

設置如下。

<!-- Hibernate 4 SessionFactory Bean definition --> 
<bean id="hibernate4AnnotatedSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="annotatedClasses"> 
     <list> 
      <value>jp.ken.databasesample.entity.Employees</value> 
      <value>jp.ken.databasesample.entity.Departments</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <!-- 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 

      <prop key="hibernate.dialect">org.hibernate.dialect.Dialect</prop> 
      --> 
      <!-- --> 
      <prop key="hibernate.dialect">org.hibernate.ogm.dialect.cassandra.CassandraCQL2Dialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.ogm.datastore.provider">org.hibernate.ogm.datastore.cassandra.impl.CassandraDatastoreProvider</prop> 
      <prop key="hibernate.ogm.datastore.host">localhost</prop> 
      <prop key="hibernate.ogm.datastore.port">9042</prop> 
      <prop key="hibernate.ogm.datastore.database">spring_database</prop> 
      <prop key="hibernate.search.lucene_version">LUCENE_CURRENT</prop> 
      <prop key="hibernate.ogm.cassandra.url">jdbc:cassandra://localhost:9160</prop> 
      <prop key="hibernate.ogm.cassandra.default_keyspace">spring_database</prop> 
      <prop key="hibernate.ogm.cassandra.autogenerate">update</prop> 
      <!-- --> 

     </props> 
    </property> 
</bean> 

「hibernate4AnnotatedSessionFactory」, 「hibernate.dialect」, 「hibernate.ogm.datastore.provider」 這些設置是否正確?

我想諮詢Hivernate和Cassandra的專家。

當前顯示的錯誤日誌如下。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'departmentsListController' defined in file [C:\pleiades\pleiades-e4.5\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SpringDataBaseSample\WEB-INF\classes\com\example\springdatabasesample\controller\DepartmentsListController.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076) 


Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernate4AnnotatedSessionFactory' defined in class path resource [spring.xml]: Invocation of init method failed; nested exception is org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.ogm.dialect.cassandra.CassandraCQL2Dialect] as strategy [org.hibernate.dialect.Dialect] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 


Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.ogm.dialect.cassandra.CassandraCQL2Dialect] as strategy [org.hibernate.dialect.Dialect] 
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128) 
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155) 

謝謝。

+0

這是你的類路徑org.hibernate.ogm.dialect.cassandra.CassandraCQL2Dialect?你錯過了一個JAR嗎? – gumenimeda

+0

Gumenimeda,謝謝你的評論。 我的項目的pom.xml具有以下設置。 https://github.com/hidetarou2013/SpringDataBaseSample/blob/feature/cassandra_1/pom.xml 在休眠-OGM-卡桑德拉-4.2.0.Final.jar, org.hibernate.ogm.datastore .cassandra.CassandraDialect 還有就是, org.hibernate.ogm.dialect.cassandra.CandandraCQL 2方言 有沒有。 順便說一句,有在hibernate-ogm-core-4.2.0.Final 沒有CassandraCQL2Dialect我們相信依賴性關係設置是不夠的...... 但它是什麼?.... –

+0

我指的是以下信息,但我沒有關於「hibernate.dialect」的信息。 順便說一句,休眠,OGM,Cassandra是由artifactId的設置。 [LINK](http://docs.jboss.org/hibernate/ogm/4.2/reference/en-US/html/ch14.html#cassandra_specific_configuration_properties) –

回答

1

我個人不會使用任何與Cassandra有關的工具。你有沒有看過Spring Data for Cassandra

這些工具需要了解的是,與使用關係數據庫相比,對象關係映射(ORM)的用處遠遠不夠。 Cassandra中的數據應該使用非規範化的數據模型存儲,這意味着如果可能的話,您的查詢應該能夠從單個表中檢索所有相關數據。

能夠以編程方式創建查詢可能也沒有優勢。在卡桑德拉表只能用於查詢的有限數量的優化,在大多數情況下,你只能使用1-2查詢檢索基於鍵的組合數據。

雖然一些基本的POJO映射可以方便,ORM框架發揮相比於傳統的關係數據庫管理系統應用程序卡桑德拉一種較顯著的作用。

+0

To Stefan Podkowinski 對於遲到的反應,我很抱歉。感謝您的寶貴意見。 卡桑德拉的彈簧數據 我也想調查。然而,在我使用Spring MVC的經驗中,我提出了Entity和DAO, 我習慣於使用org.hibernate.Session或org.hibernate.Query,並且我想使用Transaction來處理任何事情。 在Cassandra的Spring數據中,我想看看是否有易於理解的樣本。 –

0

但是也有一些不需要OGM一些配置屬性:

  • 的Hibernate OGM不需要這個屬性:hibernate.ogm.cassandra.url
  • 你應該設置「hibernate.ogm.datastore。供應商」,以CASSANDRA_EXPERIMENTAL
  • 的Hibernate OGM不需要屬性 「hibernate.dialect」
+0

我不知道。謝謝你告訴我有價值的信息。我會在稍後檢查。 –

相關問題