hibernate学习――Set集合配置(一)

2014-11-23 19:41:09 · 作者: · 浏览: 17

Set集合的配置

数据表的创建:

create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );


create table CERTIFICATE ( id INT NOT NULL auto_increment, certificate_name VARCHAR(30) default NULL, employee_id INT default NULL, PRIMARY KEY (id) );


创建对应的实体:

package com.study01;

import java.util.Set;

public class Employee {
	private int id;
	private String firstName;
	private String lastName;
	private int salary;
	private Set certificates;

	public Employee() {
	}

	public Employee(String fname, String lname, int salary) {
		this.firstName = fname;
		this.lastName = lname;
		this.salary = salary;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}

	public Set getCertificates() {
		return certificates;
	}

	public void setCertificates(Set certificates) {
		this.certificates = certificates;
	}
	
}


package com.study01;

public class Certificate {
	private int id;
	private String name;

	public Certificate() {
	}

	public Certificate(String name) {
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean equals(Object obj) {
		if (obj == null)
			return false;
		if (!this.getClass().equals(obj.getClass()))
			return false;
		Certificate obj2 = (Certificate) obj;
		//if ((this.id == obj2.getId()) && (this.name.equals(obj2.getName()))) {
		//	return true;
		//}
		if(this.name.equals(obj2.getName())) return true;
		return false;
	}

	public int hashCode() {
		int tmp = 0;
		tmp = (id + name).hashCode();
		return tmp;
	}
}


注意这里对equals和hashCode方法进行了重写。set集合中元素不重复。是否重复,是通过hashCode和equals方法进行比较的。

hibernate主配置文件的配置如下:

   

  
	
    
    
      org.hibernate.dialect.MySQLDialect 
     
    
      com.
     mysql.jdbc.Driver 
     
     
    
      jdbc:mysql://localhost/test 
     
    
      root 
     
    
      253503125 
     
     
     
     
   

  


映射文件的配置:

  


  
	
    
     This class contains the employee detail.  
     
      
     
     
      
      
     
     
     
     
   
	

  


  


  
	
	
    
     This class contains the certificate records.  
     
      
     
     
   

  


测试:

package com.study01;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class ManageEmployee {
	private static SessionFactory factory;

	public static void main(String[] args) {
		try {
			factory = new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) {
			System.err.println("Failed to create sessionFactory object." + ex);
			throw new ExceptionInInitializerError(ex);
		}
		ManageEmployee ME = new ManageEmployee();
		HashSet set1 = new HashSet();
		set1.add(new Certificate("MCA"));
		s