Hibernate主要完成了实体类与数据库表的映射,但中间这道映射到底是通过何种方式进行的实现、对应呢,今天就开始一点点的来学习,本篇文章主要介绍Hibernate中最最基本的映射文件的写法,介绍一些常用的标签、属性等,通过与系统配置文件的结合,达到最终映射的效果。
Hibernate映射基本规则
1. (实体)类映射成表,标签使用class
2. 普通属性(不包括集合、自定义类和数组)映射成表字段,标签使用property
为了能让Hibernate操作我们的实体类,实体类的设计也要遵循一定的原则:
实现无参默认构造函数(这里可以对比我们在学习Servlet是也要提供同样的构造函数)
提供标识符,对应数据库的主键字段
不要使用final修饰
建议为实体类生成getter和setter方法
常用标签、属性
Hibernate中用于基本映射的标签、属性总结如下图所示
上图中,hibernate-mapping、Class、Id/composite-id、Property是我们在使用Hibernate映射文件时经常看到、用到的几个标签,他们分别表示映射文件的根节点、实体类对应表配置、标识符、普通属性。图中它们四个节点下面分别列出了其下的常用属性,通过这个图我们可以看出:我们一般情况下用到的属性并不是很多,另外这些节点中属性都非常“见名知意”而对于Id、Property标签下的属性,很多都是相同的(Id节点下的属性),就是通过这些配置的作用,我们可以实现使用Hibernate达到隔离数据库,更加面向对象的效果。
示例:我们要完成一个用户的单个实体映射,映射文件可以这样写
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.tgb.hibernate.User">
<id name="id">
<generator class="native"></generator>
</id>
<composite-id></composite-id>
<property name="name" />
<many-to-one name="group" column="groupId"></many-to-one>
</class>
</hibernate-mapping>
当然,为了要与项目管理起来,我们需要在hibernate的主(系统)配置文件中加入相应的引入映射文件的配置
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<!-- 连接数据库的相关配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_many2one</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<!-- 方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 执行数据库操作时,控制台打印sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 引入映射文件 -->
<mapping resource="com/tgb/hibernate/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
至此,我们便可以通过hibernate提供的一些核心对象进行面向对象的数据库操作了。
小结
在了解了Hibernate的一些基本的设计原则以及其中的映射属性后,我们可以更能够理解为Hibernate是通过怎样的一种灵活配置来达到隔离数据库的效果,虽然打开Hibernate的介绍文档,其中的属性很多,但我们只要学习、掌握一些常用的属性,其他的在用到的时候再去查就好,这也算是学习、应用计算机一个重要的原则:内容多的说不清,但用到的时候有方向能查出来就是不错的!