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" />这里就是映射了,我们上篇的那个元数据的配置文件

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38827988/article/details/89876188