首先我们需要知道为什么咱们要创建Hibernate工具类
一些固定而且经常使用的步骤我们期望做成一个工具类,以后再需要重复步骤时咱们仅需要引用此工具类就可以,从而避免了一直创建重复代码。比如加载数据库的驱动等,这里Hibernate中我们每个主程序都需要加载hibernate.cfg.xml文件、创建SessionFactory对象、创建Session对象、关闭session。这些都是固定化的步骤,因此我们将它们写在工具类HibernateUtil中,以后咱们直接引用此文件创建各对象即可,大大减少了代码量,提高了代码复用性。
下面以Hibernate映射Map集合来说Hibernate工具类 一些解释都已经加入代码块的注解中
一:PersonMap.java
package com.mao;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.*;
@Entity
@Table(name="personMap_inf")
public class PersonMap {
@Id
@Column(name="person_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String name;
private String age;
@ElementCollection(targetClass=Float.class)
@CollectionTable(name="score_inf",joinColumns=@JoinColumn(name="person_id",nullable=false))
//映射保存Map key的数据列
@MapKeyColumn(name="subject_name")
//指定Map key的类型为String类型
@MapKeyClass(String.class)
//映射保存 Map value的数据列
@Column(name="mark")
private Map<String,Float>scores=new HashMap<>();
//省略全部属性的set get方法
二:工具类HibernateUtil
package com.mao;
import org.hibernate.*;
import org.hibern