Hibernate二次学习一----------搭建Hibernate

? 版权声明:本文为博主原创文章,转载请注明出处



[TOC]

1. 项目结构

  • 本项目使用maven进行项目管理,搭建一个简单的Hibernate框架需要四步。
  • 本项目未使用注解方式进行搭建

    1.1 pom.xml

  • 使用maven引入依赖jar包,若未使用maven,则自己下载所需jar包放到lib目录下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.imooc</groupId>
    <artifactId>Hibernate_001</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.1.5.Final</version>
        </dependency>
        <!-- mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <target>1.7</target>
                    <source>1.7</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

1.2 hibernate.cfg.xml

  • 在hibernate.cfg.xml中配置三方面的信息。

    • 连接数据库的信息,比如驱动、url、连接名、密码等。
    • hibernate本身的配置,比如方言、是否展示SQL,SQL格式化、建表策略等。
    • 引入映射文件
<?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="connection.username">root</property>
        <!-- 数据库连接密码 -->
        <property name="connection.password">20121221</property>
        <!-- 数据库驱动 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库连接url -->
        <property name="connection.url">
            jdbc:mysql://localhost:3306/hibernate?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8
        </property>

        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <!-- 展示SQL -->
        <property name="show_sql">true</property>
        <!-- 格式化SQL -->
        <property name="format_sql">false</property>
        <!-- 建表策略 -->
        <property name="hbm2ddl.auto">update</property>

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

</hibernate-configuration>

1.3 entity

  • entity是实体类,对应数据库中的表结构,仅实现setter和getter方法即可
package com.imooc.hibernate.model;

import java.util.Date;

public class Student {

    private int sid; // 学号
    private String sname; // 姓名
    private String gender; // 性别
    private Date birthday; // 出生日期
    private String address; // 地址

    public Student() {
    }

    public Student(int sid, String sname, String gender, Date birthday, String address) {
        this.sid = sid;
        this.sname = sname;
        this.gender = gender;
        this.birthday = birthday;
        this.address = address;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Student [sid=" + sid + ", sname=" + sname + ", gender="
                + gender + ", birthday=" + birthday + ", address=" + address + "]";
    }

}

1.4 entity.hbm.xml

  • entity.hbm.xml是映射文件,将数据库表与entity进行对应
<?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.imooc.hibernate.model.Student">
        <id name="sid" type="int">
            <column name="SID"/>
            <generator class="assigned"/> <!-- 主键生成策略 -->
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME"/>
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER"></column>
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY"/>
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS"></column>
        </property>
    </class>

</hibernate-mapping>

2. 测试

  • 使用junit进行测试
package com.imooc.hibernate.test;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.imooc.hibernate.model.Student;

public class StudentTest {

    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;

    @Test
    public void testSaveStudent() {

        // 生成学生对象
        Student s = new Student(3, "张三丰", "男", new Date(), "武当山");
        session.save(s);

    }

    @Before
    public void init() {

        // 创建会话工厂对象
        sessionFactory = new Configuration().configure().buildSessionFactory();
        // 创建会话对象
        session = sessionFactory.openSession();
        // 开始事务
        transaction = session.beginTransaction();

    }

