Hibernate配置

Hibernate配置

  1. 核心配置文件
  2. 映射配置文件
  3. 配置本地的DTD约束

01

核心配置文

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

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

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

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

hibernate.cfg.xml

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

<!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里

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

## 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
往下就能找到

然后把它给拿到本地

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

它,

不仅仅是一个码

本文分享自微信公众号 - IT那个小笔记(qq1839646816)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java 学习日记

类和对象,以及 LeetCode 每日一题

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

8620
来自专栏poslua

Kong 插件加载机制源码解析(上)

我曾经在前面的文章中系统性的描述了下 Kong 的插件加载机制,这篇我将通过源码解析的方式呈现其数据走向。剔除掉第三方依赖,Kong 的核心代码结构如下:

28220
来自专栏Java 学习日记

集合(上)

传统的容器(数组)在进行增、删等破坏性操作时,需要移动元素,可能导致性能问题;同时添加、删除等算法和具体业务耦合在一起,增加了程序开发的复杂度。Java集合框架...

3710
来自专栏Java 学习日记

Java 数组及数组常用算法

  数组的定义可以采用两种方法,推荐采用第一种,这样变量的类型是数组这一概念更加直接。

15420
来自专栏Java 学习日记

变量类型、构造器、封装以及 LeetCode 每日一题

当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间,并在分配空间后,自动为成员变量赋初值。

7520
来自专栏Java 学习日记

包、继承以及 LeetCode 27、28题

Java 引入了包(Package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理问题。Java 允许将相关的类放在同一个 package 下,...

7510
来自专栏爱写Bug

​LeetCode 394:字符串解码 Decode String

给定一个经过编码的字符串,返回它解码后的字符串。 Given an encoded string, return its decoded string.

13710
来自专栏Java 学习日记

包装类及 LeetCode 每日一题

Java 为8大数据类型都提供了相应的包装类,并提供属性和方法,更方便的操作基本数据类型。包装类位于java.lang包中。

8030
来自专栏Java后端技术栈cwnait

【刨根问底】java异常

在计算机的世界里,在运行程序时,发生了意料之外的事件,阻止了程序的正常执行,这种情况被称之为异常。

5710
来自专栏理想二旬不止

前端语言基础【第二篇:JavaScript】

在js里面需要获取到input里面的值,如果把script标签放到head 里面会出现问题。

7620

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励