图文教你整合最新版本搭建SSH框架之二:hibernate(非常详细)

SSH框架搭建

由于配置过程会使用到很多图片,如果都写在一篇的话,会显得过于冗长,因此搭建过程分为几个博文来写,最终的框架项目我放到整合的那一篇博文中

配置hibernate

1.首先找到官网,百度输入hibernate下载搜索即可
这里写图片描述

2.选择最新版本的stable 5.2.9.Final点击下载即可
这里写图片描述

3.下载完后我们得到一个文件包
这里写图片描述

4.另外,我们还需要下载mysql-connector,这个可以百度搜索mysql jar
这里写图片描述

然后选择第二个下载即可
这里写图片描述

4.打开我们的之前配置spring的Eclipse项目,在WEB-INF下->lib下创建一个文件夹hibernate-5.2.9和mysql-connector-5.1.41,将我们之前下载的文件包下的required文件夹下的全部jar复制到hibernate-5.2.9下面,并将mysql-connector文件放到我们项目的mysql-connector-5.1.41下面,接着和spring配置一样需要将这些jar配置到项目中
这里写图片描述

5.至此jar配置完成,接下来我们建立一个数据库webdb,并在该数据库下面建立一个表user
这里写图片描述

  1. hibernate需要一个配置文件hibernate.cfg.xml,我们在之前下载的文件包下搜索hibernate.cfg.xml,选择第二个文件打开,得到一个配置文件模板
  2. 对模板加以修改,src下新建hibernate.cfg.xml,将修改后的内容复制过去
    原先模板为:
<?xml version='1.0' encoding='utf-8'?>
<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <!-- Names the annotated entity class -->
        <mapping class="org.hibernate.tutorial.annotations.Event"/>

    </session-factory>

</hibernate-configuration>

修改后为:

<?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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/webdb?characterEncoding=UTF8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <!-- 自动创建|更新|验证数据库表结构,如果不需要的话设为none最好,如果发现数据库表丢失就检查该配置 -->
        <property name="hbm2ddl.auto">none</property>

        <!-- 指定映射文件 -->
        <mapping resource="mapping.xml"/>
    </session-factory>
</hibernate-configuration>

8.在src下新建一个包pers.zzf.domain(用来存放JavaBean),在下面建立一个User.java,对应我们之前建立的数据库表,内容如下

package pers.zzf.domain;

public class User {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

9.在src下新建mapping.xml,内容如下(这个可以在hibernate文件包中搜索Event.hbm.xml,找到相应的模板并做修改)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 对应我们之前创建的数据库表 -->
    <class name="pers.zzf.domain.User" table="user">
        <id name="name" column="name"></id> 
        <property name="password" column="password"/>
    </class>

</hibernate-mapping>

10.在pers.zzf.test下新建一个HibernateTest.java(其中获得SessionFactory的方法是参考官方文档所写的),内容如下

package pers.zzf.test;

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 pers.zzf.domain.User;

public class HibernateTest {
    //官方文档中获得SessionFactory的一种方式
    private static SessionFactory getSessionFactory() {
        SessionFactory sessionFactory = null;
        //默认加载地址是在src下搜索hibernate.cfg.xml
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
        try {
            sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
            StandardServiceRegistryBuilder.destroy(registry);
        }
        return sessionFactory;
    }

    public static void main(String... args) {
        // 创建一个User对象
        User user = new User();
        // 设置属性值
        user.setName("ZZF");
        user.setPassword("ZZF");
        // 获得session
        Session session = getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            // 开始事务
            transaction = session.beginTransaction();
            // 保存
            session.save(user);
            // 提交事务
            transaction.commit();
            System.out.println("保存成功");
        } catch (Exception e) {
            // 如果发生异常则进行事务回滚
            transaction.rollback();
        } finally {
            session.clear();
        }
    }
}

11.运行项目后可以到数据库中查看,发现新增了一行数据
12.至此项目结构如下()
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值