对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,本质上就是将数据从一种形式转换到另外一种形式。hibernate作为一个ORM框架的代表,在实现ORM中,就是靠hibernate的基本映射来实现的。
常用的hibernate的几种映射:基本映射和关系映射。这篇博客主要介绍hibernate的基本映射。
Hibernate在实现ORM功能的时候主要用到的文件有:
1、 映射类(*.Java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
2、映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
3、 hibernate核心配置文件(*.properties/*.cfg.xml):它指定hibernate的一些核心配置,包含与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。映射文件的地址信息也放在这里。
基本映射:
java类映射成表:
<strong><span style="font-size:18px;">package com.bjpowernode.hibernate; import java.util.Date; public class User { private String id; private String name; private String password; private Date createTime; private Date expireTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getExpireTime() { return expireTime; } public void setExpireTime(Date expireTime) { this.expireTime = expireTime; } } </span></strong>
实体类的设计原则:
实现无参的默认的构造函数
提供一个标识
建议不要使用fianl修饰实体类
建议为实体类生成get和set方法
映射文件:user.hbm.xml
<strong><span style="font-size:18px;"><?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 package="com.bjpowernode.hibernate"> <class name="User" table="t_user"> <id name="id" column="user_id" length="32" access="field"> <generator class="uuid"/> </id> <property name="name" length="30" unique="true" not-null="true"/> <property name="password"/> <property name="createTime" type="date" column="create_time"/> <property name="expireTime"/> </class> </hibernate-mapping></span></strong>
length属性:表示该字段的字符长度,这个可以在数据库中设计,也可以在映射文件中写。
column:可以修改指定映射的列的列名。如果省略,则就是name名称作为列名。
hibernate核心配置文件:
<strong><span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_basemapping</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/> <mapping resource="com/bjpowernode/hibernate/User2.hbm.xml"/> <mapping resource="com/bjpowernode/hibernate/User3.hbm.xml"/> </session-factory> </hibernate-configuration></span></strong>
hibernate的基本映射,主要是可以通过配置文件,也可以通过注解的形式,在接下来的博客中,小编将会带着大家学习一下如果用注解来做基本映射。