一、什么是Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行。Hibernate属于一个持久化ORM(Object/Relation Mapping)框架,他将数据库和对象做了一个映射。
二、为什么使用Hibernate框架
1.Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。
三、用hibernate实现添加用户
步骤如下:
1.建立数据库
CREATE DATABASE hibernate;
USE hibernate;
CREATE TABLE USER(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(10),
PASSWORD VARCHAR(18)
);
2.搭建web项目:
3.需要导入的jar包:
4.建立实体类:
package jiaru.domain;
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public String getUsername() {
return name;
}
public String getPassword() {
return password;
}
public void setId(int id){
this.id=id;
}
public void setUsername(String name){
this.name=name;
}
public void setPassword(String password) {
this.password=password;
}
}
5.配置实体类的映射文件:
<?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="jiaru.domain.User" table="user">
<id name="id" column="id">
<generator class="native"/>
</id>
<!-- 配置其他的属性 -->
<property name="name" column="name"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
6.建立hibernate核心配置文件:
<?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.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</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.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="jiaru/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7.开启事务:
package jiaru.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import jiaru.domain.User;
import jiaru.utils.HibernateUtils;
public class UserDao {
public void add(User user){
Session session = HibernateUtils.getSession();
Transaction tr = session.beginTransaction();
session.save(user);
tr.commit();
session.close();
}
}
8.写一个测试类:
package jiaru.demo;
import org.junit.Test;
import jiaru.dao.UserDao;
import jiaru.domain.User;
public class Test1 {
@Test
public void add(){
User user = new User();
user.setUsername("贾茹");
user.setPassword("1514010408");
UserDao ud = new UserDao();
ud.add(user);
}
}
这样项目就写完了,然后是数据库的结果。
过程中发生的错误:
进行单元测试的时候,注解@Test报错,经过仔细查看发现测试类的类名也写成了Test,就是无法进行单元测试,经过更改类名,项目能够运行成功,
总结的经验;一定要记得单元测试的时候类名不能与注解@Test一致