¿Cuándo usar Long vs long en java?

A continuación es mi interfaz -

public interface IDBClient {
    public String read(ClientInput input);
}

Esta es mi implementación de la interfaz -

public class DatabaseClient implements IDBClient {

    @Override
    public String read(ClientInput input) {

    }
}

Ahora tengo una fábrica que tiene la instancia deDatabaseClient Me gusta esto -

IDBClient client = DatabaseClientFactory.getInstance();
....

Ahora necesito hacer una llamada aread método de miDatabaseClient que acepta elClientInput parámetro y abajo está la clase para el mismo. Esta clase no fue escrita por mí, así que esa es la razón por la que tengo una pregunta sobre esto y estoy bastante seguro de que esta es la forma incorrecta de hacerlo.

public final class ClientInput {

    private Long userid;
    private Long clientid;
    private Long timeout_ms = 20L;
    private boolean debug;
    private Map<String, String> parameterMap;

    public ClientInput(Long userid, Long clientid, Map<String, String> parameterMap, Long timeout_ms, boolean debug) {
        this.userid = userid;
        this.clientid = clientid;
        this.parameterMap = parameterMap;
        this.timeout_ms = timeout_ms;
        this.debug = debug;
    }
}    

Así que cuando el cliente hace una llamada aread método deDatabaseClient, van a crear elClientInput parámetro como este y luego usar la fábrica para obtener la instancia deDatabaseClient y luego llamar al método de lectura en consecuencia.

Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("attribute", "segmentation");

ClientInput input = new ClientInput(109739281L, 20L, paramMap, 1000L, true);

IDBClient client = DatabaseClientFactory.getInstance();
client.read(input);

Planteamiento del problema:-

Así que mi primera pregunta es ¿eluserid, clientid, timeout_ms debiera serLong objeto o simplementelong enClientInput ¿clase?La segunda pregunta que tengo es que es posible que el cliente pueda pasar información incorrecta, comonegative user ids, negative client id, negative timeout Valor, etc, etc. Entonces, ¿dónde debería hacer esta validación? ¿Debo hacer esta verificación de validación en el constructor deClientInput clase o en algún otro lugar? ¿Cuál es la mejor manera de hacer esto y cómo debo hacer la validación?

Respuestas a la pregunta(7)

Su respuesta a la pregunta