¿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&nbsp;método deDatabaseClient, van a crear elClientInput&nbsp;parámetro como este y luego usar la fábrica para obtener la instancia deDatabaseClient&nbsp;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&nbsp;debiera serLong&nbsp;objeto o simplementelong&nbsp;enClientInput&nbsp;¿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&nbsp;Valor, etc, etc. Entonces, ¿dónde debería hacer esta validación? ¿Debo hacer esta verificación de validación en el constructor deClientInput&nbsp;clase o en algún otro lugar? ¿Cuál es la mejor manera de hacer esto y cómo debo hacer la validación?