Hibernate映射Set
其中Set集合中可以放我们自定义的类,也可以是像String、Long、Date等能够直接映射到数据库表字段上的类型,后者相对来说比较简单。
一、List中的元素类型为可以直接映射到字段上的java类型
User类
package test;
public class User {
private int id;
private String name;
private Set<String> books = new HashSet<String>();
}
User_hbm.xml
<hibernate-mapping>
<class name="test.User" table="hbn_user" >
<id name="id" type="java.lang.Integer" >
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String" column="name" length="10"/>
<set name="books" table="hbn_books" ><!-- 将set中的内容放在hbn_books表 -->
<!-- hbn_books表中的主键,同时也是参考hbn_user表主键id的外键 -->
<key column="uid"></key>
<!--在多的一端,产生一列,用来关联少的一方的id-->
<element column="book_id" type="string"></element>
</set>
</class>
</hibernate-mapping>
HibernateUtil类
public class HibernateUtil {
private static Configuration cfg = null;
private static SessionFactory factory = null;
private static Session session = null ;
static {
init();
}
public static void init() {
cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
}
public static Session getSession() {
if (factory != null){
return session = factory.openSession();
}
init();
return session = factory.openSession();
}
public static void closeSession() {
if(session!=null && session.isOpen())
session.close();
}
}
Test类
public class Test {
/**
* 根据*.hbm.xml文件对应的生成数据库表
*/
@Test
public void testCreateDB() {
Configuration cfg = new Configuration().configure();
}
@Test
public void testSave() throws HibernateException, SerialException,
SQLException, IOException {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();
User user = new User();
user.setName("Waylon");
user.getBooks().add("book1");
user.getBooks().add("book2");
session.save(user);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
throw e;
} finally {
HibernateUtil.closeSession();
}
}
}
hbn_user表

hbn_book表

表模型

二、Set中的元素类型为自定义
较为复杂,参考一对多映射的笔记(hibernate四)
本文介绍了Hibernate中如何映射Set集合,包括直接映射到数据库字段的简单类型以及自定义类型的映射。通过示例展示了User类、User_hbm.xml配置、HibernateUtil工具类以及Test测试类的使用,涉及hbn_user和hbn_book两张表的模型。
2974

被折叠的 条评论
为什么被折叠?



