Hibernate是一个开源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,它将POJO与数据库表建立映射关系。是一个完全自动的ORM框架,hibernate会自动生成SQL语句,既可以用在Java的客户端程序使用,也可以在servlet/JSP的web应用中使用,它是在dao层使用的。与数据库交互操作。
业务实体在内存中表现为对象,在数据库中表现为关系数据
内存中对象之间的关联和继承关系,而在数据库中,关系数据是无法直接表达多对多关联和继承关系
对象-关系映射系统一般都是以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM模型的简化了数据库查询的过程,使用ORM查询工具,用户可以访问期望数据,不必理解数据库的底层结构。
我们使用ORM可以将我们对象进行映射,使得我们可以去操作对象就可以完成对表的操作。
为了方便操作,按照JBOSS Tools插件,在help下的marketplace中查找JBOSS tools 4.5.3final 进行安装选择hibernate tools
快速建立一个hibernate
1.首先导入jar包,包括和hibernate,mysql,junit包,利用maven导入包
2.建立hibernate.cfg.xml
1)配置数据库的基本信息,通过插件配置
20hibernate里的配置:数据库使用的方言,开发过程中要在控制台帮我们执行的SQL语句
MySQL5InnODBDialect
show-sql true
format true
hom2ddl.auto update
3)映射文件
利用插件生成hibernate.cfg.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!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 >
<!-- 连接数据库的基本内容 -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- hibernate框架配置:数据库使用的方言,开发过程中在控制台,帮我们执行的SQL语句 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 核心映射文件需要配置进入-->
<mapping resource="cn/bzy/hibernatedemo/model/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.写对应的Java类,javabean规范,POJO简单Java类
package cn.bzy.hibernatedemo.model;
import java.util.Date;
//和数据库里的学生信息表一一对应的Java类,javabean规范,POJO简单Java类
public class Student {
private int id;
private String name;
private String sex;
private Date regDate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, String sex, Date regDate) {
super();
this.name = name;
this.sex = sex;
this.regDate = regDate;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", regDate=" + regDate + "]";
}
}
4.写对应的映射文件,同样用插件完成student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-11-5 23:19:10 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="cn.bzy.hibernatedemo.model.Student" table="STUDENT">
<id name="id" type="int">
<column name="ID" />
<generator class="**native**" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="sex" type="java.lang.String">
<column name="SEX" />
</property>
<property name="regDate" type="java.util.Date">
<column name="REGDATE" />
</property>
</class>
</hibernate-mapping>