生成表是一种常用的数据库技术,它可以帮助我们快速地创建和维护数据库表。它可以自动生成表的结构,并且可以根据需要自动修改表的结构。
使用生成表的方法很简单,首先,你需要在数据库中创建一个新的表,然后使用生成表工具来定义该表的字段、字段类型、字段长度、字段是否可为空、字段是否有默认值等信息。当你定义好这些信息之后,就可以使用生成表工具来创建该表了。
此外,使用生成表还可以帮助你快速地修改数据库中已有的表。例如,如果你想要在一个已有的数据库中新增一个字段,你可以使用生成表工具来快速地定义该字段并将其添加到该数据库中。
CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );
我们可以使用一个表作为id生成表。
以下代码使用@TableGenerator创建表并设置id值的初始值。
然后它使用表来在@GeneratedValue注释中生成值。
@TableGenerator( name = "Address_Gen", table = "ID_GEN", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL", pkColumnValue = "Addr_Gen", initialValue = 10000, allocationSize = 100) @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "Address_Gen") private long id;
下面的代码来自PersonDaoImpl.java。
package cn..common; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.transaction.annotation.Transactional; @Transactional public class PersonDaoImpl { public void test(){ Person p1 = new Person("Tom"); p1.setName("Tom"); Department d = new Department(); d.setName("Design"); p1.setDepartment(d); em.persist(p1); em.persist(d); } @PersistenceContext private EntityManager em; }
下面的代码来自Person.java。
package cn..common; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToOne; import javax.persistence.TableGenerator; @Entity public class Person { @TableGenerator(name = "Address_Gen", table = "ID_GEN", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL", pkColumnValue = "Addr_Gen", initialValue = 10000, allocationSize = 100) @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "Address_Gen") private long id; private String name; @OneToOne private Department department; public Person() {} public Person(String name) { this.name = name; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + "]"; } }
以下代码来自App.java。
package cn..common; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); PersonDaoImpl dao = (PersonDaoImpl) context.getBean("personDao"); dao.test(); context.close(); Helper.checkData(); } }下载 ID_Table_Generator.zip
以下是数据库表转储。
Table Name: ID_GEN Row: Column Name: GEN_NAME, Column Type: VARCHAR: Column Value: Addr_Gen Column Name: GEN_VAL, Column Type: INTEGER: Column Value: 1 Table Name: PERSON Row: Column Name: ID, Column Type: BIGINT: Column Value: 1 Column Name: NAME, Column Type: VARCHAR: Column Value: Tom Column Name: DEPARTMENT_ID, Column Type: BIGINT: Column Value: 1
JPA教程 -JPA ElementCollection映射关键实体示例在JPA中,我们可以将通用类型的Map映射到数据库。以下代码定义了一个通用映射,...
JPA教程 -JPA嵌入式共享示例对于嵌入式实体,我们可以在不同实体之间共享它们。当嵌入它时,我们也可以覆盖可嵌入的实体。以下代...
JPA教程 -JPA 一对一映射示例本节介绍如何在JPA映射中执行一对一映射。此示例假设一个人只能是一个部门的一部分,而一个部门只能...
JPA教程 -JPA双向多对多映射示例以下代码显示如何创建双向多对多映射。例子以下代码来自Professor.java。package cn..common;imp...
JPA教程 -JPA多对一连接列示例以下代码标记了在多对一映射中使用的连接列。@ManyToOne (cascade=CascadeType.ALL)@JoinColumn(na...