怎么操作hibernate?Hibernate入门教程

TheDisguiser 2020-04-13 20:46:05 java常见问答 9626

在项目开发中,数据库是必不可少的,而对数据库进行各种操作,则需要框架的支持,否则会十分繁琐,hibernate就是一个专门帮助程序员操作数据库的全自动orm框架,下面就让我们一起来看看如何使用hibernate这个框架吧。

想熟练的使用一样东西,我们必须先了解它,框架也是一样,先来了解一下hibernate吧。

基本概述

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

ORM

orm即object/Relational Minping,对象关系映射。简单的说就是将数据库表与java类映射,数据库表中的列及类型对应java类中的属性及类型的映射。

那么如何使用hibernate增删改查呢,通过下面这个例子,你就能清楚的了解了

首先来个Student类:

package com.hibernate.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "_Teacher")
public class Teacher
{
    private int id;
    private String name;
    private int age;
    private String birthPlace;
    @Id
    @GeneratedValue
    @Column(name = "_id")
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id = id;
    }
    @Column(name = "_name")
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    @Column(name = "_age")
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
    @Column(name = "_birthPlace")
    public String getBirthPlace()
    {
        return birthPlace;
    }
    public void setBirthPlace(String birthPlace)
    {
        this.birthPlace = birthPlace;
    }
}

然后创建个JUnit Test Case类型的TeacherTest:

先讲讲session.save()方法吧,就是增加:

package com.hibernate.model;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class TeacherTest
{
    public static SessionFactory sf = null;
    @BeforeClass
    public static void beforeClass()
    {
        try
        {
            sf = new AnnotationConfiguration()
                .configure()
                .buildSessionFactory();
            //此处最好要获取一下异常,因为annotation有一个bug有时出现有时不出现
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {}
    }
    @Test
    public void testSave()
    {
        //增
        Teacher t = new Teacher();
        t.setAge(23);
        t.setName("moluo");
        t.setBirthPlace("huangshan");
        Session session = sf.getCurrentSession();
        session.beginTransaction();
        session.save(t);
        session.getTransaction()
            .commit();
    }
    @AfterClass
    public static void afterClass()
    {
        sf.close();
    }
}

再来是session.delete()方法,也就是删除:

@Test
public void testDelete()
{
    //删除
    Teacher t = new Teacher();
    t.setId(2);
    Session session = sf.getCurrentSession();
    session.beginTransaction();
    session.delete(t);
    session.getTransaction()
        .commit();
}

接着是session.get(),查询是否存在:

@Test
public void testGet()
{ //get
    Session session = sf.getCurrentSession();
    session.beginTransaction();
    Teacher t = (Teacher) session.get(Teacher.class, 1);
    System.out.println("姓名为:" + t.getName());
    session.getTransaction()
        .commit();
}

最后就是修改啦,我们通过HQL语句来实现更新:

@Test
public void testUpdate()
{ //更新
    Session session = sf.getCurrentSession();
    session.beginTransaction();
    String url = "update Teacher t set t.birthPlace = 'anhui' where id = 1";
    //注意这里的Teacher必须是对象名字,而不是表名,t是对象的别名
    Query q = session.createQuery(url);
    //这里导入的包是:import org.hibernate.Query;
    q.executeUpdate();
    session.getTransaction()
        .commit();
}

以上就是本篇文章的所有内容啦,想知道更多关于Java一些知识问答的知识吗?烦请多多关注本站啦。