Permítanme responder a esta pregunta: en
primer lugar, usar anotaciones como nuestro método de configuración es solo un método conveniente en lugar de hacer frente al archivo de configuración XML sin fin.
La @Id
anotación se hereda de javax.persistence.Id
, lo que indica que el campo de miembro a continuación es la clave principal de la entidad actual. Por lo tanto, su marco de Hibernate y Spring, así como también puede hacer algunos reflect
trabajos basados en esta anotación. para obtener más información, compruebe javadoc para la identificación
La @GeneratedValue
anotación es para configurar la forma de incremento de la columna (campo) especificada. Por ejemplo, al usar Mysql
, puede especificar auto_increment
en la definición de tabla para que sea auto incremental y luego usar
@GeneratedValue(strategy = GenerationType.IDENTITY)
en el código Java para indicar que también reconoció utilizar esta estrategia del lado del servidor de base de datos. Además, puede cambiar el valor en esta anotación para adaptarse a diferentes requisitos.
1. Definir secuencia en la base de datos
Por ejemplo, Oracle tiene que usar sequence
como método de incremento, digamos que creamos una secuencia en Oracle:
create sequence oracle_seq;
2. Consulte la secuencia de la base de datos
Ahora que tenemos la secuencia en la base de datos, pero necesitamos establecer la relación entre Java y DB, usando @SequenceGenerator
:
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
sequenceName
es el nombre real de una secuencia en Oracle, name
es como quiere llamarlo en Java. Debe especificar sequenceName
si es diferente de name
, de lo contrario, simplemente use name
. Normalmente lo ignoro sequenceName
para ahorrar tiempo.
3. Usar secuencia en Java
Finalmente, es hora de hacer uso de esta secuencia en Java. Solo agrega @GeneratedValue
:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
El generator
campo se refiere al generador de secuencias que desea utilizar. Observe que no es el nombre de secuencia real en DB, sino el nombre que especificó en el name
campo de SequenceGenerator
.
4. Completa
Entonces, la versión completa debería ser así:
public class MyTable
{
@Id
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
private Integer pid;
}
Ahora comience a usar estas anotaciones para facilitar su desarrollo JavaWeb.