在项目开发中,数据库是必不可少的,而对数据库进行各种操作,则需要框架的支持,否则会十分繁琐,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一些知识问答的知识吗?烦请多多关注本站啦。