Hibernate框架学习_主配置
主配置文件位置与名称都有特定位置与名称,至于为什么,请看下一篇
主配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///emp</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">12345</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 映射 -->
<mapping resource="com/yl/domain/Customer.hb.xml" />
</session-factory>
</hibernate-configuration>
第一步:查找所有的值
DTD约束
去哪里找?
这里
问题:如何找到property标签name属性中的那些值呢?例如下图这种
找到我们在hibernate官网下载的文件夹
其中的project/etc文件夹中有所有的配置文件
我们这里在hibernate.properties文件中搜索MYSQL就可以找到所有有关于mysql连接的name的值,例如下图
我们接着搜索show关键字就可以找到两个name的值
通过搜索hbm就可以找到最后一个name的值
第二步:解释
一.
<!-- 驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 表名 -->
<property name="hibernate.connection.url">jdbc:mysql:///emp</property>
<!-- 用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 密码 -->
<property name="hibernate.connection.password">12345</property>
<!-- 数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
上面4个都熟悉,而数据库方言的意思就是,某些特定的数据库有特殊的语句,例如,mysql中可能有select * from 8,这里mysql规定表名可以是数字,而oracle数据库可能就说表名必须是英文字母,而我这里因为使用了mysql所以就使用了mysql的方言.方言不就是指某个地方的语言么!这个地方可能这样说,那个地方可能这样说!
二.
<!-- 控制台打印sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="hibernate.format_sql">true</property>
第一句就是在控制台打印SQL语句,如果没有第二句,控制台输出的语句只有一行
第二句就是控制台数据的语句要格式化,就是换行,方便人类查看
三.自动建表
<property name="hibernate.hbm2ddl.auto">update</property>
其实这项配置代表着一种思想,我们传统的都是在数据库中建立表然后再建立domain/POJO对象,将各个字段与类中变量对应
而这项配置的思想是,我们不在数据库中建立表,而是先建立POJO对象,然后通过这句话在数据库中自动建立表.
因此,只要配置了这句话,我们数据库中没有这个表也会自动建立表
这个有四种选择:create,create-drop,update,validate
create:自动建表,每次框架运行后都会再次建立新的表覆盖原来的表,因此原来的数据也就没了(开发时使用)
create-drop:自动建表,每次框架运行后都会删除所有表(开发时使用)
update:自动建表,如果存在就不再生成表,表有变动则自动更新表(推荐使用)
validate:校验,不自动生成表,每次启动都会校验数据库表是否正确,不正确则报错.
四.映射
<mapping resource="com/yl/domain/Customer.hb.xml" />这里就是映射了,我们上篇的那个元数据的配置文件