1.3 在IDEA中使用Maven编写一个Hibernate程序(IDEA+Maven+Hibernate)
1.3.1 创建项目
1. 先创建一个Maven项目
.
2. 完善项目
创建成功的项目目录结构所有缺失,我们需要手动创建完成。
在main目录下分别创建java和resources文件夹。
同样在main下新建test测试文件夹,再在此文件夹下新建Java测试源码文件夹和resource测试资源文件夹。(这里的图用的是我上一篇Maven的截图,有部分不一样,但是操作都是一样的,不要介意)
建里好缺失的文件夹以后,我们还需要更改新建的文件夹的 作用:
更改完成以后的样式:
.
3. 配置相关的依赖包
这里我们需要导入到 mysql 和 hibernate 依赖的jar包
<!--引入hibernate包-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version>
</dependency>
<!--引入mysql包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
.
.
.
1.3.2 对Hibernate和MySQL进行相关调配
1. 添加hibernate的配置文件
好了,hibernate 的配置文件我们就添加成功了
.
.
2. 对刚添加的hibernate配置文件进行编写
<?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>
<!-- mysql账户名 -->
<property name="hibernate.connection.username">root</property>
<!-- mysql密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- mysql驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- mysql连接URL -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatedemo?useUnicode=true&characterEncoding=UTF-8</property>
<!-- 数据库方言 -->
<!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>-->
<!--// 5.0之后使用的数据库方言-->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 根据需要创建数据库 (这里的操作是,如果数据库中已经有这个表,就将这个表删除掉,重新创建表格)-->
<!--<property name="hbm2ddl.auto">create</property>-->
<!--添加刚刚生成的映射类-->
<!--<mapping class="cn.corey.UserEntity"></mapping>-->
</session-factory>
</hibernate-configuration>
.
.
3. 连接数据库
在连接数据库之前呢,我在这里插一步,这是创建我们MySQL的表格的代码:
CREATE DATABASE hibernatedemo;
USE hibernatedemo;
CREATE TABLE `user` (
`user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '编号(主键)',
`user_name` varchar(32) NOT NULL COMMENT '姓名',
`user_password` varchar(32) DEFAULT NULL COMMENT '密码',
`user_phone` varchar(64) DEFAULT NULL COMMENT '电话',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
通过idea的database数据库进行连接数据库
.
这几步设置完成,直接点击 OK就好了。
点击OK以后,它会显示这样的一个界面,我们可以在这个界面运行我们的sql语句
.
.
4. 表与类的数据映射的关系
导入数据库模式OR映射即将生成。你想继续吗? 点击YES
自动生成映射类:
到这里,我们还需要回到 hibernate.cfg.xml配置文件配置一下添加刚刚生成的映射类
<!--添加刚刚生成的映射类-->
<mapping class="cn.corey.UserEntity"></mapping>
完整的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>
<!-- mysql账户名 -->
<property name="hibernate.connection.username">root</property>
<!-- mysql密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- mysql驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- mysql连接URL -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatedemo?useUnicode=true&characterEncoding=UTF-8</property>
<!-- 数据库方言 -->
<!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>-->
<!--// 5.0之后使用的数据库方言-->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 根据需要创建数据库 (这里的操作是,如果数据库中已经有这个表,就将这个表删除掉,重新创建表格)-->
<!--<property name="hbm2ddl.auto">create</property>-->
<!--添加刚刚生成的映射类-->
<mapping class="cn.corey.UserEntity"></mapping>
</session-factory>
</hibernate-configuration>
.
.
.
.
1.3.3 编写测试类,进行测试
还是,先顺一下Hibernate持久化的七个步骤:
// 1. Configuration 加载配置,进行初始化
// 2. SessionFactory 是Session的“工厂”
// 3. Session 创建实例
// 4. Transaction 开启事务
// 5. 编写程序,实现操作
// 6. commit 提交,结束事务
// 7. close 关闭Session,释放资源
1. 创建并编写测试类
需要注意的一点是导包一定不要导错了
测试类完成代码:
package cn.corey;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
/**
* Hibernate测试类
*/
public class HibernateTest1 {
public static void main(String[] args) {
// 1. Configuration 加载配置,进行初始化
Configuration configuration=new Configuration().configure();
// 2. SessionFactory 是Session的“工厂”
SessionFactory sessionFactory=configuration.buildSessionFactory();
// 3. Session 创建实例
Session session=sessionFactory.openSession();
// 4. Transaction 开启事务
Transaction transaction=session.beginTransaction();
// 5. 编写程序,实现操作
UserEntity userEntity=new UserEntity();
userEntity.setUserName("Corey");
userEntity.setUserPassword("1433223");
session.save(userEntity);
// 6. commit 提交,结束事务
transaction.commit();
// 7. close 关闭Session,释放资源
session.close();
}
}
.
2. 进行测试
因为我们在Hibernate的配置中添加了SQL语句的打印:
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
所以,当我们测试类运行成功的时候,控制台会打印我们所运行的SQL语句
程序运行成功,我们进到MySQL里看下我们添加的数据有没有添加进来
查询数据库表,我们要添加的数据已经成功添加到表中了,程序功能实现成功
.