Olá Victor, tudo bem?
No contexto da tecnologia que você está usando (Java e JDBC "puro"), a resposta é sim. Existem outras formas de se fazer mas será necessário utilizar outras ferramentas para isso que facilitarão a manutenção e entendimento do código.
Exemplos.:
JPA com Hibernate:
Query query = manager
.createQuery("select t from Tarefa as t "+
"where t.finalizado = :paramFinalizado");
query.setParameter("paramFinalizado", false);
Named Querys com Hibernate:
@NamedQuery(name="Usuario.buscaPorEmail",
query="select u from Usuario u where u.email = :email")
@Entity
public class Usuario {
// ...
}
Utilizando a Named Query em nosso DAO:
public Usuario buscaUsuarioPorEmail(String email) {
return this.manager
.createNamedQuery("Usuario.buscaPorEmail", Usuario.class)
.setParameter("email", email)
.getSingleResult();
}
Obs. Aqui você pode criar uma classe com todas as Named Querys de Usuário por exemplo e no momento da chamada pelo DAO, utiliza o nome definido pela Named Query
Dica: Estude mais sobre o Hibernate, ele possui até mesmo o chamado busca por "Modelo", com isso você tem uma busca dinâmica, com base no que estiver populado o seu modelo ele monta as condições de busca automaticamente.
Existe até um post do blog da Caelum:
http://blog.caelum.com.br/simplifique-suas-consultas-com-o-query-by-example-do-hibernate/
Claro que tudo isso vai depender de onde estiver trabalhando, o ideal é ter uma ideia até onde podemos amadurecer as consultas reduzindo a complexidade e facilitando a manutenção.
Espero que tenha colaborado com a sua dúvida, abraço!