1、在新建的web工程右键“MyEclipse”--“Add Hibernate Capabilitis”
2、配置文件:hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <!-- 指定使用Mysql数据库格式的SQL语句 ,因为各类数据库的sql会有轻微区别 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property> <property name="connection.username">root</property> <property name="connection.password">fclbri</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误 --> <property name="javax.persistence.validation.mode">none</property> <!-- 制定Hibernate启动的时候自动创建表结构 --> <property name="hbm2ddl.auto">create</property> <!-- 要加这一句,否则可能会抛出异常 ,表示为每个进程生成一个Session --> <property name="current_session_context_class">thread</property> <!-- 让控制台打印生成的sql语句 --> <property name="show_sql">true</property> <!-- 这个是必须的,否则报错,制定cat类为hibernate的实体类 --> <mapping class="com.hibernate.bean.Cat" /> </session-factory> </hibernate-configuration>
3、工具类HibernateUtil.java
import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { // 单态模式下的SessionFactory private static final SessionFactory sessionFactory; static { try { sessionFactory = new AnnotationConfiguration().configure( "hibernate.cfg.xml").buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
4、Cat实体类
package com.hibernate.bean; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity //@Entity表示该类能被Hibernate持久化(persist) @Table(name="tb_cat") //制定该Entity对应的数据表,但不需要手动建表 public class Cat { @Id //指定该列为主键 @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(name="name") //制定属性对应的表的列为“name”,这行可以省略 private String name; @Temporal(TemporalType.TIMESTAMP) @Column(name="createDate") private Date createDate; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }
5、CRUD的Dao层代码
package com.hibernate.dao; import java.io.Serializable; import java.util.List; import org.hibernate.Session; import com.hibernate.util.HibernateUtil; public class BaseDao<T> { public void create(T object) { // TODO Auto-generated method stub //开启一个Hibernate会话 Session session = HibernateUtil.getSessionFactory().openSession(); try{ //开启事务 session.beginTransaction(); //将对象保存进数据库 session.persist(object); //提交事务 session.getTransaction().commit(); }catch (Exception e) { // TODO: handle exception //如果有异常抛出就回滚事务 session.getTransaction().rollback(); }finally{ //关闭Hibernate会话 session.close(); } } public void update(T object) { // TODO Auto-generated method stub Session session = HibernateUtil.getSessionFactory().openSession(); try{ session.beginTransaction(); session.update(object);//更新object对应的数据行 session.getTransaction().commit(); }catch (Exception e) { // TODO: handle exception session.getTransaction().rollback(); }finally{ session.close(); } } public void delete(T object) { // TODO Auto-generated method stub Session session = HibernateUtil.getSessionFactory().openSession(); try{ session.beginTransaction(); session.delete(object);//删除object对应的数据行 session.getTransaction().commit(); }catch (Exception e) { // TODO: handle exception session.getTransaction().rollback(); }finally{ session.close(); } } /** * 根据id查找Entity Bean * @param clazz * @param id * @return */ @SuppressWarnings("unchecked") public T find(Class<? extends T> clazz,Serializable id){ // TODO Auto-generated method stub Session session = HibernateUtil.getSessionFactory().openSession(); try{ session.beginTransaction(); return (T)session.get(clazz, id); }finally{ session.getTransaction().commit(); session.close(); } } /** * 查找多个Entity Bean * @param hq1 * @return */ @SuppressWarnings("unchecked") public List<T> list(String hq1){ // TODO Auto-generated method stub Session session = HibernateUtil.getSessionFactory().openSession(); try{ session.beginTransaction(); //查询hq1结果,返回List对象 return session.createQuery(hq1).list(); }finally{ session.getTransaction().commit(); session.close(); } } }
Done!