Hibernate配置
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
往下就能找到
然后把它给拿到本地
最后给对应的地址设置上本地的匹配
它,
不仅仅是一个码