set集合映射
set集合映射较为简单,我感觉有点类似一对多关系(只不过是一个po的一对多关系),因为可以一张表和两个hibernate必要配置,一个运行类就可以了。
代码如下(就以人对应地址为例)
先写出javabean模型类(人)
package one;
import java.util.Set;
public class person {
private int id;
private String name;
private Set<String> address; 这里是hibernnate所要映射的集合属性,hibernate集合属性大概有七种:1,list 2,set 3,map 4,array(用于映射数组集合属性) 5,primitive-array(专门用于映射基本数据类型的数组) 6,bag(用于映射无序集合) 7,idbag(用于映射无序集合,但为集合增强逻辑次序)
//get,set方法省略
}
再写出配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="one">
<class name="person" table="person">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name" column="name"></property>
<set name="address">
<key column="address_id"></key> key 对应数据库中的主键
<element column="addressname" type="string"></element> element 此处对应的是数据库中的字段
</set>
</class>
</hibernate-mapping>
最后完成运行类即可
package one;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
public class app {
static SessionFactory sf;
static{
sf=new Configuration().configure().buildSessionFactory();
}
@Test
public void test_add_onetomany() {
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
person p = new person();
p.setName("林先生");
Set<String> address = new HashSet<String>();
address.add("东莞");
address.add("虎门");
p.setAddress(address);
session.save(p);
tx.commit();
session.close();
}
}
显示效果
显示外键关系