首先介绍一下hibernate框架:
1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架。
2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储
3.高度整合jdbc,简化了很多jdbc的操作。比如查询,比如存储
4.二级缓存。缓存一部分所查询的数据,方便随时调用,大大的减少了数据库查询。
5.ORM(Object/Rational Mapping)关系映射工具。对象关系映射把数据表的操作简化为对于对象的操作,让面向对象思维更加实际。
实现步骤:原文链接
1.在我们上期所创建好的Maven项目中添加以下依赖。
<!-- 添加Junit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 添加mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- 添加hibernate依赖包 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.6.Final</version>
</dependency>
2.对目录进行配置,在Project Structure - Module添加resources文件夹,并设置为Resources。
3.添加 Hibernate 配置文件
结果如下
4.配置hibernate.cfg.xml内容
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--<property name="connection.url"/>-->
<!--<property name="connection.driver_class"/>-->
<!-- <property name="connection.username"/> -->
<!-- <property name="connection.password"/> -->
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
<!-- mysql账户名 -->
<property name="connection.username">root</property>
<!-- mysql密码 -->
<property name="connection.password">123456</property>
<!-- mysql驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- mysql连接URL -->
<property name="connection.url">jdbc:mysql:///HelloMaven?useUnicode=true&characterEncoding=UTF-8</property>
<!-- 数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 根据需要创建数据库 -->
<property name="hbm2ddl.auto">create</property>
<mapping class="com.yada.Hibernate"></mapping>
<!--<mapping resource="Hibernate.hbm.xml"></mapping>-->
</session-factory>
</hibernate-configuration>
5.注意这里最后有两个
<mapping class="com.yada.Hibernate"></mapping>
<mapping resource="Hibernate.hbm.xml"></mapping>
先说如果配置的是第一种,这种需要创建数据库。
6.生成映射类
7.生成映射类文件
package com.yada;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Hibernate {
private int sit;
private String name;
private Double price;
public Hibernate(int sit,String name,Double price){
this.sit =sit;
this.name = name;
this.price =price;
}
public Hibernate() {
}
@Id
@Column(name = "sit")
public int getSit() {
return sit;
}
public void setSit(int sit) {
this.sit = sit;
}
@Basic
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Basic
@Column(name = "price")
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Hibernate hibernate = (Hibernate) o;
if (sit != hibernate.sit) return false;
if (name != null ? !name.equals(hibernate.name) : hibernate.name != null) return false;
if (price != null ? !price.equals(hibernate.price) : hibernate.price != null) return false;
return true;
}
@Override
public int hashCode() {
int result = sit;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (price != null ? price.hashCode() : 0);
return result;
}
}
接下来用第五步所说的第二种
8.在Rerourser创建Hibernate.hbm.xml文件
<hibernate-mapping package="com.yada">
<class name="HibernateTest" table="hibernate"><!--这里的table值对应数据库中的表名;如果没有table值,默认等于类名小写 -->
<id name="sit" column="sit">
<generator class="native"></generator><!--采用主键自增长方式-->
</id>
<property name="name" column="name"/><!-- 这里的column值对应数据库中的属性名;如果没有column值,默认等于属性名 -->
<property name="price" column="price"/>
</class>
</hibernate-mapping>
9.手动创建映射类文件
package com.yada;
public class HibernateTest {
private int sit;
private String name;
private Double price;
public HibernateTest(int sit,String name,Double price){
this.sit =sit;
this.name =name;
this.price = price;
}
public HibernateTest() {
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getSit() {
return sit;
}
public void setSit(int sit) {
this.sit = sit;
}
public void setPrice(Double price) {
this.price = price;
}
public Double getPrice() {
return price;
}
}
10.编写测试类
package com.yada;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class TestHiber {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void init() {
Configuration configuration = new Configuration().configure();//创建配置对象
sessionFactory = configuration.buildSessionFactory();//创建会话工厂
session = sessionFactory.openSession();//开启会话
transaction = session.beginTransaction();//开启事务
}
@After
public void destory() {
transaction.commit();//事务提交
session.close();//关闭会话
sessionFactory.close();//关闭会话工厂
}
@Test
public void testGoods() {
//生成对象
// Hibernate goods = new Hibernate(4, "4", 4.0);
HibernateTest goods = new HibernateTest(5, "4", 4.0);
//保存对象进数据库
session.save(goods);
}
}
11.完成。