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个
myeclipse中把表反向生成实体类需要利用hibernate的逆向工程。
1、打开myeclipse database explore视图
2、在空白区点击右键,新建一个数据库对象。
点击add jars,加入数据库的jar文件。
填写connection url: jdbc:mysql://localhost:3306/hibernatetab2pojo
用户名和密码:root
driver name: com.mysql.jdbc.driver
3、转回到java视图,在项目上点击右键,选择myeclipse-->add hibernate capabilities
4、然后下一步选中一个目录存放自动生成hibernate.cfg.xml文件,一般毫无例外的放在src根目录下,下一步选中我们第一步建立的那个数据库对象,然后下一步选中一个目录存放自动生成的hibernatesessionfactory工具类,这个hibernatesessionfactory工具类就是一个获取session的单例,还有一些其它关闭session之类的方法。
5、转换到myeclipse database explorer视图,打开我们的数据库:hibernatetab2pojo,展开表,选中所有表:
6、然后,点击右键,选择hibernate reverse engineering。
7、选中:create pojo<>,选中create a hibernate,选中update hibernate,接着下一步。
8、直接点击finish即可以生成实体类和相应的hbm.xml文件。并且hibernate.cgf.xml也会配置好。