Hibernate(5.3.7版本)核心XML文件

版权声明:版权所有@万星明 https://blog.csdn.net/qq_19533277/article/details/84893464

1、*.hbm.xml文件详解

该文件是将对象持久化到关系型数据库中的相关信息,结构基本相同:

<?xml version="1.0"?>
<!--映射文件的dtd信息-->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- page为包名 -->
<hibernate-mapping package="wan.bean">
    <!--name代表实体类名,table代表表名-->
    <class name="Classes" table="classes">
        <!--name=id代表类中属性,column=id代表表中字段-->
        <id name="id" type="int">
            <column name="id" />
            <generator class="native" /><!--主键的生成策略-->
        </id>
        <!--其他属性使用property标签-->
        <property name="cname" column="cname" type="string"/>
        
        <!-- 外键,对应得表为中间表,对应键为c_id -->
        <set name="teacherSet" table="classes_teacher" >
            <key>
                <column name="c_id"/>
            </key>
            <!-- 多对多对应Teacher POJO类,该类对应中间表的t_id  -->
            <many-to-many class="Teacher" column="t_id"/>
        </set>
        
        
    </class>
</hibernate-mapping>

a:hibernate-mapping元素
定义了xml配置文件基本属性:
page:为映射文件中的类指定包前缀,用于非全限定类名
schema:指定数据库schema名
catalog:指定数据库catalog名
default-access:指定hibernate用来访问属性时所使用的策略,默认property。
(default-access=“property”:使用getter和setter方法访问成员变量)
(default-access=“field”:使用反射访问成员变量)
default-cascade:指定默认级联样式,默认为空
default-lazy:指定hibernate默认采用的延迟加载策略,默认为true

b:class元素
声明一个持久化类,是主要配置内容,通过它定义持久化类和数据库表之间的映射关系。
name:持久化类或接口的全限定类名。若未定义,则hibernate将映射视为POJO实体的映射
table:持久化类对应得数据库表名,默认为持久化类的非限定类名
mutable:指出该持久化类实例是否可变
catalog:数据库catalog名称,如果指定,则覆盖hibernate-mapping元素的catalog属性值
lazy:指定是否使用延迟加载
rowid:指定是否可以使用rowid

c:id元素
name:标识持久化类OID的属性名
type:数据类型。如果没有设定类型,hibernate会用反射持久化类的特定属性的java类型,然后自动使用与之对应得默认的映射类型。推荐使用包装类型。
column:设置标识属性所映射的数据列的列名(主键字段的名字)
unsaved—value:若设定了该属性,Hibernate会通过比较持久化类的OID值和该属性值来区分当前持久化类对象是否为临时对象。
access:指定hibernate对标识属性的访问策略,默认property。

d:property元素
使用该元素将持久化类的普通属性映射在数据库表的对应字段上。

<property name="name" column="name" type="string">

name:映射类属性名
column:数据库表中对应得字段名
type:映射字段的数据类型
lazy:指定当持久化类的实例首次被访问时,是否对该属性使用延迟加载
unique:是否对映射列产生一个唯一性约束。
not-null:是否允许映射类为空
access:Hibernate访问该持久化类属性值所使用的策略

2、*.cfg.xml文件详解

<?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="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/week12</property>
	<property name="connection.username">root</property>
	<property name="connection.password">1234567890</property>
	
	<!-- 连接池 -->
	<property name="connection.pool_size">5</property>
	<!-- 方言 可以配置不同的数据库方言,底层会显示相应数据库的sql语句 -->
	<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <!-- getCurrentSession()得到session时需要配置 -->
	<property name="current_session_context_class">thread</property>
	<!-- 缓存 -->
	<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
	<!-- 显示sql -->
	<property name="show_sql">true</property>
	<property name="format_sql">false</property>
	<!-- 映射关系配置好后,会自动创建表,字段等信息 -->
	<property name="hbm2ddl.auto">update</property>
	<!--事务是否自动提交-->
   <property name="connection.autocommit">false</property>
  	
	<!-- 设置映射文件 -->
	<mapping resource="entity/User.hbm.xml"/>
	<mapping resource="entity/Order.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

在Hibernate中配置使用C3P0:
导包>添加配置信息>使用
包在链接中添加链接描述

配置信息:
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
#hibernate.c3p0.max_size 2
#hibernate.c3p0.min_size 2
#hibernate.c3p0.timeout 5000
#hibernate.c3p0.max_statements 100
#hibernate.c3p0.idle_test_period 3000
#hibernate.c3p0.acquire_increment 2
#hibernate.c3p0.validate false

猜你喜欢

转载自blog.csdn.net/qq_19533277/article/details/84893464