Datastax 对象映射 API 性能
Datastax Object Mapping API Performances
我正在将 Datastax 驱动程序 (Java) 与 Cassandra 2.1 一起使用,我想知道在性能方面,使用访问器注释的接口而不是准备好的语句是否有好处。
基本上,我想知道什么是最好的方法:
方法一:
PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?");
ResultSet resultSet = session.execute(statement.bind("someone"));
User user = userMapper.map(resultSet).one();
和
方法二:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM USERS WHERE name = :name")
User getUser(@Param("userName") String name);
}
...
MappingManager manager = new MappingManager (getSession());
User user = new User ();
UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
User user = userAccessor.getUser("someone");
此外,如果我想要性能,我应该使用这个映射器,还是使用 POJO 的简单绑定语句更好?
PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?");
BoundStatement bind= statement.bind("someone");
ResultSet results = session.execute(bind);
for (Row row : results) {
User user = new User (row.getString("name"));
}
我找不到对 link 的很好的参考,但是 afaik @Accessor
查询也准备好了。
您所做的选择主要取决于您会觉得更舒服的方法。根据您的应用程序,即使使用映射器可能会产生一些开销,也可能并不重要。
我正在将 Datastax 驱动程序 (Java) 与 Cassandra 2.1 一起使用,我想知道在性能方面,使用访问器注释的接口而不是准备好的语句是否有好处。
基本上,我想知道什么是最好的方法:
方法一:
PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?");
ResultSet resultSet = session.execute(statement.bind("someone"));
User user = userMapper.map(resultSet).one();
和
方法二:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM USERS WHERE name = :name")
User getUser(@Param("userName") String name);
}
...
MappingManager manager = new MappingManager (getSession());
User user = new User ();
UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
User user = userAccessor.getUser("someone");
此外,如果我想要性能,我应该使用这个映射器,还是使用 POJO 的简单绑定语句更好?
PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?");
BoundStatement bind= statement.bind("someone");
ResultSet results = session.execute(bind);
for (Row row : results) {
User user = new User (row.getString("name"));
}
我找不到对 link 的很好的参考,但是 afaik
@Accessor
查询也准备好了。您所做的选择主要取决于您会觉得更舒服的方法。根据您的应用程序,即使使用映射器可能会产生一些开销,也可能并不重要。