import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
import com.datastax.oss.driver.api.querybuilder.select.Select;
import com.datastax.oss.driver.api.core.cql.PreparedStatement;
import com.datastax.oss.driver.api.core.cql.ResultSet;
public class AnyRepository {
public List<Any> selectAll(String keyspace) {
Select select = QueryBuilder.selectFrom(TABLE_NAME).all();
ResultSet resultSet = executeStatement(select.build(), keyspace);
List<Any> result = new ArrayList<>();
resultSet.forEach(x -> result.add(
new Any(x.getUuid("video_id"), x.getString("title"), x.getInstant("creation_date"))
));
return result;
}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.utils.UUIDs;
public class CassandraClient {
private static final Logger LOG = LoggerFactory.getLogger(CassandraClient.class);
public static void main(String args[]) {
// 1. 카산드라 DB에 연결 설정
CassandraConnector connector = new CassandraConnector();
connector.connect("127.0.0.1", null); // null -> 기본 포트 (9042) 연결
Session session = connector.getSession();
// 2. 스키마 만들기
KeyspaceRepository sr = new KeyspaceRepository(session);
sr.createKeyspace("library", "SimpleStrategy", 1); // 이름 = library, 전략 2가지 중 선택 : Simple 또는 Network Topology, 복제 개수
sr.useKeyspace("library");
// 3. 책 테이블 만들고 데이터 추가, 삭제
BookRepository br = new BookRepository(session);
br.createTable();
br.alterTablebooks("publisher", "text"); // text 타입이고 이름이 publisher인 컬럼 추가
br.createTableBooksByTitle();
Book book = new Book(UUIDs.timeBased(), "Effective Java", "Joshua Bloch", "Programming");
br.insertBookBatch(book); // 배치 쿼리 이용해서 두개의 테이블에 동일 데이터 삽입
br.selectAll().forEach(o -> LOG.info("Title in books: " + o.getTitle()));
br.selectAllBookByTitle().forEach(o -> LOG.info("Title in booksByTitle: " + o.getTitle())); //
br.deletebookByTitle("Effective Java");
br.deleteTable("books");
br.deleteTable("booksByTitle");
sr.deleteKeyspace("library");
connector.close();
}
}