Hibernate学习4 - 配置文件

x33g5p2x  于2022-06-27 转载在 其他  
字(4.8k)|赞(0)|评价(0)|浏览(469)

配置文件

全局配置文件hibernate.cfg.xml

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <!-- 以/jndi/name绑定到JNDI的SessionFactory实例 -->
    <!--<session-factory name="java:hibernate/SessionFactory">-->
    <session-factory >

        <!--     ===============数据源配置属性===============     -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test?useSSL=false&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai</property>

        <!--     ===============C3P0连接池配置===============    -->
        <!-- 连接池中最少有多少个数据库连接 -->
        <property name="hibernate.c3p0.min_size">30</property>
        <!-- 连接池中允许的最大数据库连接数 -->
        <property name="hibernate.c3p0.max_size">30</property>
        <!-- 最大的PreparedStatement的数量 -->
        <property name="hibernate.c3p0.max_statements">10</property>
        <!--数据库连接不够时,每次增加的连接数-->
        <property name="hibernate.c3p0.acquire_increment">10</property>
        <!--数据库连接不用时,多长时间释放该连接,以秒为单位-->
        <property name="hibernate.c3p0.idle_test_period">10000</property>
        <!--连接处理最大时间,如果超过这个时间,会抛出异常,以豪秒为单位-->
        <property name="hibernate.c3p0.timeout">5000</property>

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

        <!--     ===============功能===============    -->
        <!--打印SQL-->
        <property name="show_sql">true</property>
        <!--格式化SQL语句-->
        <property name="format_sql">true</property>
        <!--是否自动生成数据库-->
        <!--
              1. 啥都不填,hibernate默认数据库中有表
              2. update:动态创建表,映射关系存在表则使用,不存在则创建后在使用
              2. create:根据映射条件创表,如果数据库已经存在该表直接删除,用hibernate新创的 == 看了跟下面create-drop没啥区别
              2. create-drop:根据映射条件创表,如果数据库已经存在该表直接删除,用hibernate新创的
              2. validate:加载文件时,就校验映射文件与数据库表关系是否对应或存在,有问题直接报错
        -->
        <property name="hibernate.hbm2ddl.auto"></property>

        <!--     ===============注册实体关系映射文件===============    -->
        <mapping resource="mapping/SysUser.hbm.xml"></mapping>
        <mapping resource="mapping/Article.hbm.xml"></mapping>
        <!--将此映射文件直接放到跟Bean的源码目录包下的写法-->
        <!--<mapping resource="top/linruchang/entity/SysUser.hbm.xml"></mapping>-->
        <!--<mapping resource="top/linruchang/entity/Article.hbm.xml"></mapping>-->

    </session-factory>

</hibernate-configuration>

Bean映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- package:类似mybatis的Bean别名type-aliases-package这个属性,用于有些属性不用写全限定名-->
<!-- default-lazy:默认启动懒加载,即一对多,多对多,多对一关系上使用-->
<!-- auto-import:默认true,是否可以在查询语句中使用非全限定名,如果项目中有两个同名的Bean,最好在两个映射文件中设置为false-->
<hibernate-mapping package="top.linruchang.entity"  default-lazy="true" auto-import="false">
    
    <!-- dynamic-insert dynamic-update:默认都为false。true时类似 mybatisplus的代码插入Java语句,只要属性是空则update、insert的SQL语句就不会出现该列 -->
    <class name="top.linruchang.entity.MyOrder2" table="my_order" dynamic-insert="true" dynamic-update="false">
        <id name="id" type="java.lang.String">
            <column name="id"></column>
            <!--插入时,如果你没有设置ID,会帮你自动添加ID-->
            <generator class="uuid"></generator>
        </id>

        <property name="name" type="java.lang.String">
            <column name="name"></column>
        </property>

        <property name="money" type="java.lang.String">
            <column name="money"></column>
        </property>
        
        <!-- 多对多配置 == 需要中间表 -->
        <set name="myUser2" table="user_order_rel" lazy="extra">
            <key column="my_order_id" ></key>
            <many-to-many column="my_user_id" class="top.linruchang.entity.MyUser2"></many-to-many>
        </set>

        <!-- 一对多配置 -->
        <set name="articles" table="article">
            <key column="user_id"></key>
            <one-to-many class="top.linruchang.entity.Article"></one-to-many>
        </set>
        
        <!-- 多对一配置 -->
        <many-to-one lazy="no-proxy" name="sysUser" column="user_id" class="top.linruchang.entity.SysUser" />        

    </class>
</hibernate-mapping>

相关文章