2015-10-05 50 views
1

我正在使用带有Cassandra 2.1的Datastax驱动程序(Java),并且我想知道在性能方面是否有利用Accessor注释的接口而不是Prepared Statements。Datastax对象映射API性能

基本上,我不知道什么是之间的最佳方法:

方法1:

PreparedStatement statement = session.prepare("SELECT * FROM USER WHERE name = ?"); 
ResultSet resultSet = session.execute(statement.bind("someone")); 

User user = userMapper.map(resultSet).one(); 

方法2:

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

来自实例Datastax Documentation

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")); 
} 

回答

2
  1. 我不能找到一个很好的参考链接,但据我所知@Accessor查询准备了。

  2. 您的选择主要取决于您会感觉更舒适的方法。根据您的应用程序,即使使用映射器可能会有一些开销,它可能并不重要。