Hibernater入门

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!

原文地址:https://www.cnblogs.com/xingyyy/p/3584424.html