Debería bloquear solo la entidad.
El dialecto de hibernación de PostgreSQL agrega for update
en caso de bloqueos de escritura:https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQL81Dialect.java#L549 (las versiones más nuevas solo usan la misma implementación)
for update
PostgreSQL lo trata por filas:https://www.postgresql .org/docs/9.5/static/explicit-locking.html