todas secuencias manytoone las idclass generatedvalue embeddedid ejemplo anotaciones java sql hibernate

java - manytoone - secuencias en jpa



¿Cuál es el uso de las anotaciones @Id y @GeneratedValue(strategy=GenerationType.IDENTITY)? ¿Por qué el tipo de generación es identidad? (2)

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)

¿Por qué estamos usando estas anotaciones? Necesito saber si este autoincremento mi ID de tabla valora. (GenerationType.IDENTITY) ¿Hay algún otro tipo que esté sucediendo realmente cuando usamos esta anotación?

public class Author extends Domain { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Basic(optional = false) @Column(name = "name") private String name; @Column(name = "address") private String address; @OneToMany(cascade = CascadeType.ALL, mappedBy = "authorId") private List<Book> bookList; public Author() { setServiceClassName("wawo.tutorial.service.admin.AuthorService"); } }

* ¿Es necesario extender la clase abstracta del dominio? ¿Cuál es el uso?


Déjame responder 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 anotación @Id se hereda de javax.persistence.Id , lo que indica que el campo miembro a continuación es la clave principal de la entidad actual. Por lo tanto, su marco Hibernate y Spring así como también puede reflect algunas obras basadas en esta anotación. para más detalles, consulte javadoc para Id

La anotación @GeneratedValue es para configurar el modo de incremento de la columna especificada (campo). Por ejemplo, al usar Mysql , puede especificar auto_increment en la definición de tabla para hacerlo auto_increment , y luego usar

@GeneratedValue(strategy = GenerationType.IDENTITY)

en el código de Java para indicar que también reconoció utilizar esta estrategia del lado del servidor de la 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 la 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 lo que quiere llamar en Java. Debe especificar sequenceName si es diferente del name ; de lo contrario, solo use name . Por lo general, ignoro sequenceName para ahorrar mi tiempo.

3. Usa secuencia en Java

Finalmente, es hora de usar esta secuencia en Java. Solo agrega @SequenceGenerator :

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")

El campo generator refiere a qué generador de secuencia desea usar. Observe que no es el nombre de secuencia real en DB, sino el nombre que especificó en el campo de name 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 el desarrollo de su JavaWeb.


En un contexto de Asignación relacional de objetos, cada objeto debe tener un identificador único. Utiliza la anotación @Id para especificar la clave principal de una entidad.

La anotación @GeneratedValue se utiliza para especificar cómo debe generarse la clave principal. En su ejemplo, está utilizando una estrategia de Identity que

Indica que el proveedor de persistencia debe asignar claves principales para la entidad utilizando una columna de identidad de base de datos.

Hay otras estrategias, puedes ver más here .