CacheConfig class: /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
package org.apache.ignite.organization; import java.sql.*; import java.util.*; import org.apache.ignite.cache.*; import org.apache.ignite.cache.store.jdbc.*; import org.apache.ignite.configuration.*; /** * CacheConfig definition. * * Code generated by Apache Ignite Schema Import utility: 04/11/2016. */ public class CacheConfig { /** * Create JDBC type for organization. * * @param cacheName Cache name. * @return Configured JDBC type. */ private static JdbcType jdbcTypeOrganization(String cacheName) { JdbcType jdbcType = new JdbcType(); jdbcType.setCacheName(cacheName); jdbcType.setDatabaseSchema("ORG"); jdbcType.setDatabaseTable("organization"); jdbcType.setKeyType("org.apache.ignite.organization.OrganizationKey"); jdbcType.setValueType("org.apache.ignite.organization.Organization"); // Key fields for organization. Collection<JdbcTypeField> keys = new ArrayList<>(); keys.add(new JdbcTypeField(Types.INTEGER, "orgId", int.class, "orgid")); jdbcType.setKeyFields(keys.toArray(new JdbcTypeField[keys.size()])); // Value fields for organization. Collection<JdbcTypeField> vals = new ArrayList<>(); vals.add(new JdbcTypeField(Types.INTEGER, "orgId", int.class, "orgid")); vals.add(new JdbcTypeField(Types.VARCHAR, "orgname", String.class, "orgname")); jdbcType.setValueFields(vals.toArray(new JdbcTypeField[vals.size()])); return jdbcType; } /** * Create SQL Query descriptor for organization. * * @return Configured query entity. */ private static QueryEntity queryEntityOrganization() { QueryEntity qryEntity = new QueryEntity(); qryEntity.setKeyType("org.apache.ignite.organization.OrganizationKey"); qryEntity.setValueType("org.apache.ignite.organization.Organization"); // Query fields for organization. LinkedHashMap<String, String> fields = new LinkedHashMap<>(); fields.put("orgid", "int"); fields.put("orgname", "String"); qryEntity.setFields(fields); // Indexes for organization. Collection<QueryIndex> idxs = new ArrayList<>(); idxs.add(new QueryIndex("orgId", true, "PRIMARY")); qryEntity.setIndexes(idxs); return qryEntity; } /** * Create JDBC type for person. * * @param cacheName Cache name. * @return Configured JDBC type. */ private static JdbcType jdbcTypePerson(String cacheName) { JdbcType jdbcType = new JdbcType(); jdbcType.setCacheName(cacheName); jdbcType.setDatabaseSchema("ORG"); jdbcType.setDatabaseTable("person"); jdbcType.setKeyType("org.apache.ignite.organization.PersonKey"); jdbcType.setValueType("org.apache.ignite.organization.Person"); // Key fields for person. Collection<JdbcTypeField> keys = new ArrayList<>(); keys.add(new JdbcTypeField(Types.INTEGER, "id", int.class, "id")); jdbcType.setKeyFields(keys.toArray(new JdbcTypeField[keys.size()])); // Value fields for person. Collection<JdbcTypeField> vals = new ArrayList<>(); vals.add(new JdbcTypeField(Types.INTEGER, "id", int.class, "id")); vals.add(new JdbcTypeField(Types.VARCHAR, "first_name", String.class, "firstName")); vals.add(new JdbcTypeField(Types.VARCHAR, "last_name", String.class, "lastName")); vals.add(new JdbcTypeField(Types.INTEGER, "orgId", Integer.class, "orgid")); jdbcType.setValueFields(vals.toArray(new JdbcTypeField[vals.size()])); return jdbcType; } /** * Create SQL Query descriptor for person. * * @return Configured query entity. */ private static QueryEntity queryEntityPerson() { QueryEntity qryEntity = new QueryEntity(); qryEntity.setKeyType("org.apache.ignite.organization.PersonKey"); qryEntity.setValueType("org.apache.ignite.organization.Person"); // Query fields for person. LinkedHashMap<String, String> fields = new LinkedHashMap<>(); fields.put("id", "int"); fields.put("firstName", "String"); fields.put("lastName", "String"); fields.put("orgid", "Integer"); qryEntity.setFields(fields); // Indexes for person. Collection<QueryIndex> idxs = new ArrayList<>(); idxs.add(new QueryIndex("id", true, "PRIMARY")); qryEntity.setIndexes(idxs); return qryEntity; } /** * Configure cache. * * @param cacheName Cache name. * @param storeFactory Cache store factory. * @return Cache configuration. */ public static <K, V> CacheConfiguration<K, V> cache(String cacheName, CacheJdbcPojoStoreFactory<K, V> storeFactory) { if (storeFactory == null) throw new IllegalArgumentException("Cache store factory cannot be null."); CacheConfiguration<K, V> ccfg = new CacheConfiguration<>(cacheName); ccfg.setCacheStoreFactory(storeFactory); ccfg.setReadThrough(true); ccfg.setWriteThrough(true); // Configure JDBC types. Collection<JdbcType> jdbcTypes = new ArrayList<>(); jdbcTypes.add(jdbcTypeOrganization(cacheName)); jdbcTypes.add(jdbcTypePerson(cacheName)); storeFactory.setTypes(jdbcTypes.toArray(new JdbcType[jdbcTypes.size()])); // Configure query entities. Collection<QueryEntity> qryEntities = new ArrayList<>(); qryEntities.add(queryEntityOrganization()); qryEntities.add(queryEntityPerson()); ccfg.setQueryEntities(qryEntities); return ccfg; } } -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/How-to-load-2-tables-in-a-cache-tp4026p4128.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.