Olá, minha dúvida é como mapear um campo como sendo chave-primária em uma tabela, e quais as consequêmcias de utilizar updatable = false, insertable=false na anotação @Colum? 
Dúvida: Mapeamento de campo como chave-primária
4 Respostas
O SQL Server suporta apenas @GeneratedValue(strategy=GenerationType.IDENTITY) ou suporta outros tipos? :?:
Olá Marcio,
Na verdade as anottations servem apenas para você padronizar a forma de mapeamento da sua entidade com o banco de dados.
Se vc estiver usando o Hibernate com a anotação JPA (Java Persistence API, pacote javax.persistence), para você deterinar um atributo como chave primária vocÊ vai usar a anotação @Id, juntamente com o a anotação @GeneratedValue(strategy=GenerationType.IDENTITY) para determinar a forma de incremento do campo de chave primária. O identity é quando vc define usar o auto incremento da propria tabela, ou seja o banco de dados se encarrega de incrementar os registros.
No SQL Server o auto incremento é identity mesmo. tanto na annotation quanto na SQL pura.
Obs.: Prefira sempre usar as anottations do JPA. Pesquise mais sobre isso e você verá as vantagens.
Fallow
Oi Paulo, obrigado pela ajuda.
Deixa eu ver se entendi bem:
strategy=GenerationType.IDENTITY é utilizado quando se quer trabalhar com campos definidos como auto numeração sob controle(gerenciamento) do sql server?
Isso mesmo, até mesmo pq se você inserir a propriedade hbmddl-auto no Hibernate-config ou no persistense.xml do jpa quando o banco for criado pelo hibernate na sql de criação ele ja inckui pra vc como “create table teste id integer not null identity”…, etc…
OK!
Fallow