Hibernate学习(一)

搭建环境

1、创建普通的Java工程

2、添加相应的jar包,下载链接:https://files.cnblogs.com/files/AmyZheng/required.rar

第一个实例

1、引用jar包

2、创建数据库和表

DROP TABLE IF EXISTS t_customer ;

CREATE TABLE t_customer (
    id  INT(5) PRIMARY KEY ,
    email  VARCHAR(60)  UNIQUE NOT NULL,
    password VARCHAR(32) NOT NULL ,
    nickname VARCHAR(150) ,
    gender VARCHAR(3) ,
    birthdate DATE ,
    married     CHAR(1)
);

3、创建一个Customer类

package ecut.orm.entity;

import java.util.Date;

/**
 * source命令加上 .sql的完整路径导入来创建表
 * 实体类 Customer <================> 数据库表: t_customer
 *            属性            <================>        列
 *        id                 <================>       id
 *        emial             <================>         email
 *        password     <================>         password
 *        nickname         <================>         nickname
 *        gender         <================>         gender
 *        birthdate     <================>         birthdate
 *        married         <================>         married
 *        
 *        从对象到关系型数据库之间的映射(对应关系) object relation mapping
 *   new Customer();         <==========>    一条记录 (关系)
 *   
 *   hibernate作用 :把对象存入数据库变成记录或者从数据库查询一条记录包装成一对象个(orm框架)
 *   
 */
public class Customer {

    // 对象标识符 ( Object Identifier,id的值是对象标识符 ) 属性 ( 对应数据库主键 )
    private Integer id;
    
    private String email;
    private String password;
    private String nickname;
    private char gender;
    private Date birthdate;
    private boolean married;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

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

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public char getGender() {
        return gender;
    }

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

    public Date getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    public boolean isMarried() {
        return married;
    }

    public void setMarried(boolean married) {
        this.married = married;
    }

}

我们接下来要做的事情就是实现表和实体类中的映射,即类中属性要和表中的列相对应, hibernate的作用就是把对象存入数据库变成记录或者从数据库查询一条记录包装成一对象个(object relational mapping框架)。

4、编写映射文件(以hbm.xml为后缀)

首先将jar中的dtd文件保存在本地,依据hibernate-core-5.2.10.Final.jar中的/org/hibernate/hibernate-mapping-3.0.dtd编写Customer.hbm.xml

Hibernate学习(一)_第1张图片

 让Eclipse支持映射文件的智能提示,将dtd文件复制到容易查找的目录下,在Eclipse的导航选择Widow下的preferences,选择如下目录

Hibernate学习(一)_第2张图片

点击Add,显示如下页面,Key Type选择URI

Hibernate学习(一)_第3张图片

 Location 选择dtd文件所在路径,Key填http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd

Hibernate学习(一)_第4张图片

 根据dtd文件的提示编写配置文件如下:









    
    
    
        
        
             
        
    
        
        
        
        
        
        
        
        
        
        
    
    
    

 class标签内必须要有id标签,要使用 id 标签来单独映射与 数据库主键 对应的 对象标识符属性,使用property标签中通过指定name和column使数据库中的列和类中的属性相关联,且需要使用 type 属性指定 映射类型 ( 既不是 Java 类型,也不是 数据库类型,而是 中间类型 )。

5、创建Hibernate的配置文件hibernate.cfg.xml(以cfg.xml为后缀)

首先将jar中的dtd文件保存在本地,依据hibernate-core-5.2.10.Final.jar中的/org/hibernate/hibernate-configuration-3.0.dtd编写hibernate.cfg.xml

Hibernate学习(一)_第5张图片

 根据上面映射文件一样的方式,让Eclipse支持struts.xml的智能提示,并编写配置文件如下:




    
    


    
        
        com.mysql.jdbc.Driver
        
        jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
        root
        123456

        
        org.hibernate.dialect.MySQLDialect
        
        
        true
        
        true
        
        
        
    

在hibernate配置文件配置数据库相关信息,并指定数据方言,最重要要的是导入映射文件。

6、编写测试类

DML语句的测试案例:

package ecut.orm.test;

import java.io.Serializable;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import ecut.orm.entity.Customer;

public class TestSaveCustomer {

    public static void main(String[] args) {
        
        // 对象 <======>  记录
        Customer c = new Customer();
        
        // c.setId( 100 ); // 不要指定 对象标识符 ,而是期望由 Hibernate 维护
        c.setEmail( "[email protected]" );
        c.setPassword( "hello2017" );
        
        Date birthdate = null ;
        c.setBirthdate( birthdate );
        c.setGender( '男' );
        
        c.setNickname( "君宝" );
        c.setMarried( false );
        
        // 创建一个 Configuration 对象,用来读取配置文件 ( 默认位置、默认名称 )
        Configuration config = new Configuration();
        // 读取配置文件
        config.configure("ecut/orm/hibernate.cfg.xml");
        //config.configure(); // 读取 默认位置 ( 当前 classpath ) 的 默认名称 ( hibernate.cfg.xml ) 的配置文件
        
        // 使用 Configuration 创建 SessionFactory
        SessionFactory factory = config.buildSessionFactory();
        
        // 创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 )
        Session session = factory.openSession();
        
        System.out.println( session );
        
        // 如果执行的是 DML 语句,则需要 开启事务
        session.getTransaction().begin();
        
        // 保存指定的对象 到数据库中
        Serializable s = session.save( c ); // DML(数据操纵语言) : insert 、update 、delete 
        System.out.println( "返回 : " + s );
        
        // 如果执行的是 DML 语句,则需要 提交事务
        session.getTransaction().commit();
        
        session.close();
        
        factory.close();
        
    }

}

通过Configuration类读取配置文件hibernate.cfg.xml,再通过这个Configuration 对象创建 SessionFactory,再创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 ),通过这个session对象完成数据库操作。如果执行的是DML语句还需要开启事务。

查询的测试案例:

package ecut.orm.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import ecut.orm.entity.Customer;
public class TestGetCustomer {

    public static void main(String[] args) {
        
        // 创建一个 Configuration 对象,用来读取配置文件 ( 默认位置、默认名称 )
        Configuration config = new Configuration();
        // 读取配置文件
        config.configure("ecut/orm/hibernate.cfg.xml");
        //config.configure(); // 读取 默认位置 ( 当前 classpath ) 的 默认名称 ( hibernate.cfg.xml ) 的配置文件
        
        // 使用 Configuration 创建 SessionFactory
        SessionFactory factory = config.buildSessionFactory();
        
        // 创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 )
        Session session = factory.openSession();
        
        System.out.println( session );
        
        Customer c  = session.get( Customer.class ,  2 );
        
        System.out.println( c.getEmail() );
        
        session.close();
        
        factory.close();
        
    }

}

转载请于明显处标明出处:

https://www.cnblogs.com/AmyZheng/p/9300838.html

你可能感兴趣的:(框架,Hibernate)