Hibernate注解版CRUD和Junit4简单使用

Hibernate注解版CRUD

注解版就是不需要类名.hbm.xml文件

直接在实体类注解,从而与数据库表、字段相关联

67fae94b8da37cccff75d8885fec0f30e9c.jpg可以发现model这里并没有Teacher.hbm.xml文件

Teacher.java  @的地方就是注解,使得实体类和表相关联

package com.java.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity  //说明他是映射实体类
@Table(name="t_teather") //这个实体类映射到表t_teather
public class Teacher {
	private String name;
	private long id;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Id  //代表他是主键
	@GeneratedValue(generator="_native") //使用定义好的生成策略
	@GenericGenerator(name="_native",strategy="native")    //定义主键生成策略
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@Override
	public String toString() {
		return "Teacher [name=" + name + ", id=" + id + "]";
	}
	

}

TeacherTest

package com.java.service;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.java.model.Teacher;
import com.java.util.HibernateUtil;
public class TeacherTest {
	
	private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
	
	private void add(){
	    Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher t=new Teacher();
	    t.setName("张三");
	    session.save(t);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	private void delete(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1));
	    session.delete(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	private void update(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
	    teacher.setName("张三2");
	    session.save(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	private void getAllteacher(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    //from一个类,不是表名
	    String hql="from teacher";
	    Query query=session.createQuery(hql);
	    List<Teacher> teacherList=query.list();
	    for(Teacher teacher:teacherList){
	    	System.out.println(teacher);
	    }
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}

	public static void main(String[] args) {
		TeacherTest teacherTest=new TeacherTest();
		teacherTest.add();
		// teacherTest.delete();
		//teacherTest.update();
		//teacherTest.getAllteacher();
	}
}

然后在hibernate.cfg.xml导入映射文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!--数据库连接设置 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>

       
        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
	
        <!-- 控制台显示SQL -->
        <property name="show_sql">true</property>

        <!-- 自动更新表结构 -->
        <property name="hbm2ddl.auto">update</property>
        
      <!--导入映射文件-->
  		<mapping class="com.java.model.Teacher"/>

    </session-factory>

</hibernate-configuration>

结果

587762f87edb24e6982ea68652f095ed217.jpg

Junit4单元测试框架引入

因为每次测试增删查改,都不停删除添加注释,所以引入Junit4单元测试框

1c6917553cee7203744a291c5b51bc84adc.jpg

1、导入Junit4包,Build Path

d4f92ecea07733274c7302f06ca941c7c09.jpg

选择Junit4

27e42773a149fccf5b50996661a88cb0ece.jpg-515b1cca614a1969f1b17ab792ced042511.jpg

完成

2、使用Junit4要求增删查改的方法是public

package com.java.service;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.java.model.Teacher;
import com.java.util.HibernateUtil;
public class TeacherTest {
	
	private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
	
	public void add(){
	    Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher t=new Teacher();
	    t.setName("张三");
	    session.save(t);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	public void delete(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1));
	    session.delete(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	public void update(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
	    teacher.setName("张三2");
	    session.save(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}
	
	public void getAllteacher(){
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    //from一个类,不是表名
	    String hql="from Teacher";
	    Query query=session.createQuery(hql);
	    List<Teacher> teacherList=query.list();
	    for(Teacher teacher:teacherList){
	    	System.out.println(teacher);
	    }
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}

	public static void main(String[] args) {
		TeacherTest teacherTest=new TeacherTest();
		//teacherTest.add();
		//teacherTest.delete();
		//teacherTest.update();
		teacherTest.getAllteacher();
	}
}

3、使用方法:创建Junit Test Case

0f5de78957678d6419a75a34efde0a5b736.jpg

cda414a1cbd0fd2924c19a62d49ed1c516a.jpg

选择方法,这里不需要main

e4af36bbd471274015f92a72fef26720132.jpg

得到下面代码

eac486e6f2852382954705cd31c65b508c4.jpg

"@Test”表明下面这个方法是一个测试方法,我们先删除自动生成的fail()函数的代码。添加以下代码

org.junit.Assert.*;就是静态导入的我们实现单元测试要用到的一些方法

package com.java.service;

import static org.junit.Assert.*;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Test;

import com.java.model.Teacher;
import com.java.util.HibernateUtil;

public class JunitTeacherTest {

	private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
	@Test
	public void testAdd() {
		 Session session=sessionFactory.openSession(); // 生成一个session
		    session.beginTransaction(); // 开启事务
		    
		    Teacher t=new Teacher();
		    t.setName("张三");
		    session.save(t);
		    
		    session.getTransaction().commit(); // 提交事务
		    session.close(); // 关闭session
	}

	@Test
	public void testDelete() {
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1));
	    session.delete(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}

	@Test
	public void testUpdate() {
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    
	    Teacher teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
	    teacher.setName("张三2");
	    session.save(teacher);
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}

	@Test
	public void testGetAllteacher() {
		Session session=sessionFactory.openSession(); // 生成一个session
	    session.beginTransaction(); // 开启事务
	    //from一个类,不是表名
	    String hql="from Teacher";
	    Query query=session.createQuery(hql);
	    List<Teacher> teacherList=query.list();
	    for(Teacher teacher:teacherList){
	    	System.out.println(teacher);
	    }
	    
	    session.getTransaction().commit(); // 提交事务
	    session.close(); // 关闭session
	}

}

然后测试里面的方法

912390246c2da39deec49dbaa50e5ee4991.jpg

就可以测试方法了

7f719d89d6ef67fb2e6daf3d513b6a93e0b.jpg

 

 

转载于:https://my.oschina.net/u/3848699/blog/2222725

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值