实体类
package cn.itcast.e_hbm_collection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class User {
private Integer id;
private String name;
//特别注意:使用集合属性时,一定要使用接口,不能申明为具体实现类,
//因为hibernate经过Session操作后,就变成了hibernate自己的实现类
private Set<String> addressSet = new HashSet<String>(); // Set集合
private List<String> addressList = new ArrayList<String>(); // List集合
private String[] addressArray; // 数组
private Map<String, String> addressMap = new HashMap<String, String>();
private List<String> addressBag = new ArrayList<String>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getAddressSet() {
return addressSet;
}
public void setAddressSet(Set<String> addressSet) {
this.addressSet = addressSet;
}
public List<String> getAddressList() {
return addressList;
}
public void setAddressList(List<String> addressList) {
this.addressList = addressList;
}
public String[] getAddressArray() {
return addressArray;
}
public void setAddressArray(String[] addressArray) {
this.addressArray = addressArray;
}
public Map<String, String> getAddressMap() {
return addressMap;
}
public void setAddressMap(Map<String, String> addressMap) {
this.addressMap = addressMap;
}
public List<String> getAddressBag() {
return addressBag;
}
public void setAddressBag(List<String> addressBag) {
this.addressBag = addressBag;
}
}
*****************************************************************
2 操作类
package cn.itcast.e_hbm_collection;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class App {
private static SessionFactory sessionFactory = new Configuration()//
//.configure()//
//.addClass(User.class)// 添加Hibernate实体类(加载对应的映射文件)
//.buildSessionFactory();
cfg.configure("hibernate.cfg.xml"); // 读取指定的主配置文件
sessionFactory = cfg.buildSessionFactory(); // 根据生成Session工厂
@Test
public void testSave() throws Exception {
Session session = sessionFactory.openSession();
session.beginTransaction();
// --------------------------------------------
// 构建对象
User user = new User();
user.setName("张天");
// >> Set集合
user.setAddressSet(new TreeSet<String>()); // 当设置了sort属性时,就要使用SortedSet类型
user.getAddressSet().add("2御富科贸园");
user.getAddressSet().add("1棠东东路");
// >> List集合
user.getAddressList().add("御富科贸园");
user.getAddressList().add("棠东东路");
user.getAddressList().add("棠东东路");
// >> 数组
user.setAddressArray(new String[] { "御富科贸园", "棠东东路" });
// >> Map集合
user.getAddressMap().put("公司", "御富科贸园");
user.getAddressMap().put("家庭", "棠东东路");
// >> Bag集合
user.getAddressBag().add("御富科贸园");
user.getAddressBag().add("棠东东路");
user.getAddressBag().add("棠东东路");
// 保存
session.save(user);
// --------------------------------------------
session.getTransaction().commit();
session.close();
}
@Test
public void testGet() throws Exception {
Session session = sessionFactory.openSession();
session.beginTransaction();
// --------------------------------------------
// 获取数据
User user = (User) session.get(User.class, 9);
// 显示信息
System.out.println(user.getName());
System.out.println(user.getAddressSet());
System.out.println(user.getAddressList());
System.out.println(Arrays.toString(user.getAddressArray()));
System.out.println(user.getAddressMap());
System.out.println(user.getAddressBag());
// --------------------------------------------
session.getTransaction().commit();
session.close();
}
}
*******************************************
3 映射文件配置
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.e_hbm_collection">
<class name="User" table="user">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"/>
<!-- addressSet属性,Set集合
table属性:集合表的名称
key子元素:集合外键的列名
element子元素:存放集合元素的列的信息
sort属性:"unsorted|natural|comparatorClass"
默认为:unsorted
order-by属性:写的是order by 子句,是SQL语句,是操作的集合表。
这是在查询数据时指定orderby子句。
-->
<set name="addressSet" table="user_addressSet" order-by="address ASC">
<key column="userId"></key>
<element type="string" column="address"></element>
</set>
<!-- addressList属性,List集合
list-index:用于存放索引的列
-->
<list name="addressList" table="user_addressList">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element type="string" column="address"></element>
</list>
<!-- addressArray属性,数组。与List的映射基本一致 -->
<array name="addressArray" table="user_addressArray">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element type="string" column="address"></element>
</array>
<!-- addressMap属性,Map集合 -->
<map name="addressMap" table="user_addressMap">
<key column="userId"></key>
<map-key type="string" column="key_"></map-key>
<element type="string" column="address"></element>
</map>
<!-- addressBag属性,Bag集合:无序,可重复。与Set集合的映射基本一致 -->
<bag name="addressBag" table="user_addressBag">
<key column="userId"></key>
<element type="string" column="address"></element>
</bag>
</class>
</hibernate-mapping>
分享到:
相关推荐
Hibernate映射集合属性List,用于映射集合属性 List Hibernate 自动生成表 不需sql
JAVA培训-HIBERNATE的集合映射.doc
hibernate集合的映射 集合的映射 set list array map
student与Score的Map集合关系 student与class的多对一 一对多映射
NULL 博文链接:https://lijunabc.iteye.com/blog/443381
NULL 博文链接:https://lijunabc.iteye.com/blog/443278
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
NULL 博文链接:https://wintys.iteye.com/blog/426022
hibernate 双向 多对对,一对多,一对一 映射的 集合 hibernate所有映射的集合 非常有用
本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。
hibernate中的集合映射,各种集合类型的使用方法及适用场景
hibernate集合映射inverse和cascade详解.txt
NULL 博文链接:https://lijunabc.iteye.com/blog/443353
介绍的很详细,个人觉得不错!!!
NULL 博文链接:https://lijunabc.iteye.com/blog/443305
HIBERNATE-映射排序映射 该存储库包含用于映射已排序地图的Hibernate代码示例 我们使用@OrderBy,它指定检索集合时元素的顺序。 为了简化开发和测试,我们将使用自动配置 < property xss=removed>update 数据库表...
Hibernate常见集合映射(Set,List_Array,Map,Bag)
hibernate的知识:持久化类(Persistent Classes)、对象关系数据库映射基础(Basic OR Mapping)、集合类(Collections)映射、关联关系映射、拦截器与事件(Interceptors and events)等。
2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观锁定版本控制 2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. ...
里面有所有hibernate 多种映射的代码:继承映射,实体映射,集合类映射等很全,适合初学者。