集合映射 我们通过一个具体示例看一下如何在Hibernate中使用集合映射。 例如:在一个购物网站中,需要有个用户表用来记录用户的基本信息,这张表包括用户的ID,姓名以及邮寄地址,但是有些人可能有多个邮寄地址,这时在数据库中我们需要使用另外一张表单独存
集合映射
我们通过一个具体示例看一下如何在Hibernate中使用集合映射。
例如:在一个购物网站中,需要有个用户表用来记录用户的基本信息,这张表包括用户的ID,姓名以及邮寄地址,但是有些人可能有多个邮寄地址,这时在数据库中我们需要使用另外一张表单独存储用户的邮寄信息,在这张表中使用UserId作为用户表的一个外键,从而实现两张表之间的关联。
这里我们使用Hibernate的自动建表机制,不在数据库中创建相应的数据表。
要实现自动建表需要在Hibernate.cfg.xml文件中添加如下属性
<property name="hbm2ddl.auto">update</property>
首先创建用户类,用户类中有id属性,姓名属性和存放收货地址的属性,因为收货地址有多个所以不能使用String类型,所以考虑使用集合类型,因此创建具体类如下:
package entity;
import java.util.HashSet;
import java.util.Set;
public class TUser{
private int id;
private String name;
private Set<String> userAddresses = new HashSet<String>();
//省略get/set方法
}然后写TUser类的具体映射配置文件。
在Hibernate中要通过用户表中映射文件访问到集合表需要知道一下信息
1、 集合表的名称(表名称)
本文档主要讲述的是mybatis语法和介绍;MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。感兴趣的朋友可
2
2、 集合表中的外键(集合外键)
3、 集合表中的元素列(集合元素)
然后看具体配置代码
<hibernate-mapping>
<class name="entity.TUser" table="T_USER" schema="MYHR">
<id name="id" type="int">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>
<property name="name" type="string">
<column name="NAME" not-null="true" />
</property>
<set name="userAddresses" table="USER_ADDRESS" >
<key>
<column name="USERID" not-null="true" />
</key>
<element type="string" column="address"></element>
</set>
</class>
</hibernate-mapping>下面看一下测试代码
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() {
Set<String> set = new HashSet<String>();
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());
}
}
然后通过数据库查询即可查询到相应数据。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号