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

来源:互联网 发布:ios游戏存档软件 编辑:程序博客网 时间:2024/06/04 18:41

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.至此项目结构如下()
这里写图片描述

0 0
原创粉丝点击