Hibernate框架简介①

标签:?JAVA??Hibernate

这个Hibernate框架系列是使用配置文件的方式来搭建的(非注解方式)

搭建环境:

引包: 链接:https://pan.baidu.com/s/1tqCg1HYwQaW86HDW6s2rLg 密码:upj1

?

创建实体类User:

package com.rl.hiber.model;

import java.util.Date;

public class User {

    private int userId;
    
    private String uname;
    
    private int gender;
    
    private Date birthday;

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public int getGender() {
        return gender;
    }

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

    public Date getBirthday() {
        return birthday;
    }

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

映射文件User.hbm.xml:





    
        
            
        
        
        
        
    

?

配置文件hibernate.cfg.xml






    

        
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost:3306/hiber01
        root
        root

        
        1

        
        org.hibernate.dialect.MySQL5Dialect

        
        true

        
        
    

接下来需要创建数据库hiber01,?这里不赘述

?

提供一个工具类,?该工具类能够自动生成建表脚本,?帮助我们自动建表

DBExport:

package com.rl.hiber.utils;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

/**
 * 工具类: 自动建表
 * @author Administrator
 */
public class DBExport {

    public static void main(String[] args) {
        //创建hibernate的配置对象
        Configuration cfg = new Configuration();
        //指定hibernate配置文件的位置
        cfg.configure("hibernate.cfg.xml");
        //创建表的对象
        SchemaExport se = new SchemaExport(cfg);
        se.create(true, true);
    }
}

查看数据库结果:

测试代码:

package com.rl.hiber.test;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.Test;

import com.rl.hiber.model.User;

public class TestHibernate {

    @Test
    public void test() {
        Configuration cfg = new Configuration();
        //配置hibernate核心文件的位置
        cfg.configure("hibernate.cfg.xml");
        //注册配置属性信息
        ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
        //创建SessionFactory对象, 该对象非常大, 一个项目启动多久, 该SessionFactory就运行多久
        SessionFactory factory = cfg.buildSessionFactory(sr);
        //打开session
        Session session = factory.openSession();
        //需要先开启事务
        Transaction tx = session.beginTransaction();
        //创建对象
        User user = new User();
        user.setUserId(1);
        user.setUname("zhangsan");
        user.setGender(1);
        user.setBirthday(new Date());
        //保存user对象到数据库中
        session.save(user);
        //事务提交
        tx.commit();
        //关闭session节省资源
        session.close();
    }
}

数据库结果:

?

下面简单介绍一下hibernate的配置文件(涉及到两个配置文件?分别是hibernate.cfg.xml和xxx.hbm.xml)

数据库连接的配置:

必选配置(数据库连接配置,?注册映射文件)

可选配置:

数据库连接池,?数据库方言(各种数据的方言自行百度),?是否输出sql

高级配置:

由于自带的连接池功能太弱,?因此将数据库连接池修改成c3p0的连接池:

建表策略(提一下,?不重要了解即可,?默认使用none):

none

这句可不配置,?默认就none

总共有四个状态:

none:?什么都不做

create:?每次执行hibernate的操作是都先删表再建表

create-drop:?每次执行hibernate操作时都先建表再填入数据, 且SessionFactory一旦关闭则将表全部删除

validate:?每次执行hibernate操作时就验证数据库的表和mapping的关系是否正确

原文链接:加载失败,请重新获取