• 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!

  • 相关阅读:
    Codeforces 1111D(退背包、排列组合)
    Codeforces 1152D(dp)
    UVaLive6443(线段树)
    UVaLive6435(dp)
    POJ1741(点分治)
    Codeforces 161D(树形dp)
    BZOJ2595(状压dp)
    关于spring java.lang.IllegalArgumentException: Name for argument type [java.lang.String] 的错误
    FingerPrint Fuzzy Vault Matlab实践
    Mybatis的ResultMap的使用
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3584424.html
Copyright © 2020-2023  润新知