HIBERNATE核心开发接口介绍

简介:

Gender类

package com.zzk.hibernate.model;

public enum Gender {
	MALE, FEMALE
}

Student类

package com.zzk.hibernate.model;

public class Student {
	
	private int id;
	private String name;
	
	private int age;
	private String sex;
	private boolean good;
	public boolean isGood() {
		return good;
	}
	public void setGood(boolean good) {
		this.good = good;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	
	
}

Teacher类

package com.zzk.hibernate.model;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;

@Entity

public class Teacher {
	
	private int id;
	private String name;
	private String title; 
	private String yourWifeName;
	private Date birthDate;
	private boolean good;
	private Gender gender;
	
	@Enumerated(EnumType.STRING)
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	public boolean isGood() {
		return good;
	}
	public void setGood(boolean good) {
		this.good = good;
	}
	@Transient
	public String getYourWifeName() {
		return yourWifeName;
	}
	public void setYourWifeName(String yourWifeName) {
		this.yourWifeName = yourWifeName;
	}
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public Date getBirthDate() {
		return birthDate;
	}
	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}
	
}


比较详细的JUNIT单元测试类

package com.zzk.hibernate.model;

import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class HibernateCoreAPITest {
	private static SessionFactory sessionFactory;
	
	@BeforeClass
	public static void beforeClass() {
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}
	@AfterClass
	public static void afterClass() {
		sessionFactory.close();
	}
	
	
	
	@Test
	public void testTeacherSave() {
	
		Teacher t = new Teacher();
		
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());
		
		//Session session = sessionFactory.openSession();
		Session session = sessionFactory.getCurrentSession();
		
		session.beginTransaction();
		session.save(t);
		
		Session session2 = sessionFactory.getCurrentSession();
		
		System.out.println(session == session2);
		
		session.getTransaction().commit();
		
		Session session3 = sessionFactory.getCurrentSession();
		
		System.out.println(session == session3);
		
		
	}
	
	@Test
	public void testSaveWith3State() {
	
		Teacher t = new Teacher();
		
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());
		session.getTransaction().commit();
		
		System.out.println(t.getId());
	}
	
	@Test
	public void testDelete() {
	
		Teacher t = new Teacher();
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());
		session.getTransaction().commit();
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}
	
	@Test
	public void testDelete2() {
	
		Teacher t = new Teacher();
		t.setId(2);
		
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.delete(t);
		session2.getTransaction().commit();
	}
	
	@Test
	public void testLoad() {
	
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.load(Teacher.class, 1);
		
		session.getTransaction().commit();
		System.out.println(t.getClass());
		//System.out.println(t.getName());
	}
	
	@Test
	public void testGet() {
	
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.get(Teacher.class, 1);
		
		session.getTransaction().commit();
		System.out.println(t.getClass());
		//System.out.println(t.getName());
	}
	
	@Test
	public void testUpdate1() {
	
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.get(Teacher.class, 1);
		
		session.getTransaction().commit();
		
		t.setName("zhanglaoshi");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);
		
		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate2() {
		
		
		Teacher t = new Teacher();
		t.setName("zhanglaoshi");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);
		
		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate3() {
		
		
		Teacher t = new Teacher();
		t.setId(1);
		t.setName("zhanglaoshi");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(t);
		
		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate4() {
		
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.get(Teacher.class, 1);
		t.setName("zhangsan2");
		session.getTransaction().commit();
	}
	
	@Test
	public void testUpdate5() {
		
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Student s = (Student)session.get(Student.class, 1);
		s.setName("zhangsan5");
		session.getTransaction().commit();
		
		s.setName("z4");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.update(s);
		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate6() {
		
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Student s = (Student)session.get(Student.class, 1);
		s.setName("zhangsan6");
		session.getTransaction().commit();
		
		s.setName("z4");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.merge(s);
		session2.getTransaction().commit();
	}
	
	@Test
	public void testUpdate7() {
		
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Query q = session.createQuery("update Student s set s.name='z5' where s.id = 1");
		q.executeUpdate();
		session.getTransaction().commit();
		
	}
	
	@Test
	public void testSaveOrUpdate() {
		
		
		Teacher t = new Teacher();
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.saveOrUpdate(t);//执行save
		
		session.getTransaction().commit();
		
		t.setName("t2");
		
		Session session2 = sessionFactory.getCurrentSession();
		session2.beginTransaction();
		session2.saveOrUpdate(t);//执行update
		session2.getTransaction().commit();
		
	}
	
	@Test
	public void testClear() {
	
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.load(Teacher.class, 1);
		System.out.println(t.getName());
		
		session.clear();
		
		Teacher t2 = (Teacher)session.load(Teacher.class, 1);
		System.out.println(t2.getName());
		session.getTransaction().commit();
		
		
	}
	
	@Test
	public void testFlush() {
	
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		Teacher t = (Teacher)session.load(Teacher.class, 1);
		t.setName("tttt");
		
		
		session.clear();
		
		t.setName("ttttt");
		
	
		session.getTransaction().commit();
		
		
	}
	
	@Test
	public void testSchemaExport() {
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
	}
	
	public static void main(String[] args) {
		beforeClass();
	}
}




目录
相关文章
|
2月前
|
Java 数据库连接 API
解锁高效开发秘籍:深入探究 Hibernate 如何优雅处理一对多与多对多关系,让数据映射再无烦恼!
【9月更文挑战第3天】Hibernate 是 Java 领域中最流行的 ORM 框架之一,广泛用于处理实体对象与数据库表之间的映射。尤其在处理复杂关系如一对多和多对多时,Hibernate 提供了丰富的 API 和配置选项。本文通过具体代码示例,展示如何使用 `@OneToMany`、`@JoinColumn`、`@ManyToMany` 和 `@JoinTable` 等注解优雅地实现这些关系,帮助开发者保持代码简洁的同时确保数据一致性。
52 4
|
2月前
|
SQL Java 数据库连接
Hibernate 批量操作来袭!掌握最佳实践,轻松应对数据洪流,开启高效开发新时代
【9月更文挑战第3天】在软件开发中,高效数据操作至关重要。作为流行的Java持久化框架,Hibernate提供了强大的数据库操作功能。本文探讨了Hibernate批量操作,包括批量插入、更新和删除的最佳实践,通过使用原生SQL和`Session`的`createNativeQuery()`方法,结合`addBatch()`及`executeBatch()`方法实现高效批量操作。合理设置批量大小、事务管理和性能测试是优化的关键。在实际开发中,应根据业务需求和性能要求选择合适的方法,以提升程序性能和可维护性。
196 3
|
3月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
47 1
|
3月前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
206 0
|
SQL XML Java
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
|
SQL Java 数据库连接
2021-5-14hibernate核心开发接口(API)(下)
persist() delete() 代码: update() 代码: 根据id 查询get() 根据id查询 load()
143 0
2021-5-14hibernate核心开发接口(API)(下)
|
XML Java 数据库连接
2021-5-14hibernate核心开发接口(API)(上)
0. hibernate应用程序体系结构视图 1. Hibernate 核心接口API ① Configuration接口 ② SessionFactory接口 ③ Session接口 概述 session对象的获取 a. 获取方式(两种): b. 两种方法的比较 session中的常用方法 CURD(增删查改) CURD-定义工具类 提取共享代码 创建HbnUtils工具类 类、表结构 CURD增删改的实现 save() persist() delete() update() 根据`id` 查询get() 根据`id`查询 load() `get()`和`load()` 区别
123 0
2021-5-14hibernate核心开发接口(API)(上)
|
XML Java 数据库连接
Hibernate简单注解开发和事务处理(四)下
Hibernate简单注解开发和事务处理(四)
262 0
Hibernate简单注解开发和事务处理(四)下
|
XML Java 数据库连接
Hibernate简单注解开发和事务处理(四)上
Hibernate开发时,有两种形式,一种是XML配置的方式,另外一种是注解形式的开发。 XML配置是,需要写一个实体类User,还要在它的同级目录下创建一个相对应的User.hbm.xml, 而注解方式比较简单,只需要在User类中添加相应的注解即可。
189 0
Hibernate简单注解开发和事务处理(四)上
|
SQL Java 数据库连接
走进JavaWeb技术世界13:Hibernate入门经典与注解式开发
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号【Java技术江湖】的《走进JavaWeb技术世界》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。