    @After
    public void destory () {

        // 提交事务
        transaction.commit();
        // 关闭会话
        session.close();
        // 关闭会话工厂
        sessionFactory.close();

    }

}

3. 总结

Hibernate初步搭建很简单,主要是使用hibernate.cfg.xml进行数据库连接的配置,使用entity.hbm.xml进行数据库表结构与实体类进行映射。


参考:Hibernate初探之单表映射

更好的markdown体验:https://www.zybuluo.com/chy282/note/970569

时间: 2024-10-11 21:29:51

Hibernate二次学习一----------搭建Hibernate的相关文章

Hibernate框架 初识 ORM概念 搭建Hibernate环境 Hibernate Api

ORM概念 在学习 Hibernate 之前,我们先来了解ORM   对象关系映射 O, Object  对象 R,Realtion 关系  (关系型数据库: MySQL, Oracle…) M,Mapping  映射 ORM, 解决什么问题? 存储:   能否把对象的数据直接保存到数据库? 获取:   能否直接从数据库拿到一个对象? 想做到上面2点,必须要有映射!   总结:          Hibernate与ORM的关系?             Hibernate是ORM的实现,简化对

hibernate框架的学习(二)

hibernate的核心配置和API 一:核心配置分为三大部分  必须的配置 .可选的配置和引入映射文件. 1.必须的配置 连接数据库的参数:驱动类  url路径  用户名  密码  方言 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url"

SpringMVC轻松学习-环境搭建(二)

基于spring2.5的采用XML配置的spring MVC项目 注:本项目全部基于XML配置.同时,集成了hibernate.采用的是:spring MVC+hibernate+spring的开发架构. 1.      建立web项目 2.      导入jar包(spring.jar, spring-webmvc.jar, commons-logging.jar.其他jar包为hibernate相关jar包) 上面是SpringMVC的所有包,我将这些jar包放在了我的百度云盘中,当然你也可

如何完全根据官方下载包搭建hibernate框架

好久没有用s2sh的框架了,最近业务需要又要拾起来.在搭框架时,发现之前都是复制配置文件,对具体的细节却很懵懂,所以要从新来一遍,也是一次新的学习. 我使用的版本是hibernate-release-4.3.11.Final,因为需要使用基于xml的配置,这一版本关于xml的文档还是很友好的,最新的5.x主要针对注解,与业务有所出入. 下面开始搭建: 百度云:jar包链接  密码:h7o8 关于文件结构 搭建Hibernate的压缩文件解压后就是下面的结构: jdbc和log4j包是我后加的,其

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

Hibernate目录结构以及环境搭建

上篇博客,概述了一下Hibernate,今天这篇继续说说Hibernate包含的各个包的含义,以及对hibernate环境的搭建. 一.hibernate目录解析 下载好一个hibernate包,解压看到里边有若干个文件夹,这些东东是都是什么,有神马作用呢?看下图: 上图是捡着重要的目录给重新命名了. 由上至下依次表示: API 文档--doc:操作的hibernate的手册, 映射文件实例--eg:里边包含的就是hbm文件的书写实例, 配置文件实例--etc:包含hibernate配置文件cf

JAVA框架之Hibernate框架的学习步骤

首先介绍一下Java三大框架的关系 以CRM项目即客户关系管理项目示例 hibernate框架的学习路线: 1.学习框架入门,自己搭建框架,完成增删改查的操作 2.学习一级缓存,事物管理和基本查询 3.学习一对多和多对多的操作等 4.学习基本查询和查询的优化 本人正在学习hibernate框架,今天是第一天,愿意把自己的学习过程分享给大家,希望大家提出宝贵意见,留言给我,共同进步需要什么软件.资源.例程jar包等的,可以留下邮箱,我晚上会给大家发过去的,谢谢

搭建hibernate环境

Hibernate概述什么是框架1 写程序,使用框架之后,帮我们实现一部分功能,使用框架好处,少写一部分代码实现功能 什么是hibernate框架(重点)1 hibernate框架应用在javaee三层结构中 dao层框架 2 在dao层里面做对数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂jdbc代码了,不需要写sql语句实现 3 hibernate开源的轻量级的

Hibernate学习笔记(一) — hibernate的配置文件简介与执行原理

一.初识Hibernate 1.JDBC的缺点: 1).编写代码的时候过于繁琐,try和catch比较多2).没有做数据缓存 3).不是面向对象编程 4).sql语句固定,可移植性差 JDBC的优点:效率比较高 2.Hibernate优点 1).完全面向对象编程 2).hibernate的缓存很牛的,一级缓存,二级缓存,查询缓存3).跨平台性强 4).使用场合多应用于企业内部的系统 Hibernate缺点 1).效率低 2).表中的数据如果在千万级别,则hibernate不适合 3).如果表与表