Java Datastax对象映射API性能

Java Datastax对象映射API性能,java,performance,cassandra,datastax,Java,Performance,Cassandra,Datastax,我正在Cassandra 2.1中使用Datastax驱动程序(Java),我想知道在性能方面,使用访问器注释的接口而不是准备好的语句是否有好处 基本上,我想知道以下两者之间的最佳方法是什么: 方法1: PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?"); ResultSet resultSet = session.execute(statement.bind("someone"))

我正在Cassandra 2.1中使用Datastax驱动程序(Java),我想知道在性能方面,使用访问器注释的接口而不是准备好的语句是否有好处

基本上,我想知道以下两者之间的最佳方法是什么:

方法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");

方法2:

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的简单绑定语句更好

示例来自

  • 我找不到一个好的参考链接,但是afaik
    @Accessor
    查询也准备好了

  • 你所做的选择主要取决于你会觉得更舒服的方法。根据您的应用程序,即使在使用映射器时可能会有一些开销,但这可能并不重要