mysql字段映射set_Hibernate集合映射Set篇

集合映射 我们通过一个具体示例看一下如何在Hibernate中使用集合映射。 例如:在一个购物网站中,需要有个用户表用来记录用户的基本信息,这张表包括用户的ID,姓名以及邮寄地址,但是有些人可能有多个邮寄地址,这时在数据库中我们需要使用另外一张表单独存

集合映射

我们通过一个具体示例看一下如何在Hibernate中使用集合映射。

例如:在一个购物网站中,需要有个用户表用来记录用户的基本信息,这张表包括用户的ID,姓名以及邮寄地址,但是有些人可能有多个邮寄地址,这时在数据库中我们需要使用另外一张表单独存储用户的邮寄信息,在这张表中使用UserId作为用户表的一个外键,从而实现两张表之间的关联。

这里我们使用Hibernate的自动建表机制,不在数据库中创建相应的数据表。

要实现自动建表需要在Hibernate.cfg.xml文件中添加如下属性

update

首先创建用户类,用户类中有id属性,姓名属性和存放收货地址的属性,因为收货地址有多个所以不能使用String类型,所以考虑使用集合类型,因此创建具体类如下:

package entity;

import java.util.HashSet;

import java.util.Set;

public class TUser{

private int id;

private String name;

private SetuserAddresses = new HashSet();

//省略get/set方法

}

然后写TUser类的具体映射配置文件。

在Hibernate中要通过用户表中映射文件访问到集合表需要知道一下信息

1、 集合表的名称(表名称)

2、 集合表中的外键(集合外键)

3、 集合表中的元素列(集合元素)

然后看具体配置代码

标签用于指定集合映射,其name属性用于指定POJO类中Set类型数据属性名,table用于指定其关联的数据表。

标签用于指定关联表的外键。用于指定关联表中其他属性。

下面看一下测试代码

package Test;

import java.util.HashSet;

import java.util.Set;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;

import entity.TUser;

import SessionFactory.HibernateSessionFactory;

public class Test {

private Session session = null;

private Transaction tran = null;

@org.junit.Test

public void test() {

Setset = new HashSet();

set.add("地址一");

set.add("地址二");

session = HibernateSessionFactory.getSession();

tran = session.beginTransaction();

try {

TUser user = new TUser();

user.setId(2);

user.setName("张三");

user.setUserAddresses(set);

session.save(user);

tran.commit();

} catch (Exception e) {

tran.rollback();

} finally {

HibernateSessionFactory.closeSession();

}

}

@org.junit.Test

public void get() {

session = HibernateSessionFactory.getSession();

String hql = "FROM TUser t where t.id=1";

Query query = session.createQuery(hql);

TUser user = (TUser) query.uniqueResult();

System.out.println(user.getName());

}

}

然后通过数据库查询即可查询到相应数据。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值