使用Hibernates Annotations更改表格?

时间:2016-01-15 05:51:30

标签: java spring hibernate

考虑我们将使用以下EMPLOYEE表来存储我们的对象:

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

以下是带有注释的Employee类与具有已定义的EMPLOYEE表的地图对象的映射:

    import javax.persistence.*;

@Entity
@Table(name = "EMPLOYEE")
public class Employee {
   @Id @GeneratedValue
   @Column(name = "id")
   private int id;

   @Column(name = "first_name")
   private String firstName;

   @Column(name = "last_name")
   private String lastName;

   @Column(name = "salary")
   private int salary;  

   public Employee() {}
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getFirstName() {
      return firstName;
   }
   public void setFirstName( String first_name ) {
      this.firstName = first_name;
   }
   public String getLastName() {
      return lastName;
   }
   public void setLastName( String last_name ) {
      this.lastName = last_name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}

我的问题是“如果我以后想要在我的数据库中添加新列,是否需要修改此代码?”

2 个答案:

答案 0 :(得分:1)

如果您想更改数据库,可以,但请记住更新您的应用程序实体类。您可以手动执行此操作,也可以通过添加以下内容让Hibernate自动执行此操作:

<property name="hibernate.hbm2ddl.auto">update</property>

到你的Hibernate配置文件。如果您使用自动版,只需更改Entity类,Hibernate将自动更新DB。

答案 1 :(得分:0)

将新列添加到数据库表时,应用程序仍可正常运行。 但是当你需要在应用程序中使用这个新列时,你应该通过添加新字段并映射值来更新实体类。

@Column(name = "new_column_name")
private int newFieldName;