IDEA+Hibernate初步使用

就要期末考试了,正在复习Hibernate的使用,以前的Hibernate使用方法都忘记了,尤其是在IDEA下,许多自动集成的东西都不是很记得,那就今天来好好复习一遍,写篇博客,以便以后复习。


开始创建项目

我们在项目Examination邮件新建Module(Module和Project的关系在IDEA里面,就相当于一个Project里面有几个开发模块Module

在这里插入图片描述

然后记得勾选Hibernate和Web Application,如果自己下载了Hibernate可以将Use library写进去,或者直接勾选Download下载,我这里的版本是5.+
在下面还有两个勾选方案
Create default hibernate Configuration and Main class:这里如果勾选了,就会默认创建hibernate.cfg.xml文件

在这里插入图片描述

新建的Module结构就差不多这个样子
其中com文件夹的东西是我自己测试的时候写的不用管

在这里插入图片描述

这里注意如果没有勾选之前的自动创建hibernate.cfg.xml文件,那么就打开Project Structure(点击File-》Project Structure)

选择Facets->自己的Hibernate模块,然后点击下面红色标记的+,就可以添加hibernate.cfg.xml文件了。
在这里插入图片描述



连接数据库

在IDEA右边的小窗口中打开Database管理工具。
点击+号,创建连接自己机器上的数据库,我这里用的是MySql
在这里插入图片描述
输入自己数据库对应的信息就行
在这里插入图片描述

比如我这里连接了数据库的信息是test这个数据库,现在我们将用他创建映射。
在右边有一个Persistence的工具窗口,点击它。

在这里插入图片描述
一次按下面方式操作
在这里插入图片描述

打开对应的操作。
我这里是进行student的操作,所以只用勾选student,如果你用哪个table,就勾选哪几个table。
在这里插入图片描述
这样就创建了Student的实体类,还有它的映射文件。
在这里插入图片描述

定义映射文件

在这里插入图片描述

编写配置文件

对应的账号密码自己根据需要修改即可。
在这里插入图片描述

编写测试类:

先看看Student的实体类:

package com;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Objects;

@Entity
public class Student {
    private int id;
    private Integer studentNo;
    private String studentName;
    private Integer sage;
    private String major;
    public Student(){}

    public Student(int studentNo,String studentName,int sage,String major){
        this.studentNo = studentNo;
        this.studentName = studentName;
        this.sage = sage;
        this.major = major;
    }
    @Id
    @Column(name = "id")
    public int getId() {
        return id;
    }

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

    @Basic
    @Column(name = "student_no")
    public Integer getStudentNo() {
        return studentNo;
    }

    public void setStudentNo(Integer studentNo) {
        this.studentNo = studentNo;
    }

    @Basic
    @Column(name = "student_name")
    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    @Basic
    @Column(name = "sage")
    public Integer getSage() {
        return sage;
    }

    public void setSage(Integer sage) {
        this.sage = sage;
    }

    @Basic
    @Column(name = "major")
    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return id == student.id &&
                Objects.equals(studentNo, student.studentNo) &&
                Objects.equals(studentName, student.studentName) &&
                Objects.equals(sage, student.sage) &&
                Objects.equals(major, student.major);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, studentNo, studentName, sage, major);
    }
}

package com;

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

public class Main {
    public static void main(String[] args) {
        Configuration configuration = new Configuration().configure();
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();//这是5.0+版本的写法
        SessionFactory factory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();  //这是5.0+版本的写法
        Session session = factory.openSession();
        Transaction tx = session.beginTransaction();
        Student student = new Student();
        student.setStudentNo(2012108);
        student.setStudentName("王小明");
        student.setSage(20);
        student.setMajor("计算机科学技术");
        session.save(student);//将student对象持久化到数据表中
        System.out.println("插入同学成功!!");

        Student stud = (Student) session.get(Student.class,new Integer(1));
        System.out.println(stud.getStudentName()+"  --   "+stud.getSage());
        tx.commit();
        session.close();
        factory.close();
    }
}

一定要注意我是5.0+版本的写法:

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
SessionFactory factory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

4.+版本可能是这样,我没用过,也不是很清楚:

ServiceRegistry serviceRegistry= new ServiceRegistrybuilder().applySettings(configuration.getProperties()).buildServiceRegistry();

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满锅lock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值