JPWH :持久层框架Hibernate入门程序(IDE版)

简介:利用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&amp;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 - 测试
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值