The answer depends on how you use the class...

If you want your class to be immutable, you'll have to use constructor parameters.

If you want your class to be deserializable by relection based (de)serializers, you will need a default constructor and setters.

If your class isn't supposed to be immutable and you want consumers to be able to change all the properties during the objects' lifetime, then you will need to add setters anyway (or add modification methods, which may seem less straightforward to consumers).