hbm2ddl.auto
时间: 2023-09-13 20:06:35 浏览: 174
hbm2ddl.auto是Hibernate框架中的一个配置属性,用于自动创建数据库表结构的功能。它有以下几个可选值:
- `create`: 每次启动应用程序时,都会删除现有的数据库表并重新创建新的表结构。
- `create-drop`: 每次启动应用程序时,都会删除现有的数据库表并重新创建新的表结构。当应用程序关闭时,也会删除这些表。
- `update`: 每次启动应用程序时,会根据实体类的定义和数据库表结构的差异来更新数据库表结构。
- `validate`: 每次启动应用程序时,会校验实体类的定义和数据库表结构是否一致,如果不一致则会抛出异常。
这个属性通常是在Hibernate的配置文件中进行设置,以告诉Hibernate如何处理数据库表结构与实体类之间的映射关系。需要注意的是,在生产环境中,通常不建议使用`create`或`create-drop`选项,因为这会导致现有数据的丢失。而`update`或`validate`选项则更适合生产环境的使用。
相关问题
hibernate.hbm2ddl.auto
hibernate.hbm2ddl.auto是Hibernate配置文件中的一个属性,用于指定Hibernate在启动时如何自动创建和更新数据库表结构。它有以下几个可选值:
1. validate:Hibernate启动时会校验实体类和数据库表结构是否一致,如果不一致则会抛出异常。
2. update:Hibernate启动时会根据实体类的定义自动更新数据库表结构,但不会删除已经存在的表或字段。
3. create:Hibernate启动时会根据实体类的定义自动创建数据库表结构,但如果表已经存在则会抛出异常。
4. create-drop:Hibernate启动时会根据实体类的定义自动创建数据库表结构,但在Hibernate关闭时会自动删除表结构。
一般来说,我们在开发阶段使用update或create,而在生产环境中使用validate或不设置该属性。
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingResources"> <list> <value>Teachinfo.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean>能在这里添加什么属性来防止只读吗
可以添加以下几个属性来防止只读:
1. `hibernate.connection.isolation`:设置数据库连接的隔离级别,可以将其设置为 `READ_COMMITTED` 或更高的级别,以确保只能进行读写操作而不是只读操作。
2. `hibernate.connection.autocommit`:将其设置为 `false`,以确保每个事务都需要手动提交或回滚,从而避免只读事务。
3. `hibernate.transaction.flush_before_completion`:将其设置为 `true`,以确保在事务提交之前,将所有挂起的更改立即刷新到数据库中,从而避免只读事务。
4. `hibernate.default_read_only`:将其设置为 `false`,以确保默认情况下可以进行写操作,从而避免只读事务。
5. `hibernate.connection.readOnly`:将其设置为 `false`,以确保连接不是只读连接,从而避免只读事务。
阅读全文