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工具网了解详情。
推荐阅读: