Hibernate set type ing and hibernate set ing
Unordered Set elements cannot be repeated.
List ordered elements can be repeated.
Unordered Bag elements can be repeated.
Map key-value pairs
Student:
Package model;
Import java. util. Set;
Public class Student {
Private long id;
Private String name;
Private Set <String> images;
Public long getId (){
Return id;
}
Public void setId (long id ){
This. id = id;
}
Public String getName (){
Return name;
}
Public void setName (String name ){
This. name = name;
}
Public Set <String> getImages (){
Return images;
}
Public void setImages (Set <String> images ){
This. images = images;
}
}
<? 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 = "model">
<Class name = "Student" table = "t_student">
<Id name = "id" column = "stuId">
<Generator class = "native"> </generator>
</Id>
<Property name = "name" column = "stuName"> </property>
<Set name = "images" table = "t_image">
<Key column = "studentId"> </key>
<Element column = "imageName" type = "string"> </element>
</Set>
</Class>
</Hibernate-mapping>
Student2:
Package model;
Import java. util. List;
Public class Student2 {
Private long id;
Private String name;
Private List <String> images;
Public long getId (){
Return id;
}
Public void setId (long id ){
This. id = id;
}
Public String getName (){
Return name;
}
Public void setName (String name ){
This. name = name;
}
Public List <String> getImages (){
Return images;
}
Public void setImages (List <String> images ){
This. images = images;
}
}
<? 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 = "model">
<Class name = "Student2" table = "t_student">
<Id name = "id" column = "stuId">
<Generator class = "native"> </generator>
</Id>
<Property name = "name" column = "stuName"> </property>
<List name = "images" table = "t_image2">
<Key column = "studentId"> </key>
<List-index column = "imageIndex"> </list-index>
<Element column = "imageName" type = "string"> </element>
</List>
</Class>
</Hibernate-mapping>
Student3:
Package model;
Import java. util. List;
Public class Student3 {
Private long id;
Private String name;
Private List <String> images;
Public long getId (){
Return id;
}
Public void setId (long id ){
This. id = id;
}
Public String getName (){
Return name;
}
Public void setName (String name ){
This. name = name;
}
Public List <String> getImages (){
Return images;
}
Public void setImages (List <String> images ){
This. images = images;
}
}
<? 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 = "model">
<Class name = "Student3" table = "t_student">
<Id name = "id" column = "stuId">
<Generator class = "native"> </generator>
</Id>
<Property name = "name" column = "stuName"> </property>
<Idbag name = "images" table = "t_image3">
<Collection-id type = "long" column = "imageId">
<Generator class = "increment"> </generator>
</Collection-id>
<Key column = "studentId"> </key>
<Element column = "imageName" type = "string"> </element>
</Idbag>
</Class>
</Hibernate-mapping>
Student4:
Package model;
Import java. util. Map;
Public class Student4 {
Private long id;
Private String name;
Private Map <String, String> images;
Public long getId (){
Return id;
}
Public void setId (long id ){
This. id = id;
}
Public String getName (){
Return name;
}
Public void setName (String name ){
This. name = name;
}
Public Map <String, String> getImages (){
Return images;
}
Public void setImages (Map <String, String> images ){
This. images = images;
}
}
<? 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 = "model">
<Class name = "Student4" table = "t_student">
<Id name = "id" column = "stuId">
<Generator class = "native"> </generator>
</Id>
<Property name = "name" column = "stuName"> </property>
<Map name = "images" table = "t_image4">
<Key column = "studentId"> </key>
<Map-key type = "string" column = "imageKey"> </map-key>
<Element column = "imageName" type = "string"> </element>
</Map>
</Class>
</Hibernate-mapping>
StudentTest:
Package service;
Import java. util. ArrayList;
Import java. util. HashMap;
Import java. util. HashSet;
Import java. util. Iterator;
Import java. util. List;
Import java. util. Map;
Import java. util. Set;
Import org. hibernate. Session;
Import org. hibernate. SessionFactory;
Import org. junit. After;
Import org. junit. Before;
Import org. junit. Test;
Import util. HibernateUtil;
Import model. Student;
Import model. Student2;
Import model. Student3;
Import model. Student4;
Public class StudentTest {
SessionFactory sessionfactory = HibernateUtil. getSessionFactory (); // get the Session Factory
Private Session session;
@ Before
Public void setUp () throws Exception {
Session = sessionfactory. openSession (); // generate a new session
Session. beginTransaction (); // start the transaction
}
@ After
Public void tearDown () throws Exception {
Session. getTransaction (). commit (); // submit the transaction
Session. close (); // close the session
}
@ Test
Public void testSetSave (){
Set <String> imageSet = new HashSet <String> ();
ImageSet. add ("image1.png ");
ImageSet. add ("image2.png ");
ImageSet. add ("image3.png ");
ImageSet. add ("image4.png ");
Student s1 = new Student ();
S1.setImages (imageSet );
Session. save (s1 );
}
@ Test
Public void testSetFetch (){
Student student = (Student) session. get (Student. class, Long. valueOf (1 ));
Iterator it = student. getImages (). iterator ();
While (it. hasNext ()){
System. out. println (it. next ());
}
}
@ Test
Public void testListSave (){
List <String> imageList = new ArrayList <String> ();
ImageList. add ("image1.png ");
ImageList. add ("image2.png ");
ImageList. add ("image3.png ");
ImageList. add ("image4.png ");
Student2 s2 = new Student2 ();
S2.setImages (imageList );
Session. save (s2 );
}
@ Test
Public void testListFetch (){
Student2 student2 = (Student2) session. get (Student2.class, Long. valueOf (2 ));
Iterator it = student2.getImages (). iterator ();
While (it. hasNext ()){
System. out. println (it. next ());
}
}
@ Test
Public void testBagSave (){
List <String> imageList = new ArrayList <String> ();
ImageList. add ("image1.png ");
ImageList. add ("image2.png ");
ImageList. add ("image3.png ");
ImageList. add ("image4.png ");
Student3 s3 = new Student3 ();
S3.setImages (imageList );
Session. save (s3 );
}
@ Test
Public void testBagFetch (){
Student3 student3 = (Student3) session. get (Student3.class, Long. valueOf (3 ));
Iterator it = student3.getImages (). iterator ();
While (it. hasNext ()){
System. out. println (it. next ());
}
}
@ Test
Public void testMapSave (){
Map <String, String> imageMap = new HashMap <String, String> ();
ImageMap. put ("i1", "image1.png ");
ImageMap. put ("i2", "image2.png ");
ImageMap. put ("i3", "image3.png ");
ImageMap. put ("i4", "image4.png ");
Student4 s4 = new Student4 ();
S4.setImages (imageMap );
Session. save (s4 );
}
@ Test
Public void testMapFetch (){
Student4 student4 = (Student4) session. get (Student4.class, Long. valueOf (4 ));
Map <String, String> imageMap = student4.getImages ();
Set keys = imageMap. keySet ();
Iterator it = keys. iterator ();
While (it. hasNext ()){
String key = (String) it. next ();
System. out. println (key + ":" + imageMap. get (key ));
}
}
}