JavaShuo
栏目
标签
Hibernate 映射文件配置
时间 2019-11-11
标签
hibernate
映射
文件
配置
栏目
Hibernate
繁體版
原文
原文链接
对象关系的映射是用一个XML文档来讲明的。映射文档可使用工具来生成,如XDoclet,Middlegen和AndroMDA等。
下面从一个映射的例子开始讲解映射元素,映射文件的代码以下。
Java代码
<?xml version=
"1.0"
?>
<!--
全部的XML映射文件都须要定义以下所示的DOCTYPE。
Hibernate会先在它的类路径(classptah)中搜索DTD文件。
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
hibernate-mapping有几个可选的属性:
schema属性指明了这个映射的表所在的schema名称。
default
-cascade属性指定了默认的级联风格 可取值有 none、save、update。
auto-
import
属性默认让咱们在查询语言中可使用非全限定名的类名 可取值有
true
、
false
。
package
属性指定一个包前缀。
-->
<hibernate-mapping schema=
"schemaName"
default
-cascade=
"none"
auto-
import
=
"true"
package
=
"test"
>
<!--用
class
元素来定义一个持久化类 -->
<
class
name=
"People"
table=
"person"
>
<!-- id元素定义了属性到数据库表主键字段的映射。-->
<id name=
"id"
>
<!-- 用来为该持久化类的实例生成惟一的标识 -->
<generator
class
=
"native"
/>
</id>
<!-- discriminator识别器 是一种定义继承关系的映射方法-->
<discriminator column=
"subclass"
type=
"character"
/>
<!-- property元素为类声明了一个持久化的,JavaBean风格的属性-->
<property name=
"name"
type=
"string"
>
<column name=
"name"
length=
"64"
not-
null
=
"true"
/>
</property>
<property name=
"sex"
not-
null
=
"true"
update=
"false"
/>
<!--多对一映射关系-->
<many-to-one name=
"friend"
column=
"friend_id"
update=
"false"
/>
<!--设置关联关系-->
<set name=
"friends"
inverse=
"true"
order-by=
"id"
>
<key column=
"friend_id"
/>
<!—一对多映射-->
<one-to-many
class
=
"Cat"
/>
</set>
</
class
>
</hibernate-mapping>
组件应用的方法
组件有两种类型,即组件(component)和动态组件(dynamic-component)。在配置文件中,component元素为子对象的元素与父类对应表的字段创建起映射关系。而后组件能够声明它们本身的属性、组件或者集合。component元素的定义以下所示:
Java代码
<component name=
"propertyName"
class
=
"className"
insert=
"true|false"
upate=
"true|false"
access=
"field|property|ClassName"
>
<property ...../>
<many-to-one .... />
........
</component>
在这段代码中,name是指属性名,class是类的名字,insert指的是被映射的字段是否出如今SQL的INSERT语句中,upate指出被映射的字段是否出如今SQL的UPDATE语句中,access指出访问属性的策略。
Hiebernate的基本配置
Hibernate的数据库链接信息是从配置文件中加载的。Hibernate的配置文件有两种形式:一种是XML格式的文件,一种是 properties属性文件。properties形式的配置文件默认文件名是hibernate.properties,一个properties形式的配置文件内容以下所示:
Java代码
#指定数据库使用的驱动类
hibernate.connection.driver_class = com.mysql.jdbc.Driver r
#指定数据库链接串
hibernate.connection.url = jdbc:mysql:
//localhost:3306/db
#指定数据库链接的用户名
hibernate.connection.username = user
#指定数据库链接的密码
hibernate.connection.password = password
#指定数据库使用的方言
hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect
#指定是否打印SQL语句
hibernate.show_sql=
true
在配置文件中包含了一系列属性的配置,Hibernate将根据这些属性来链接数据库。
在XML格式的配置文件中,除了基本的Hibernate配置信息,还能够指定具体的持久化类的映射文件,这能够避免将持久化类的配置文件硬编码在程序中。XML格式的配置文件的默认文件名为hibernate.cfg.xml,一个XML配置文件的示例以下所示:
Java代码
<?xml version=
'1.0'
encoding=
'UTF-8'
?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<hibernate-configuration>
<session-factory>
<!--显示执行的SQL语句-->
<property name=
"show_sql"
>
true
</property>
<!--链接字符串-->
<property name=
"connection.url"
>jdbc:mysql:
//localhost:3306/STU</property>
<!--链接数据库的用户名-->
<property name=
"connection.username"
>root</property>
<!--数据库用户密码-->
<property name=
"connection.password"
>root</property>
<!--数据库驱动-->
<property name=
"connection.driver_class"
>com.mysql.jdbc.Driver</property>
<!--选择使用的方言-->
<property name=
"dialect"
>org.hibernate.dialect.MySQLDialect</property>
<!--映射文件 -->
<mapping resource=
"com/stuman/domain/Admin.hbm.xml"
/>
<!--映射文件-->
<mapping resource=
"com/stuman/domain/Student.hbm.xml"
/>
</session-factory>
</hibernate-configuration>
properties形式的配置文件和XML格式的配置文件能够同时使用。当同时使用两种类型的配置文件时,XML配置文件中的设置会覆盖properties配置文件的相同的属性。
对象标识符号
在关系数据库表中,主键(Primary Key)用来识别记录,并保证每条记录的惟一性。在Java语言中,经过比较两个变量所引用对象的内存地址是否相同,或者比较两个变量引用的对象值是否相同来判断两对象是否相等。Hibernate为了解决二者之间的不一样,使用对象标识符(OID)来标识对象的惟一性。OID是关系数据库中主键在Java 对象模型中的等价物。在运行时,Hibernate根据OID来维持Java对象和数据库表中记录的对应关系。以下代码所示,三次调用了Session的 load()方法,分别加载OID为1或3的User对象。
Java代码
Transaction tx = session.beginTransaction();
User user1 = (User)session.load(User.
class
,
new
Long(
1
));
User user2 = (User)session.load(User.
class
,
new
Long(
1
));
User user3 = (User)session.load(User.
class
,
new
Long(
3
));
System.out.println( user1 == user2 );
System.out.println( user1 == user3 );
应用程序在执行上述代码时,第一次加载OID为1的User对象,从数据库中查找ID为1的记录,而后建立相应的User实例,并把它保存在 Session缓存中,最后将该实例的引用赋值给变量user1。第二次加载OID为1的对象时,直接把Session缓存中OID为1的实例的引用赋值给变量user2。所以,表达式user1==user2的结果为true。
标识的生成可使用不一样的策略,表1为Hibernate内置的标识生成策略。
表1 Hibernate标识生成策略
Hibernate映射类型
在对象/关系映射文件中,Hibernate采用映射类型做为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。
一、内置映射类型
Hibernate对全部的Java原生类型、经常使用的Java类型如String、Date等都定义了内置的映射类型。表2列出了Hibernate映射类型、对应的Java类型以及对应的标准SQL类型。
表2 Hibernate内置映射类型
二、自定义映射类型
Hibernate提供了自定义映射类型接口,容许用户以编程的方式建立自定义的映射类型。用户自定义的映射类型须要实现 net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType接口。具体的建立自定义映射类型的方法请参考hibernate官方文档或相关资料,这里再也不详细介绍
相关文章
1.
Hibernate 映射文件配置
2.
Hibernate配置文件,映射文件
3.
Hibernate第三篇【主配置文件、映射文件、复合主键映射】
4.
Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明
5.
Mybatis 映射文件配置
6.
XML 映射配置文件
7.
MyBatis映射文件配置
8.
Hibernate-----核心配置文件、映射文件
9.
Hibernate配置文件和映射文件详解
10.
Hibernate配置文件与映射文件详解
更多相关文章...
•
*.hbm.xml映射文件详解
-
Hibernate教程
•
Hibernate映射关系
-
Hibernate教程
•
IDEA下SpringBoot工程配置文件没有提示
•
IntelliJ IDEA 代码格式化配置和快捷键
相关标签/搜索
配置文件
SSH配置文件
映射
无配置文件设置
文件访问映射
配置
读写配置文件
无dwr配置文件
配置文件详解
配件
Hibernate
Hibernate教程
MyBatis教程
SQLite教程
文件系统
插件
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
vs2019运行opencv图片显示代码时,窗口乱码
2.
app自动化 - 元素定位不到?别慌,看完你就能解决
3.
在Win8下用cisco ××× Client连接时报Reason 422错误的解决方法
4.
eclipse快速补全代码
5.
Eclipse中Java/Html/Css/Jsp/JavaScript等代码的格式化
6.
idea+spring boot +mabitys(wanglezapin)+mysql (1)
7.
勒索病毒发生变种 新文件名将带有“.UIWIX”后缀
8.
【原创】Python 源文件编码解读
9.
iOS9企业部署分发问题深入了解与解决
10.
安装pytorch报错CondaHTTPError:******
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
Hibernate 映射文件配置
2.
Hibernate配置文件,映射文件
3.
Hibernate第三篇【主配置文件、映射文件、复合主键映射】
4.
Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明
5.
Mybatis 映射文件配置
6.
XML 映射配置文件
7.
MyBatis映射文件配置
8.
Hibernate-----核心配置文件、映射文件
9.
Hibernate配置文件和映射文件详解
10.
Hibernate配置文件与映射文件详解
>>更多相关文章<<