forked from Impetus/kundera
-
Notifications
You must be signed in to change notification settings - Fork 0
Native CQL3 to object mapping
chhavigangwal edited this page Nov 6, 2013
·
5 revisions
Set CQL version 3:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("cassandra_pu");
EntityManager em = emf.createEntityManager();
em.setProperty("cql.version", "3.0.0");
Relation Mapping in Kundera and Cassandra :
An Employee entity to be persisted in cassandra using Kundera
@Entity
public class EmployeeInfo
{
@Id
@Column(name = "UserID")
@TableGenerator(name = "id_gen", allocationSize = 1, initialValue = 1)
@GeneratedValue(generator = "id_gen", strategy = GenerationType.TABLE)
private Long userid;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "address_id")
private EmployeeAddress address;
Cassandra Equivalent :
CREATE TABLE "EmployeeInfo" (
key bigint PRIMARY KEY,
address_id bigint
) ;
CREATE INDEX EmployeeInfo_address_id_idx ON "EmployeeInfo" (address_id);
Employee's address entity to be persisted in cassandra using Kundera
@Entity
public class EmployeeAddress
{
@Id
@Column(name = "RegionID")
@TableGenerator(name = "id_gen", allocationSize = 1, initialValue = 1)
@GeneratedValue(generator = "id_gen", strategy = GenerationType.TABLE)
private Long address;
@Column(name="street")
private String street;
Cassandra Equivalent :
CREATE TABLE "EmployeeAddress" (
key bigint PRIMARY KEY,
street text
) ;
Persisting and querying the data using Kundera :
EntityManager em = emf.createEntityManager();
EmployeeInfo emp_info = new EmployeeInfo();
EmployeeAddress address_info = new EmployeeAddress();
address_info.setStreet("street");
emp_info.setAddress(address_info);
em.persist(emp_info);
Objects stored in Cassandra :
select * from "EmployeeInfo";
key | address_id
-----+------------
1 | 1
select * from "EmployeeAddress";
key | street
-----+-----------
1 | newStreet
-
Datastores Supported
- Releases
-
Architecture
-
Concepts
-
Getting Started in 5 minutes
-
Features
- Object Mapper
- Polyglot Persistence
- Queries Support
- JPQL (JPA Query Language)
- Native Queries
- Batch insert update
- Schema Generation
- Primary Key Auto generation
- Transaction Management
- REST Based Access
- Geospatial Persistence and Queries
- Graph Database Support
-
Composite Keys
-
No hard annotation for schema
-
Support for Mapped superclass
-
Object to NoSQL Data Mapping
-
Cassandra's User Defined Types and Indexes on Collections
-
Support for aggregation
- Scalar Queries over Cassandra
- Connection pooling using Kundera Cassandra
- Configuration
- [Kundera with Couchdb] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with--Couchdb)
- [Kundera with Elasticsearch] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with-Elasticsearch)
- [Kundera with HBase] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with-HBase)
- [Kundera with Kudu] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with-Kudu)
- [Kundera with MongoDB] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with-MongoDB)
- [Kundera with OracleNoSQL] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-OracleNoSQL)
- [Kundera with Redis] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-over-Redis)
- [Kundera with Spark] (https://github.com/impetus-opensource/Kundera/wiki/Kundera-with-Spark)
-
Extend Kundera
- Sample Codes and Examples
- [Blogs and Articles] (https://github.com/impetus-opensource/Kundera/wiki/Blogs--and-Articles)
-
Tutorials
* Kundera with Openshift
* Kundera with Play Framework
* Kundera with GWT
* Kundera with JBoss
* Kundera with Spring
-
Performance
-
Troubleshooting
-
FAQ
- Production deployments
- Feedback