简介:利用Hibernate框架,搭建最简单的应用案例。
一、环境搭建
1 - 导入JAR包
-
hibernate-core
框架的核心包
-
mysql-connector-java
用来连接数据库
-
junit
单元测试用
2 - 新建普通JAVA项目
二、编辑代码
1 - 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.jdbc.Driver</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">19970614</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库url,类似于JDBC中连接数据库的url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jpwh?useUnicode=true&characterEncoding=UTF8</property>
<!-- 数据库使用的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 是否把输出到控制台的sql进行格式化 -->
<property name="hibernate.format_sql">true</property>
<!-- 是否将Hibernate运行时的sql输出到控制台 -->
<property name="hibernate.show_sql">true</property>
<!-- 自动创建|更新|验证数据库表结构 -->
<property name="hibernate.hbm2ddl.auto">create</property>
</session-factory>
</hibernate-configuration>
2 - User.java 需要进行持久化的类
package ray;
public class User {
private int uid;
private String username;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
3 - User.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-9-25 19:22:57 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="ray/User" table="USER">
<id name="uid" type="int">
<column name="UID" />
<generator class="assigned" />
</id>
<property name="username" type="java.lang.String">
<column name="USERNAME" />
</property>
</class>
</hibernate-mapping>
4 - 将持久化类配置文件放入框架配置文件中去
5 - 编写测试类
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import ray.User;
public class TestUser {
@Test
public void testAdd() {
//1.生成配置
Configuration cfg = new Configuration().configure();
//2.生成会话工厂
SessionFactory sf = cfg.buildSessionFactory();
//3.开启会话
Session session = sf.openSession();
//4.开启事务
Transaction tx = session.beginTransaction();
User user = new User();
user.setUsername("Ray");
session.save(user);
//5.提交事务
tx.commit();
//6.关闭会话
session.close();
//7.关闭会话工厂
sf.close();
}
}
6 - 项目文件结构
三、单元测试
1 - 测试启动不起来
- 解决之道:除了引入junit-4.12.jar之外,还要引入2个依赖jar包:hamcrest-core-1.3.rc2.jar,hamcrest-library-1.3.rc2.jar
http://mvnrepository.com/artifact/junit/junit/4.12
http://mvnrepository.com/artifact/org.hamcrest/hamcrest-core/1.3.RC2
http://mvnrepository.com/artifact/org.hamcrest/hamcrest-library/1.3.RC2
2 - 不能解析持久化类
- 解决之道:“/” -> “.”
3 - 不能识别数据库方言
- 解决之道:MySQL升级后方言改变MySQLDialect -> MySQL5InnoDBDialect
4 - 测试成功
5 - 查看数据库
四、使用注解
《Java Persistence with Hibernate》一书的作者建议:能使用注解(@)来完成的,尽量不要使用配置文件(.xml);能够使用原生注解来完成的(javax.persistence),尽量不要使用包装(org.hibernate.annotation)。
1 - 删除User.hbm.xml配置文件
2 - 为源文件添加注解
package ray;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity //实体
public class User {
@Id //主键
@GeneratedValue //自生成
private int uid;
private String username; //自动识别
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
3 - 修改hibernate.cfg.xml文件
4 - 测试