Which one should I use, int or Integer in data transfer objects

Integer is a better option, as it can handle null; for int, null would become 0, silently, if resultSet.getInt(..) is used. Otherwise, it might throw some exception, something like, “Unable to set null to a primitive property“.

Performance is of little concern here:

  • If you choose int, you will end-up adding extra handling code; and that wouldn’t benefit you much. Your code will not be clean and straight-forward, a lot of boiler-plate code, and you wouldn’t even gain performance.
  • let me make it clear, for databases, null is not same as zero. Sometimes you end-up entering 0, where null was intended. Imagine the case where user submitted a form and doesn’t supply any value for int. You will end up getting 0 by default. It makes sense or does that really when that field is not null in the database.