新聞中心
POJOs如下:

Customer類---->customer表
Order類對應(yīng)---->orders表
customer(1)<----->(n)order
- public class Customer
- {
- private String id;
- private String username;
- private String password;
- private Timestamp registerTime;
- private int age;
- private Set
orders = new HashSet (); - /*setter and getter method*/
- }
- public class Order
- {
- private String id;
- private String orderNumber;
- private int balance;
- private Customer customer;
- /*setter and getter method*/
- }
Set集合映射:
Hibernate為集合映射提供了專用的標(biāo)簽元素,Set集合映射,就使用
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
測試:
- tx = session.beginTransaction();
- /*
- * 創(chuàng)建Customer對象,并設(shè)置其屬性值
- */
- Customer customer = new Customer();
- customer.setUsername("zhangsan");
- customer.setPassword("123456");
- customer.setAge(22);
- customer.setRegisterTime(new Timestamp(new Date().getTime()));
- /*
- * 創(chuàng)建Order對象order1,并設(shè)置其屬性值
- */
- Order order1 = new Order();
- order1.setOrderNumber("a1a2a3");
- order1.setBalance(1000);
- order1.setCustomer(customer);
- /*
- * 創(chuàng)建Order對象order2,并設(shè)置其屬性值
- */
- Order order2 = new Order();
- order2.setOrderNumber("d3d2d1");
- order2.setBalance(670);
- order2.setCustomer(customer);
- customer.getOrders().add(order1);
- customer.getOrders().add(order2);
- session.saveOrUpdate(customer);
- tx.commit();
查看數(shù)據(jù)庫的數(shù)據(jù):
customer表:
orders表
可以看到數(shù)據(jù)被成功的插入到數(shù)據(jù)庫中了,并且"custom_id"列(關(guān)系列)也正確賦值了。
List映射:
Hibernate為集合映射提供了專用的標(biāo)簽元素,List集合映射,就使用標(biāo)簽表示:
List集合是有順序的,"index"標(biāo)簽,是用于記錄順序,List的順序?qū)⒈憩F(xiàn)在"customer_index"列上,其余設(shè)置,與Set集合類似。注意:List映射中"inverse"中的值不能設(shè)置為"true",因為List集合的順序只有customer方知道,order方不知道List的存在。不然,"customer_index"的列值將不會被賦值。
查看數(shù)據(jù)庫:
customer表:
orders表:
可以看到記錄正確的插入到數(shù)據(jù)庫中了,而且"custom_index"正確的表示出List的順序。
Array(數(shù)組)映射:標(biāo)簽使用
Map映射:
Hibernate為集合映射提供了專用的標(biāo)簽元素,Map集合映射,就使用
Map映射中
Bag映射:它是List與Set集合的結(jié)合,可以重復(fù),但是無順。使用List模擬Bag。設(shè)置類似Set,它也有專用標(biāo)簽
總 結(jié)
在沒有特殊要求下,***使用Set集合,因為Set集合沒有特殊信息需要"一方"自己維護,可以完全交給"多方"維護,能夠提高性能,若需要記錄數(shù)據(jù)的順序可以使用List和Array映射,若需要key/value形式存儲數(shù)據(jù),可以使用Map映射。***一點若集合放置的數(shù)據(jù)簡單類型(原生類型、原生類型的包裝類、String、Date之類的)在集合映射配置上稍有不同,
文章題目:Hibernate的集合映射
文章位置:http://fisionsoft.com.cn/article/codhihg.html


咨詢
建站咨詢
