Hibernate内容详解

Posted mqflive81

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate内容详解相关的知识,希望对你有一定的参考价值。

一:引入Hibernatejar

http://t.cn/EioD1xk

 

 

二:配置Hibernate的核心配置文件hibernate.cfg.xml

技术图片
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <!-- hibernate的根标签 -->
    <hibernate-configuration>
        <!-- session工厂 -->
        <session-factory>
            <!-- 配置数据属性 -->
            <!-- 配置数据库驱动 -->
            <property name="connection.driver_class">
                com.mysql.jdbc.Driver
            </property>
            
            <!--配置数据库连接-->
            <property name="connection.url">
                jdbc:mysql://localhost:3306/test06?characterEncoding=UTF-8
            </property>
            
            <!-- 配置数据库用户名 -->
            <property name="connection.username">
                root
            </property>
            
            <!-- 配置数据库密码 -->
            <property name="connection.password">
                root
            </property>
            
            <!-- 配置数据库方言 -->
            <property name="dialect">
                org.hibernate.dialect.MySQLDialect
            </property>
            
            <!-- 配置SQL语句的生成格式 -->
          <property name="show_sql">true</property>
          <property name="format_sql">true</property>
          
          <!-- 配置生成策略update、create、drop -->
         <property name="hbm2ddl.auto">update</property>
         
        <!-- 配置hibernate的映射文件 -->
        <mapping resource="com/baidu/entity/User.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
View Code

 

 

三:创建Hibernate的映射实体类User

 技术图片View Code

 

 

四:创建Hibernate的实体类映射文件User.hbm.xml

 

技术图片
   <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <!-- hibernate的根映射文件 -->
    <hibernate-mapping>
        <!-- 映射的实体类 -->
        <class name="com.baidu.entity.User" table="users">
            <!-- 配置主键生成策略 -->
            <id name="uid">
                <generator class="native"></generator>
            </id>
            
            <!-- 配置实体类中相应的属性字段 -->
            <property name="uname"></property>
            <property name="usex"></property>
            <property name="uaddress"></property>
        </class>
    </hibernate-mapping>
View Code

 

五:Hibernate的测试类TestHibernate

 

技术图片
public class TestHibernate {
    public static void main(String[] args) {
        //加载hibernate的核心配置文件
        Configuration configuration = new Configuration().configure();
        //获取sessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获取session
        Session session = sessionFactory.openSession();
        //关闭连接
        session.close();
    }
}
View Code

 

六:用Hibernate对数据库进行增、删、查、改操作

 

技术图片
public class TestCurd {
    
    /**
     * 增加用户信息
     */    
    @Test
    public void saveUser() {
        try {
            //加载hibernate的核心配置文件
            Configuration configuration = new Configuration().configure();
            //创建SessionFactory
            SessionFactory sessionFactory = configuration.buildSessionFactory();
            //获取session
            Session session = sessionFactory.openSession();
            //开启事务
            Transaction tx = session.beginTransaction();
            
            //实例化User对象
            User user = new User();
            user.setUname("Jack");
            user.setUsex(‘男‘);
            user.setUaddress("北京");
            
            //添加用户信息
            session.save(user);
            tx.commit();
            
            //关闭连接
            session.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("有异常!");
            e.printStackTrace();
        }
    }
    
    /**
     * 查询单个用户信息
     */
    @Test
    public void queryUserByUid() {
        try {
            //加载hibernate的核心配置文件
            Configuration configuration = new Configuration().configure();
            //创建SessionFactory
            SessionFactory sessionFactory = configuration.buildSessionFactory();
            //获取session
            Session session = sessionFactory.openSession();
            //查询用户
            User user = (User) session.get(User.class, 4);
            System.out.println(user+"========================");
            
            //关闭连接
            session.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("有异常!");
            e.printStackTrace();
        }
    }
    
    /**
     * 查询所有用户信息
     */
    @Test
    public void queryAllUser() {
        try {
            //加载hibernate的核心配置文件
            Configuration configuration = new Configuration().configure();
            //创建SessionFactory
            SessionFactory sessionFactory = configuration.buildSessionFactory();
            //获取session
            Session session = sessionFactory.openSession();
            //查询用户(获取query对象)
           Criteria criteria = session.createCriteria(User.class);
            List<User> list = criteria.list();
            
            if (list.size()>0 && null!=list) {
                for (User user : list) {
                    System.out.println(user+"============================");
                }
            }
            
            //关闭连接
            session.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("有异常!");
            e.printStackTrace();
        }
    }
    
    /**
     * 修改用户信息
     */
    @Test
    public void updateUserByUid() {
        //加载hibernate的核心配置文件
        Configuration configuration = new Configuration().configure();
        //创建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获取session
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        
        //获取要修改的用户(先查询要修改的用户)
        User user = (User) session.get(User.class, 4);
        user.setUname("Tom");
        user.setUsex(‘女‘);
        user.setUaddress("郑州");
        
        //提交用户
        session.update(user);
        //提交事务
        tx.commit();
        //关闭session连接
        session.close();
    }
    
    /**
     * 删除用户信息
     */
    @Test
    public void deleteUserByUid() {
        //加载hibernate的核心配置文件
        Configuration configuration = new Configuration().configure();
        //创建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获取session
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        
        //获取要修改的用户(先查询要修改的用户)
        User user = (User) session.get(User.class, 4);
        
        //提交用户
        session.delete(user);
        //提交事务
        tx.commit();
        //关闭session连接
        session.close();
    }
    
    /**
     * 分页功能
     */
    @Test
    public void pageHelper() {
        //加载hibernate的核心配置文件
        Configuration configuration = new Configuration().configure();
        //创建SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获取session
        Session session = sessionFactory.openSession();
        
        //定义hql语句
        String hql = "from User";
        //查询所有数据
        Query query = session.createQuery(hql);
        //执行分页
        query.setFirstResult(0);
        query.setMaxResults(3);
        
        //查询分页列表
        List<User> list = query.list();
        //判断User是否为空
        if (list.size()>0 && null!=list) {
            for (User user : list) {
                System.out.println(user);
            }
        }
    }
    
    
}
View Code

 

 

 

以上是关于Hibernate内容详解的主要内容,如果未能解决你的问题,请参考以下文章

具有运行时 pojos 的带有 Hibernate 的 OSGi 片段包

Hibernate映射文件详解(News***.hbm.xml)二

hibernate中的映射文件xxx.hbm.xml详解总结

Hibernate(或其它ORM)里的inverse用法详解,内容摘自Java web轻量级开发面试教程

Hibernate配置文件详解

Hibernate框架环境搭建(详解)