Hibernate配置

 

 

 

  1. 核心配置文件

     

  2. 映射配置文件

     

  3. 配置本地的DTD约束

     

 

 

01

核心配置文件

 

Hibernate核心配置文件传递的是连接数据库的必备信息,还有一些可选配置,所以在一个使用Hibernate的工程中需要去完成一个这样的配置文件

 

我们可以去下载下来的Hibernate包中的测试工程去拿一份

Hibernate配置_数据库

 

默认名为hibernate.cfg.xml,一般不去改这个名字。因为Configuration类里面

加载核心配置文件的方法传入名就是这个

 

Hibernate配置_mysql_02Hibernate配置_配置文件_03

 

hibernate.cfg.xml

Hibernate配置_mysql_04

 

这是直接在测试工程中拿的,我们可以去删掉内容

<!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>
                
    </session-factory>
</hibernate-configuration>

连接不同的数据库的它的配置属性名不一样,所以它提供了一个各大数据库的配置模板,在文件包中的测试工程的etc里

Hibernate配置_mysql_05

 

它里面包含很多数据库,我这里用的mysql所以我就看mysql的

 

Hibernate配置_mysql_06

## MySQL

#hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test#hibernate.connection.username gavin
#hibernate.connection.password

必须配置的其实就是下面四个(驱动包、url路径、用户名、密码)还加一个方言dialect,因为不同的数据库sql语言有点差别,最后按照上面模板的属性名去配置即可

 <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

 <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>

 <property name="hibernate.connection.url">jdbc:mysql:///hibernate?serverTimezone=Asia/Shanghai</property>

 <property name="hibernate.connection.username">root</property>

 <property name="hibernate.connection.password">123456</property>

还有一些可选配置(显示sql、格式sql、自动建表)

<property name="hibernate.show_sql">true</property>

<property name="hibernate.format_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

show_sql开了后,hibernate给你自动生成执行的语句会在控制台打印给你

 

format_sql:将控制台显示的sql语句格式化

 

hbm2ddl.auto:有5种属性值

none 不使用hibernate的自动建表
create 如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表
create-drop

启动时删除表,再建表。关闭时再删除表

update

如果数据库中有表,使用原有表,如果没有表,创建新表

validate

如果没有表,不会创建表,报错

除了这些连接配置外,还有最后一个加载映射配置文件。

<mapping resource="com/hao/domain/Student.hbm.xml"/>

 

 

02

映射配置文件

 

映射配置文件关于表和domain类的映射,列字段与属性的映射

class标签:建立类与表的映射关系

id标签:建立类中的属性与表中主键的对应关系

property标签:用于建立类中普通属性与表的对应关系

<?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="com.hao.domain.Student" table="student">

        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name"/>
        <property name="age"  column="age"/>
     </class>
</hibernate-mapping>
标签 属性
class name 类全限定名
table 表名
catalog 数据库名(可省)
id name 类属性名
column 表字段名
length 字段长度
type 字段类型
property name 类属性名
column 表字段名
length 字段长度
type 字段类型
not-null 不允许为空
unique 唯一

由于没有对应映射的表时它会自动去创建表,所以这个时候就还需要知道字段长度,类型,是否为空这些。



03

导入本地约束

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!DOCTYPE hibernate-mapping PUBLIC  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
在这些xml的配置文件中都使用了对应的dtd约束,并且是来自网络。
如果没网就不行了,所以来配置本地的
首先在加载jar包中找到hibernate-core-5.4.4.Final.jar

Hibernate配置_配置文件_07

往下就能找到

Hibernate配置_mysql_08

然后把它给拿到本地

 

Hibernate配置_配置文件_09

最后给对应的地址设置上本地的匹配

Hibernate配置_hibernate_10

 

 

 

 

 

Hibernate配置_sql_11

它,

不仅仅是一个码