简介:
我们都知道Hibernate是一个对象关系映射框架,对JDBC进行了非常轻量级的对象封装,将POJO与数据库表建立映射关系,是一个全自动的ORM框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
我们再简单地介绍下什么是ORM,对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。在.net中我们熟悉的EF是一种ORM解决方案。
文件:
在做网上商城SSH项目时,进行对象映射时经常写一个*.java文件和*.hbm.xml文件,它们两个是对应的,当时也只管写,没有理解为什么要写这些文件;
现在来介绍一下:
hibernate在实现ORM时用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml)。
它们各自的作用如下:
映射类(*.java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
数据库配置文件(*.properties/*.cfg.xml):它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。
Demo:
以网上商城中User表为例,建议的映射文件如下:
User.java文件:
package cn.itcast.shop.user.vo;
/**
* 用户模块实体类:
* @author wxr
public class User {
private Integer uid;
private String username;
private String password;
private String name;
private String addr;
private String code;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
User.hbm.xml文件:
<?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="cn.itcast.shop.user.vo.User" table="user">
<id name="uid">
<generator class="native"/>
</id>
<property name="username"/>
<property name="password"/>
<property name="name"/>
<property name="addr"/>
<property name="code"/>
</class>
</hibernate-mapping>
总结:
这个单个表的映射,如果我们设计到多个表之间的关系,像我们经常在表设计中会有外键的设置,那么在这里应该怎么体现,下篇博客介绍七种映射关系。