A very good question.
I suspect that it depends on your implementation of the entity manager
but most likely is that all fields are in the resulting SQL whether they
have changed or not. With EJB3, POJO based entities there are no
application server generated files like with EJB 2x.
With EJB2x the container generated the actually concrete implementation
and could therefore inject code that would detect which fields have
changed. EJB3 is based on reflection which makes this detection more
difficult (but not impossible).
It should be a problem as the update will occur in a single SQL
statement regardless but if for some reason this makes a big difference
in your application I can only suggest you run a trace on your database
and look at the SQL. I don't believe the spec is clear on how updates
should be performed leaving the decision to the implementer. If this is
the case, be aware that any reliance on a particular behaviour may not
be portable between entity manager providers.