Hibernate基本的一对一增删查改测试方法

Hibernate基本的一对一增删查改测试方法

框架
在这里插入图片描述

entity实体类

package com.fengjie.entity;

public class Card {
	private Integer cid;
	private String cnumber;
	
	private Student student;

	public Card() {}

	public Card(String cnumber) {
		this.cnumber = cnumber;
	}

	public Integer getCid() {
		return cid;
	}

	public void setCid(Integer cid) {
		this.cid = cid;
	}

	public String getCnumber() {
		return cnumber;
	}

	public void setCnumber(String cnumber) {
		this.cnumber = cnumber;
	}

	public Student getStudent() {
		return student;
	}

	public void setStudent(Student student) {
		this.student = student;
	}

	@Override
	public String toString() {
		return "Card [cid=" + cid + ", cnumber=" + cnumber + ", student=" + student + "]";
	}
	
}

package com.fengjie.entity;

public class Student {
	private Integer sid;
	private String name;
	
	private Card card;
	
	public Student() {}

	public Student(String name) {
		this.name = name;
	}

	public Integer getSid() {
		return sid;
	}

	public void setSid(Integer sid) {
		this.sid = sid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", name=" + name + "]";
	}

	public Card getCard() {
		return card;
	}

	public void setCard(Card card) {
		this.card = card;
	}
	
	
}

entity实体映射类

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2019-7-8 15:48:53 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.fengjie.entity.Card" table="CARD">
        <id name="cid" type="java.lang.Integer">
            <column name="CID" />
            <!-- 用用户的主键作为 卡的id的外键 -->
            <generator class="foreign">
            	<param name="property">student</param>
            </generator>
        </id>
        <property name="cnumber" type="java.lang.String">
            <column name="CNUMBER" />
        </property>
        <one-to-one name="student" class="com.fengjie.entity.Student"></one-to-one>
    </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2019-7-8 15:48:53 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.fengjie.entity.Student" table="STUDENT">
        <id name="sid" type="java.lang.Integer">
            <column name="SID" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <one-to-one name="card" class="com.fengjie.entity.Card" cascade="all"></one-to-one>
    </class>
</hibernate-mapping>

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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">123456</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/a?characterEncoding=utf-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    	
    	<!-- 显示sql语句 -->
    	<property name="show_sql">true</property>
    	<!-- 格式化sql语句 -->
    	<property name="format_sql">true</property>
    
    	<!-- 配置实体类的映射文件 -->
    	<mapping resource="com/fengjie/entity/Student.hbm.xml"/>
    	<mapping resource="com/fengjie/entity/Card.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

test测试类

package com.fengjie.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.fengjie.entity.Card;
import com.fengjie.entity.Student;

public class Test1 {
	private Session session;
	private Transaction transaction;
	private SessionFactory factory;

	//在测试方法之前执行的
	@Before
	public void before() {
		//获取hibernate配置文件对象
		Configuration configuration=new Configuration().configure();
		factory = configuration.buildSessionFactory();
		
		session = factory.openSession();
		transaction = session.beginTransaction();

	}
	
	@Test
	public void test() {
//		Student s = session.get(Student.class, 1);
//		System.out.println(s.getCard().getCnumber());
		//添加数据 学生信息和卡的信息 添加之后一一对应
//		Student s = new Student("哈哈3");
//			
//		Card c = new Card("4312725334625");
//		//相互设置  互设
//		s.setCard(c);
//		c.setStudent(s);
//			
//		session.save(s);
//		//session.save(c);
//		
//		//找到一个人同时找到这个人的卡
//		Student s = session.get(Student.class, 1);
//		System.out.println(s.getCard());
//		
//		//查询一张卡的同时查询该卡的学生
//		Card c = session.get(Card.class, 1);
//		System.out.println(c.getStudent().getName());
//		
//		//删除一个学生同时删除用户的卡
//		Student s = session.get(Student.class, 1);
//		session.delete(s);
//		
//		//删除一张卡
//		Card c = session.get(Card.class, 4);
//		//断绝关系
//		//将级联的对象踢出session的管理范围
//		Student s = c.getStudent();
//		session.evict(s);
//		
//		session.delete(c);
//		
//		//给学生添加一张新的卡
//		Student s = session.get(Student.class, 4);
//		Card c = new Card("43525362663");
//		s.setCard(c);
//		c.setStudent(s);
//		
//		session.save(c);
//		
//		//给老卡添加一个新人 no
//		Card c = session.get(Card.class, 4);
//		Student s = new Student("大侠");
//		s.setCard(c);
//		c.setStudent(s);
//		session.save(s);
//		
//		Card c = session.get(Card.class, 3);
//		c.getStudent().setName("大哥");
//		session.update(c);
		
		//删除一个用户不删除卡
		Student s = session.get(Student.class, 4);
		s.setCard(null);
		session.delete(s);
		
	}
	
	//在测试方法之后执行的方法 shift+tab
	@After
	public void after() {
		//提交事务
		transaction.commit();
		//关闭session
		session.close();
		//关闭session工厂
		factory.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值