专栏首页让技术和时代并行hibernate 关联映射(2)

hibernate 关联映射(2)

这里紧接着上一遍文章

新建一个Person类

package com.nerd.entity;

import java.util.HashSet;
import java.util.Set;

public class Person {
	public Set getEvents() {
		return events;
	}


	public void setEvents(Set events) {
		this.events = events;
	}
	private Set events = new HashSet();

	

	private long id;
	private int age;
	private String firstname;
	private String lastname;
	public Person() {

	}
	
	
	public int getAge() {
		return age;
	}
	public String getFirstname() {
		return firstname;
	}
	public long getId() {
		return id;
	}
	public String getLastname() {
		return lastname;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}
	public void setId(long id) {
		this.id = id;
	}
	public void setLastname(String lastname) {
		this.lastname = lastname;
	}
}

2:创建映射文件

<?xml version="1.0" encoding='UTF-8'?> 

<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
 <hibernate-mapping>
 	<class name="com.nerd.entity.Person" table="person">
 		<id name="id" type="long" column="PERSON_ID">
 			<generator class="native" />
 		</id>
 		<property name="age" />
 		<property name="firstname" />
 		<property name="lastname" />
 		<set name="events" table="person_event">
 			<key column="PERSON_ID" />
 			<many-to-many column="EVENT_ID" class="com.nerd.entity.Event" />
 		</set>
 	</class>
 </hibernate-mapping>

3:把配置加入到hibernate.cfg.xml中

<mapping resource="com/nerd/entity/Person.hbm.xml"/>

4:创建一个方法使关联工作

private void creatAndStorePerson(String firstname,String lastname){
		Session session = HibernateUtil.getsSessionFactory().getCurrentSession();
		session.beginTransaction();
		Person person = new Person();
		person.setId(1234l);
		person.setAge(12);
		person.setFirstname(firstname);
		person.setLastname(lastname);
		session.save(person);
		session.getTransaction().commit();
	}
	
	private void addPersonToEvent(long personid,long eventid){
		Session session = HibernateUtil.getsSessionFactory().getCurrentSession();
		session.beginTransaction();
		Person aPerson = (Person)session.load(Person.class, personid);
		Event aEvent = (Event)session.load(Event.class, eventid);
		aPerson.getEvents().add(aEvent);
		session.getTransaction().commit();
	}

注意Hibernate的generator属性使用,如果使用native为主键自动生成策略,由底层方言实现,

要想自己设置数据持久化到数据库,需要使用assigned(用户自定义id)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Google Guava]-缓存清除

    显式清除 任何时候,你都可以显式地清除缓存项,而不是等到它被回收: 个别清除:Cache.invalidate(...

    用户5166556
  • guava 集合和函数接口妙用

    用户5166556
  • 把一个txt文件转化为带标题栏的Excel文档

    用户5166556
  • 经过性能对比,我发现温少的FastJson真牛。

    JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。

    Spark学习技巧
  • Json与对象相互转换 - alibaba fastjson

    夹胡碰
  • springboot aop 自定义注解方式实现完善日志记录(完整源码)

    主要记录的信息有: 操作人,方法名,参数,运行时间,操作类型(增删改查),详细描述,返回值。

    用户1518699
  • Android-自定义Router(路由)

    参考资料:https://mp.weixin.qq.com/s/itAuv86OsTHfBahUrk21DA

    android_薛之涛
  • 第二阶段-Java面向对象:【第三章 多态】

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

    BWH_Steven
  • 图解Java设计模式之观察者模式

    1)气象站可以将每天测量到的湿度、温度、气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 2)需要设计开放型API,便于其他第三方也能接入气象站...

    海仔
  • 关于数据地图的几个遗留问题解决方案

    今天跟大家分享三个数据地图的遗留问题,包括以前因为技术手段限制无法解决的问题,以及读者吐槽最多的问题。 如何在一个版面上呈现不同行政级别的地理信息; 如何给版面...

    数据小磨坊

扫码关注云+社区

领取腾讯云代金券