SSH与SSM学习之hibernate01——介绍与环境搭建
一、hibernate介绍
Hibernate 是一个高性能的对象关系型持久化存储和查询的服务,其遵循开源的 GNU Lesser General Public License (LGPL) 而且可以免费下载。Hibernate 不仅关注于从 Java 类到数据库表的映射,也有 Java 数据类型到 SQL 数据类型的映射,另外也提供了数据查询和检索服务。
这个教程将指导你如何以简单的方式使用 Hibernate 来开发基于数据库的 Web 应用程序。
二、所需环境
2.1 开发工具
我们需要使用这个框架,需要自己有开发工具,如:eclipse、idea 等。我使用的是idea。下载地址如下
https://www.jetbrains.com/idea/
2.2 数据库
既然是操作数据库的,那么我们应该需要数据库吧。你可以使用 MS SQLServer、Oracle、MySql。我使用的是 MySql.
MySql 下载地址
https://dev.mysql.com/downloads/windows/
2.3 hibernate
既然我们要学习 hibernate ,那么它必须不能少、
hibernate下载地址
http://hibernate.org/orm/downloads/
2.4 junit(非必须)
这个单元测试的包,我们是用来写代码的时候测试用的。为了我们测试方便,加上这个包,非必须。使用junit.jar还需需要导入 hamcrest-core.jar
三、项目的基本配置
你也可以不用我的方式创建,可以按网上的创建
使用Intellij IEDA创建第一个hibernate例子
3.1 创建项目
3.2 填写项目名称
3.3 创建classes和lib目录
3. 4 导入hibernate包
3. 5 打开当前项目的配置
3. 6 创建项目的lib
3. 7 选择jar包
3. 8 修改添加以后的 libraries 名字
3. 9 配置 .class 的输出路径
3. 10 添加lib的依赖
3. 11 点击配置
3. 12 添加Tomcat
3. 13 更改名称
3. 14 添加 Artifacts
3. 15 更改访问路径
四、Hibernate的基本配置
上面的步骤,基本完成了我们配置,那么现在我们来搞一把,hibernate。
4.1 创建我们的包
在src 下创建我们的包 com.qwm.hilbernate01
4.2 创建 User类
在com.qwm.hilbernate01包下,创建 User类,如下(如果你自己定义了构造方法,必须添加为空构造方法)
package com.qwm.hilbernate01;
/**
* @author:qiwenming
* @date:2017/9/16 0016 19:19
* @description:
* User类
*/
public class User {
private int id;
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4.3 创建 user.hbm.xml
在com.qwm.hilbernate01包下,创建文件 user.hbm.xml,配置如下
<?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="com.qwm.hilbernate01.User">
<id name="id">
<!--id自增-->
<generator class="increment"></generator>
</id>
<property name="name"/>
<property name="age"/>
</class>
</hibernate-mapping>
4.4 创建 hibernate.cfg.xml
在 src 下创建 hibernate.cfg.xml 文件,如下
<!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>
<!--MySql数据库驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--数据库-->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/htest</property>
<!--用户名-->
<property name="hibernate.connection.username">root</property>
<!--密码-->
<property name="hibernate.connection.password">xm123456</property>
<!--数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!--自动创建表-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--导入 User 配置-->
<mapping resource="com/qwm/hilbernate01/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4.5 导入Junit包
如果使用Junit测试,如要添加如下包
junit.jar
hamcrest-core.jar
4.6 创建HelloTest类
在com.qwm.hilbernate01包下,创建类 HelloTest.java,测试我们的hibernate
package com.qwm.hilbernate01;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.Test;
/**
* 测试一
*/
public class HelloTest {
/**
* 测试一
*/
@Test
public void testUser1(){
// 1.配置
StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
// 2. 获取Session 工厂
SessionFactory factory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
// 3. 打开Session
Session session = factory.openSession();
// 4. 开启事物
Transaction t = session.beginTransaction();
// 5. 创建对象
User user = new User("wiming",19);
// 6. 对象持久化
session.persist(user);
// 7. 提交事务
t.commit();
// 8. 关闭Session
session.close();
System.out.println("创建成功");
}
}
4.7 查看我们的数据库的表
如下