La anotación @Id ofrece el mecanismo más simple para definir la correlación con la clave primaria.
No es recomendable utilizar tipos de coma flotante (float y double y sus clases de envoltura) para datos decimales ya que puede tener errores de redondeo y el resultado del operador equals no es fiable en estos casos. En su lugar utilice BigDecimal.
La anotación @Id encaja bien en casos en que haya disponible una clave primaria natural o cuando los diseñadores de bases de datos utilizan claves primarias sustitutas (normalmente un entero) que no tiene ningún valor descriptivo y que no se obtiene a partir de los datos de la aplicación en la base de datos. Por otro lado, las claves compuestas son útiles cuando la clave primaria de la tabla de base de datos correspondiente consta de más de una columna. Las claves compuestas pueden definirse mediante la anotación @IdClass o @EmbeddedId.