hibernate菜鸟教程,入门即上手

TheDisguiser 2020-07-12 18:16:00 java常见问答 10054

hibernate作为虽然说目前已经有点小过时了,但是闲暇时间掌握一些它的基本用法及原理还是有必要的。这次就跟小编一起来看看hibernate有哪些入门知识吧。

什么是hibernate?

1)、一个应用在javaEE三层结构中的dao层框架。

2)、能够在dao层里面做对数据库的增删改查操作,使用Hibernate框架实现增删改查操作。实际来说,Hibernate就是对jdbc的轻量级的封装,它的底层就是jdbc。

3)、Hibernate是开源的、轻量级的框架。

简单的说:Hibernate是一个使用ORM思想对数据库进行的增删改查操作的轻量级持久层框架,它的主要功能是简化了java对数据的操作。能通过ORM映射使整个过程面向对象。提供更高的开发效率。

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();
}

hibernate特性

1、对象关系映射(ORM),hibernate使用时只需操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。

2、 透明持久化(persistent),带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。

3、 事务Transaction(org.hibernate.Transaction),应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。4、它没有侵入性,即所谓轻量级框架。

5、移植性很好。

6、拥有缓存机制,提供一级缓存和二级缓存。

7、简洁的HQL编程。

以上就是一些hibernate的入门知识了,更多相关java基础教程,请持续关注奇Q工具网了解详情。

推荐阅读:

hibernate与jdbc的联系有哪些?

怎么操作hibernate?Hibernate入门教程

mybatis和hibernate的区别是什么?有什么区别?