您的位置:首页 > 数据库 > MySQL

【hibernate】01-mysql存储引擎与配置文件分析

2013-04-18 00:30 567 查看

mysql存储引擎与自动提交问题

学习jdbc时jdbc 事物自动提交缺省是true   所以用户的每一条sql语句都会自动提交 不需要用户手工提交   

但是hibernate 缺省    把自动提交关闭  所以如果当mysql 用的存储引擎是InoDB时必须开启提交事物  对数据库增删改操作才能有效

如果发现不用transaction.commit() 提交  也可以对数据库增删改操作  那是因为mysql 自动默认存储引擎是 MyISAM 

它不支持事物提交与回滚。所以开启事物与不开启事物都没作用  都可以数据库增删改操作

在大数据处理的时候InnoDB可能会更快一些 建议用InnoDB

1、查看mysql存储引擎命令,在mysql>提示符下输入show engines;字段 显示内容中Default表示默认存储引擎

2、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句.

总配置文件分析

 

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接驱动类 -->

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 关于连接数据库的url和用户名和密码-->

<property name="connection.url">jdbc:mysql://localhost:3306/hibernatetest</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<!-- 采用的数据库的方言或者说语法格式 -->

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 表示按照标准格式在控制台上输出SQL语句,默认为false。建议在调试程序时设为true -->

<property name="hibernate.format_sql">true</property>
<!-- update 加载hibernate自动更新数据库结构-->

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

<!-- 执行过程中显示hibernate的sql语句 -->

<property name="show_sql">true</property>
<!-- 定持久化类映射文件的位置,由包名与映射文件组成,包名与映射文件之间用“/”分隔-->

<mapping resource="cn/itcast/domin/User.hbm.xml" />
</session-factory>
</hibernate-configuration>

 

注意

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

的值可以是  validate   create create-drop update

 

validate 加载hibernate时,验证创建数据库表结构

create 每次加载hibernate,重新创建数据库表结构,会删除以前的表。这就是导致数据库表数据丢失的原因。

create-drop 加载hibernate时创建,退出时删除表结构

update 加载hibernate自动更新数据库结构

 

By  变坏的好人

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: