天天看點

Hibernate常見集合映射(Set,List Array,Map,Bag)

Hibernate甯歌鐨勯泦鍚堟槧灏勪富瑕佹湁Set,List,Array,Map,Bag绛夛紝瀹冧滑鐨勭壒鐐瑰涓嬶細

1) Set闆嗗悎鏄疕ibernate涓熀纭€鐨勯泦鍚堢被鍨嬶紝鍏冪礌鏁版嵁涓€鑸嬌鐢ㄥ閿悓涓昏〃鍏寵仈锛孲et闆嗗悎闈炲父閫傜敤浜庨泦鍚堝厓绱犱笉鑳介噸澶嶇殑鎯呭喌銆?

2) Set闆嗗悎鏄棤搴忕殑锛岄泦鍚堝厓绱犲苟涓嶆槸鎸夌収涓€瀹氱殑椤哄簭鎺掑垪鐨勶紝鑰孡ist闆嗗悎鏄湁搴忕殑锛屾瘡涓泦鍚堝厓绱犻渶瑕佹湁涓€涓〃绀洪泦鍚堝簭鍙風殑鏍囪瘑锛岃繖鏍峰彲浠ヤ嬌鐢ㄨ鏍囪瘑鏉ヨ幏寰楄闆嗗悎鍏冪礌銆?

3) 鏁扮粍Array浣跨敤鐨勬槸List鐨勬柟寮忔潵琛ㄧず鐨勩€?

4) Map闆嗗悎鐨勭壒鐐規槸浣跨敤閿€煎锛屽嵆Key-Value缁撴瀯鏉ュ瓨鏀鵑泦鍚堝厓绱狅紝杩欐牱灏遍渶瑕佸搴旂殑闆嗗悎鍏冪礌鏁版嵁搴撹〃涓寘鍚浜嶬ey鐨勫垪銆?

5) Set闆嗗悎鐭蟲棤搴忋€佷笉鑳芥湁閲嶅鍏冪礌鐨勶紝Hibernate鎻愪緵浜嗕竴涓狟ag闆嗗悎锛岀敤鏉ュ鐞嗛噸澶嶅厓绱犵殑鎯呭喌銆傚€煎緱娉ㄦ剰鐨勬槸锛孊ag骞朵笉鏄疛ava API锛岃€屾槸Hibernate鎻愪緵鐨勩€侭ag闆嗗悎鏄犲皠鍜孡ist涓嶅悓锛孡ist鐨勯泦鍚堝厓绱犳槸鏈夊簭鐨勶紝闇€瑕佹湁涓€涓泦鍚堝簭鍙鋒潵鏍囪瘑闆嗗悎鍏冪礌鐨勪綅缃紝List鍏冪礌鍙互閲嶅锛涜€孊ag闆嗗悎鍏冪礌涓嶉渶瑕佸厓绱犲簭鍙鋒爣璇嗭紝鍏冪礌涔熸槸鍙互閲嶅鐨勩€?

棣栧厛寤虹珛鏁版嵁搴撹〃,SQL璇彞濡備笅锛?

Sql浠g爜

1. CREATE TABLE 鈥榤essage鈥?

2. 'id' int(11) NOT NULL,

3. 'setValue' varchar(100) NOT NULL,

4. 'listValue_id' int(11) NOT NULL,

5. 'listValue' varchar(100) NOT NULL,

6. 'arrayValue_id' int(11) NOT NULL,

7. 'arrayValue' varchar(100) NOT NULL,

8. 'mapValue_id' int(11) NOT NULL,

9. 'mapValue' varchar(100) NOT NULL,

10. 'bagValue' varchar(100) NOT NULL

11. )ENGINE = InnoDB DEFAULT CHARSET = gbk

12.

13. CREATE TABLE 'master'(

14. 'id' int(11) NOT NULL auto_increment,

15. 'name' varchar(100) NOT NULL default '',

16. PRIMARY KEY('id')

17. )ENGINE = InnoDB DEFAULT CHARSET = gbk

寤虹珛瑙掕壊鐨勫疄浣撶被,浠g爜濡備笅:

Java浠g爜

1. import java.io.Serializable;

2. import java.util.List;

3. import java.util.Map;

4. import java.util.Set;

5.

6. @SuppressWarnings({ "unchecked", "serial" })

7. public class Master implements Serializable {

8. private Integer id; //涓婚敭ID灞炴€?

9. private String name; //濮撳悕name灞炴€?

10. private Set setValue;

11. private List listValue;

12. private String[] arrayValue;

13. private Map mapValue;

14. private List bagValue;

15.

16. public Integer getId() {

17. return id;

18. }

19. public void setId(Integer id) {

20. this.id = id;

21. }

22. public String getName() {

23. return name;

24. }

25. public void setName(String name) {

26. this.name = name;

27. }

28. public Set getSetValue() {

29. return setValue;

30. }

31. public void setSetValue(Set setValue) {

32. this.setValue = setValue;

33. }

34. public List getListValue() {

35. return listValue;

36. }

37. public void setListValue(List listValue) {

38. this.listValue = listValue;

39. }

40. public String[] getArrayValue() {

41. return arrayValue;

42. }

43. public void setArrayValue(String[] arrayValue) {

44. this.arrayValue = arrayValue;

45. }

46. public Map getMapValue() {

47. return mapValue;

48. }

49. public void setMapValue(Map mapValue) {

50. this.mapValue = mapValue;

51. }

52. public List getBagValue() {

53. return bagValue;

54. }

55. public void setBagValue(List bagValue) {

56. this.bagValue = bagValue;

57. }

58. }

绫籑essage鐨凥ibernate鏄犲皠鏂囦歡Message.hbm.xml濡備笅锛?

Xml浠g爜

1. <?xml version="1.0" encoding="utf-8"?>

2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

4. <!--

5. Mapping file autogenerated by MyEclipse Persistence Tools

6. -->

7. <hibernate-mapping>

8. <class name="com.iprai.hibernate.collectionmapping" table="master" catalog="iprai">

9. <id name="id" type="java.lang.Integer">

10. <column name="id" />

11. <generator class="native"></generator>

12. </id>

13. <property name="name" type="java.lang.String">

14. <column name="name" length="100" not-null="true" />

15. </property>

16. <!--Set绫誨瀷鏄犲皠-->

17. <set name="setValue" table="message"> //瀹氫箟瀵瑰簲鐨勮〃

18. <key column="id" />

19. <element type="java.lang.String">

20. <column name="setValue" />

21. </element>

22. </set>

23.

24. <!--List绫誨瀷鏄犲皠-->

25. <List name="listValue" table="message">

26. <key column="id" />

27. <index column="listValue_id" /> //閰嶇疆涓婚敭

28. <element type="java.lang.String" column="listValue" />

29. </List>

30.

31. <!--Array绫誨瀷鏄犲皠-->

32. <array name="arrayValue" table="message">

33. <key column="id"/>

34. <list-index column="arrayValue_id"/>

35. <element type="java.lang.String" column="arrayValue"/>

36. </array>

37.

38. <!--Map绫誨瀷鏄犲皠-->

39. <map name="mapValue" table="message">

40. <key column="id" />

41. <!--閰嶇疆閿€煎-->

42. <map-key column="mapValue_id" type="java.lang.String" />

43. <element type="java.lang.String" column="mapValue" />

44. </map>

45.

46. <!--Bag绫誨瀷鏄犲皠-->

47. <bag name="bagValue" table="message">

48. <key column="id" /> //瀹氫箟涓婚敭

49. <element type="string" column="bagValue" /> //瀹氫箟鍏冪礌绫誨瀷

50. </bag>

51. </class>

52. </hibernate-mapping>

JUnit娴嬭瘯浠g爜濡備笅锛?

Java浠g爜

1. import java.util.ArrayList;

2. import java.util.HashMap;

3. import java.util.HashSet;

4. import java.util.List;

5. import java.util.Map;

6. import java.util.Set;

7.

8. import org.hibernate.Session;

9.

10. import junit.framework.TestCase;

11.

12. public class MasterTest extends TestCase {

13.

14. public void testSave() {

15. Master master = new Master();

16. master.setName("JavaEye");

17.

18. Set setValue = new HashSet();

19. setValue.add("a");

20. setValue.add("b");

21. master.setSetValue(setValue);

22.

23. List listValue = new ArrayList();

24. listValue.add("c");

25. listValue.add("d");

26. master.setListValue(listValue);

27.

28. String[] arrayValue = new String[]{"e", "f"};

29. master.setArrayValue(arrayValue);

30.

31. Map mapValue = new HashMap();

32. mapValue.put("key_1", "value_1");

33. mapValue.put("key_2", "value_2");

34. master.setMapValue(mapValue);

35.

36. List bagValue = new ArrayList();

37. bagValue.add("h");

38. bagValue.add("i");

39. master.setBagValue(bagValue);

40.

41. Session session = null;

42. try {

43. session = HibernateUtils.getSession();

44. session.beginTransaction();

45. session.save(c);

46. session.getTransaction().commit();

47. }catch(Exception e) {

48. e.printStackTrace();

49. session.getTransaction().rollback();

50. }finally {

51. HibernateUtils.closeSession(session);

52. }

53. }

54. }