hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
三楼正解。我这里给出通过Annotation的方式生成表的实体类:
1.先要创建自己的数据库,内容可以为空,表在之后自动生成。
2..在sessionFactory的配置属性里加上
其中lx.model就是实体类所在的包
3.写实体类,加上Annotation,下面是一个简单的例子
package lx.model;
//import ...
@Entity
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column
private String username;
@Column
private String password;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.运行,查看数据库中是否已经自动生成相应的表。
Myeclipse 有个 jpa 插件 直接用jpa tools 有 通过表生成实体和通过实体生产表2个
是根据表生成实体类吧
根据实体生成类,有两种方式,一种配置文件生成,一种注解方式生成,具体可以上网查找,网上很多例子