有两种方法:
一:在配置文件中加上 <property name="hibernate.hbm2ddl.auto">create</property>
这个语句,然后我们再执行任何检索、更新等操作的时候就会自动建表
hibernate.hbm2ddl.auto Automatically validate or export schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly. eg. validate | update | create | create-drop
其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构。
如果没有此方面的需求建议set value="none".
其它几个参数的意思:
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构(如果表存在,先删除再创建,原有数据丢失)
create-drop 加载hibernate时创建,退出时删除表结构
update 加载hibernate自动更新数据库结构(schema发生改变时进行更新,比如添加字段,保留原有数据)
如果发现数据库表丢失或新增,请检查hibernate.hbm2ddl.auto的配置 可设置 <property name="hibernate.hbm2ddl.auto" value="none" />
建议在开发环境下使用,在生产环境下去掉。
优点:
1、自动创建新表
2、自动创建新字段
3、自动修改字段类型
缺点:
1、不会自动删除表
2、不会自动删除字段
3、自动创建的新字段只能是在最后。
二: 编写一个方法,方法内容如下:
Configuration conf=new Configuration();
conf.configure("/hibernate.cfg.xml");
SchemaExport dbExport=new SchemaExport(conf);
dbExport.create(true, true);
注意: .cfg.xml文件中dialect必须配置正确,才能正确创建表
<property name="dialect">org.hibernate.dialect.HSQLDialect</property><!-- cannot create table -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- OK -->
ps:建议仅在练习中如上述方法创建。因为存在以下问题:
1:只能创建表不能创建数据库
2:创建的表的数据类型、长度经常跟我们实际需要不符。
4:缺少初始化数据。
相关推荐
通过Hibernate,开发者可以创建Java对象(实体类),这些对象与数据库中的表进行映射,从而实现对数据库数据的CRUD(创建、读取、更新、删除)操作。 **实体类编写规则**: 1. 实体类的属性应声明为私有的。 2. ...
Query By Criteria(QBC)是一种基于对象的查询方式,它允许开发者通过构建Criteria对象来描述查询条件,然后由Hibernate自动转换为相应的SQL语句执行。这种方式提供了比HQL(Hibernate Query Language)更灵活的...
7. **事务(Transaction)**:在Hibernate中,事务处理是通过`Transaction`接口实现的,它提供了开始、提交、回滚等方法。 8. **查询语言(HQL)**:Hibernate Query Language,类似SQL,但面向对象,用于查询持久...
级联操作是Hibernate提供的一种便捷特性,它使得在一个实体对象发生变化时,可以自动影响与其关联的其他对象的状态,无需显式调用每个相关对象的保存或更新方法。 在这个项目中,级联保存的实现主要涉及到以下几个...
4. **创建Hibernate Java表映射**:使用Database Explorer工具从现有的数据库表生成对应的Java类和.hbm文件。 #### 六、测试Hibernate演示应用 完成项目的创建和配置后,接下来就是编写代码并测试Hibernate功能。...
标题"Hibernate自动创建表结构示例--Oracle"表明我们将使用Hibernate在Oracle数据库中自动生成表结构,这是通过Hibernate的`hibernate.hbm2ddl.auto`配置属性实现的。这个属性可以设置为"create"、"update"、...
- **一级缓存**:Hibernate 自动维护的一级缓存,用于存储从数据库加载的数据。 - **二级缓存**:可选地添加外部缓存插件(如 Ehcache)来提高性能。 - **懒加载**:默认情况下,Hibernate 使用懒加载策略来延迟加载...
Hibernate Envers是一个审计模块,它可以自动记录实体的修改历史。通过Envers,开发者可以轻松实现数据的版本控制和历史查询,这对于审计或回溯操作十分有用。 8. **注解(Annotations)** 注解是Java中的一种元...
4. Java实体类:工具会根据数据库表的字段自动生成Java实体类,包括getter和setter方法、构造函数以及属性声明。这些实体类可以直接在你的项目中使用。 使用这个工具,你还可以定制生成的代码风格,比如字段命名...
6. **运行应用**:启动应用,Hibernate会根据实体类和配置自动创建相应的数据库表。 在提供的链接`https://purplesunset.iteye.com/blog/500979`中,可能详细阐述了这些步骤,并给出了更多实践示例。在实际项目中,...
当运行这个程序时,Hibernate会检查配置,并根据实体类自动创建相应的数据库表。在完成所有操作后,关闭SessionFactory以释放资源。 总的来说,通过使用Hibernate的注解和自动建表功能,我们可以轻松地在Java应用中...
Hibernate允许开发者用面向对象的方式来处理数据库操作,通过XML或注解定义对象与数据库表的映射关系,实现了对象和数据的自动转换。它提供了Session接口用于数据库的交互,事务管理以及对象的状态管理,包括瞬时态...
**hibernate_third项目源码**是一份专用于展示Hibernate框架不同查询技术的代码实例,涵盖了query、criteria以及SQL查询等多种方法。通过深入理解和实践这些源码,开发者可以更好地掌握Hibernate在实际开发中的应用...
- Entity映射:使用Hibernate的注解或XML文件(如.hbm.xml)将Java类映射到数据库表,定义实体属性、主键、关联关系等。 3. 主要API使用: - Session的save()、saveOrUpdate()、update()和merge()方法:分别用于...
1. 加载与存储:当调用Session的get()或load()方法时,如果对象不在一级缓存中,Hibernate会查询数据库并将结果存入缓存。 2. 更新与删除:更新实体时,Hibernate会标记缓存中的对象为“脏”(dirty),并在事务...
8. **索引注解 (@Index)**:用于为数据库表的列创建索引,提升查询效率。 9. **转换注解 (@Type)**:允许自定义类型转换,处理特殊类型的属性。 10. **子类继承注解 (@Inheritance)**:支持类继承时的表继承策略,...
它允许开发者用Java对象来表示数据库中的表,通过Hibernate API可以实现对数据库的操作,而无需编写SQL语句。这使得代码更加面向对象,易于理解和维护。Hibernate还支持事务管理、缓存策略和查询语言HQL,增强了...
6. **中间表操作**:在多对多关系中,Hibernate默认会创建一个中间表,但在这个项目中,开发者可能手动管理这个中间表,通过Session的save(), update()和delete()方法进行操作。 7. **SessionFactory和Session**:...
3. **集成 Compass 和 Hibernate**:利用 Compass 的 Hibernate 插件,将 Hibernate 的实体自动同步到 Compass 索引中。这样,每当数据库中的数据发生变化时, Compass 的索引也会随之更新。 4. **创建搜索服务**:...