二、Hibernate配置文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mChenys/article/details/84583037

配置文件之映射文件

映射文件通常保存在和实体bean的同一个包下,命名格式建议为:类名.hbm.xml,例如Customer.hbm.xml。

<hibernate-mapping>标签:根节点
<class>标签: 用来将类与数据库表建立映射关系,包含以下属性

  • name:类的全路径
  • table :表名,(类名与表名一致,那么table属性也可以省略)
  • catalog:数据库的名称,基本上都会省略不写

<id>标签: 用来将类中的属性与表中的主键建立映射,id标签就是用来配置主键的,包含以下属性:

  • name :类中的属性名
  • column :表中的字段名.(如果类中的属性名与表中的字段名一致,那么column可以省略.)
  • length:字段的程度,如果数据库已经创建好了,那么length可以不写。如果没有创建好,生成表结构时,length最好指定。

<generator>标签:主键的生成策略,一共有6种:

  • increment:适用于short,int,long作为主键.不是使用的数据库自动增长机制.
    Hibernate中提供的一种增长机制,即
    先进行查询 :select max(id) from user; 再进行插入:获得最大值+1作为新的记录的主键.
    问题:不能在集群环境下或者有并发访问的情况下使用.

  • identity:适用于short,int,long作为主键。但是这个必须使用在有自动增长数据库中(如mysql).采用的是数据库底层的自动增长机制.
    底层使用的是数据库的自动增长(auto_increment).而Oracle数据库是没有自动增长则不能采用这种策略了.

  • sequence:适用于short,int,long作为主键.底层使用的是序列的增长方式.
    Oracle数据库底层没有自动增长,想自动增长需要使用序列.

  • uuid:适用于char,varchar类型的作为主键.
    使用随机的字符串作为主键.

  • native:本地策略.根据底层的数据库不同,自动选择适用于该种数据库的生成策略.(short,int,long)

    • 如果底层使用的MySQL数据库:相当于identity.
    • 如果底层使用Oracle数据库:相当于sequence.
  • assigned:主键的生成不用Hibernate管理了.必须手动设置主键.

在上面6种策略当中,只有native和uuid策略是最常用的

<property>标签: 用来将类中的普通属性与表中的字段建立映射,包含以下属性:

  • name: 类中的其他属性名
  • column:表中的字段名.(如果类中的属性名与表中的字段名一致,那么column可以省略.)
  • length:数据长度
  • type:数据类型(一般都不需要编写,如果写需要按着规则来编写)
    • Hibernate的数据类型 type=“string”
    • Java的数据类型 type=“java.lang.String”
    • 数据库字段的数据类型添加子节点<column name="name" sql-type="varchar"/>

下面是一个完整的映射文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<!-- 配置类名和表名的映射 -->
	<class name="blog.csdn.net.mchenys.domain.Customer" table="cst_customer">
		
		<!-- 配置类属性和表结构字段的映射
			 name属性:JavaBean的属性 
			 column属性:表结构的字段 
		-->
	
		<!--配置主键属性  -->
		<id name="cust_id" column="cust_id">
			<!-- 主键的生成策略 native表示由hibernate维护-->
			<generator class="native" />
		</id>

		<!-- 配置其他的属性 -->
		<property name="cust_name" column="cust_name" />
		<property name="cust_user_id" column="cust_user_id" />
		<property name="cust_create_id" column="cust_create_id" />
		<property name="cust_source" column="cust_source" />
		<property name="cust_industry" column="cust_industry" />
		<property name="cust_level" column="cust_level" />
		<property name="cust_linkman" column="cust_linkman" />
		<property name="cust_phone" column="cust_phone" />
		<property name="cust_mobile" column="cust_mobile" />

	</class>
</hibernate-mapping>

配置文件之核心文件

核心配置文件必须放在web项目的src目录下,命名格式必须是hibernate.cfg.xml
<hibernate-configuration>标签:根节点
<session-factory>标签:指定会话工厂,用于创建session用的,一个数据库对应一个SessionFactory标签。
<property>标签:用于设置各种属性
<mapping>标签:用于指定映射配置文件的路径,hibernate只有通过这里配置的路径才能找到javabean和数据库表的对应关系,也就是Xxx.hbm.xml文件。

5大必要属性包括:
设置数据库连接信息(占4个):

  • hibernate.connection.driver_class – 连接数据库驱动程序
  • hibernate.connection.url – 连接数据库URL
  • hibernate.connection.username – 数据库用户名
  • hibernate.connection.password – 数据库密码

设置方言(1个)

  • hibernate.dialect – 操作数据库方言

可选的配置

  • hibernate.show_sql – 显示SQL
  • hibernate.format_sql – 格式化SQL
  • hibernate.hbm2ddl.auto – 通过映射转成DDL语句
    • create – 每次都会创建一个新的表,没什么意义。
    • create-drop – 每次都会创建一个新的表,当执行结束之后,将创建的这个表删除,没什么意义。
    • update – 如果有表,使用原来的表.没有表,创建一个新的表.同时支持新增字段,当不支持删除字段,通常使用这个。
    • validate – 如果有表,使用原来的表.同时校验映射文件与表中字段是否一致如果不一致就会报错.

上面提到的这些属性其实都可以在hibernate下载的包里面找到,具体路径是在hibernate解压根目录\project\etc\hibernate.properties

下面是一个完整核心配置文件的配置

<?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>

	<!-- 记住:先配置SessionFactory标签,一个数据库对应一个SessionFactory标签 -->
	<session-factory>

		<!-- 必须要配置的参数有5个,4大参数,数据库的方言 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">1234</property>

		<!-- 数据库的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>


		<!-- 可选配置 -->
		<!-- 显示SQL语句,在控制台显示 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化SQL语句 -->
		<property name="hibernate.format_sql">true</property>
		<!-- 生成数据库的表结构 
			update:如果没有表结构,创建表结构。如果存在,不会创建,可动态添加字段(新增属性和映射即可),不能删除字段
		-->
		<property name="hibernate.hbm2ddl.auto">update</property>

		<!-- 映射配置文件,需要引入映射的配置文件 -->
		<mapping resource="blog/csdn/net/mchenys/domain/Customer.hbm.xml" />

	</session-factory>

</hibernate-configuration>	

猜你喜欢

转载自blog.csdn.net/mChenys/article/details/84583037
今日推荐