hibernate 框架的简单使用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- 配置数据库信息 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///test</property>
        <property name="hibernate.connection.username">LF</property>
        <property name="hibernate.connection.password">LF</property>

        <!-- 配置hibernate信息  可选的-->
        <!-- 输出底层sql语句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 输出底层sql语句格式 -->
        <property name="hibernate.format_sql">true</property>
        <!-- hibernate帮创建表,需要配置之后
            update:如果已经有表,更新,如果没有,创建
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!-- 配置数据库方言
            在mysql里面实现分页 关键字limit,只能使用mysql里面
            在Oracle数据库,实现分页rownum
            让hibernate框架识别不同数据库的自己特有的语句
        -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- 把映射文件放在核心配置文件中 必须的 -->
        <mapping resource="cn/zr/hibernate/entity/User.hbm.xml"/>
    </session-factory>

</hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 配置类和表对应
        class标签
        name属性:实体类全路径
        table属性:数据库表名称
     -->
    <class name="cn.zr.hibernate.entity.User" table="t_user">
        <!-- 配置实体类id和表id对应
            name属性:实体类里面id属性名称
            column属性:生成的表字段名称
        -->
        <id name="uid" column="uid">
            <!-- 设置数据库表id增长策略
                native:生成id值就是主键自动增长
             -->
            <generator class="native"></generator>
        </id>
        <!-- 配置其他属性与表字段对应
             name属性:实体类属性名称
             column属性:生成表字段名称
        -->
        <property name="username" column="username"></property>
        <property name="password" column="password"></property>
        <property name="address" column="address"></property>
    </class>

</hibernate-mapping>
package cn.zr.hibernate.entity;
/**
 *
 * @author lf
 *
 * 2017年2月12日
 */
public class User {

    /*hibernate要求实体类有一个属性唯一的*/
    private int uid;
    private String username;
    private String password;
    private String address;
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public User() {
        super();
    }
    public User(int uid, String username, String password, String address) {
        super();
        this.uid = uid;
        this.username = username;
        this.password = password;
        this.address = address;
    }
    @Override
    public String toString() {
        return "User [uid=" + uid + ", username=" + username + ", password=" + password + ", address=" + address + "]";
    }

}
package cn.zr.hibernate.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtils {

    private static Configuration configuration = null;
    private static SessionFactory sessionFactory = null;
    // 静态代码块实现(只初始化一次)
    static{
        /*加载hibernate核心配置文件*/
        // 创建Configuration对象
        configuration = new Configuration();
        // 会自动在src文件目录下找hibernate.cfg.mxl文件
        configuration.configure();

        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        // 创建SessionFactory对象
        // 在过程中,根据映射关系,在配置数据库里面把表创建
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    }

    // 提供方法返回sessionFactory
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}
package cn.zr.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import cn.zr.hibernate.entity.User;
import cn.zr.hibernate.utils.HibernateUtils;

public class HibernateTest {

    public static void main(String[] args) {
        HibernateTest hibernateTest = new HibernateTest();

//        hibernateTest.addUser();

//        User user = hibernateTest.queryUserById(1);
//        System.out.println(user);

//        hibernateTest.updateUserInfomation(1, "dew");

//        hibernateTest.deleteUser(1);

    }

    /**
     * 添加用户
     */
    public void addUser() {
        // 调用工具类得到sessionFactory
        SessionFactory sessionFactory = (SessionFactory) HibernateUtils.getSessionFactory();
        // 使用SessionFactory创建session对象
        Session session = sessionFactory.openSession();
        // 开启事务
        Transaction transaction = session.beginTransaction();

        // 添加功能
        User user = new User();
        user.setUsername("lf");
        user.setPassword("123");
        user.setAddress("China");
        session.save(user);

        // 提交事务
        transaction.commit();
        // 关闭资源
        session.close();
        sessionFactory.close();

    }

    /**
     * 通过id查询用户
     * @param id
     * @return 返回用户
     */
    public User queryUserById(int id) {
        // 调用工具类得到sessionFactory
        SessionFactory sessionFactory = (SessionFactory) HibernateUtils.getSessionFactory();
        // 使用SessionFactory创建session对象
        Session session = sessionFactory.openSession();
        // 开启事务
        Transaction transaction = session.beginTransaction();

        /*
         *  第一参数:实体类的class
         *  第二个参数:id值
         * */
        User user = (User) session.get(User.class, id);

        // 提交事务
        transaction.commit();
        // 关闭资源
        session.close();
        sessionFactory.close();
        return user;
    }

    /**
     * 通过id 来修改用户名
     * @param id
     * @param username
     */
    public void updateUserInfomation(int id,String username) {
        // 调用工具类得到sessionFactory
        SessionFactory sessionFactory = (SessionFactory) HibernateUtils.getSessionFactory();
        // 使用SessionFactory创建session对象
        Session session = sessionFactory.openSession();
        // 开启事务
        Transaction transaction = session.beginTransaction();

        /*
         *  第一参数:实体类的class
         *  第二个参数:id值
         * */
        User user = (User) session.get(User.class, id);
        //设置修改值
        user.setUsername(username);
        // 更新
        session.update(user);

        // 提交事务
        transaction.commit();
        // 关闭资源
        session.close();
        sessionFactory.close();
    }

    /**
     * 通过id删除用户
     */
    public void deleteUser(int id) {
        // 调用工具类得到sessionFactory
        SessionFactory sessionFactory = (SessionFactory) HibernateUtils.getSessionFactory();
        // 使用SessionFactory创建session对象
        Session session = sessionFactory.openSession();
        // 开启事务
        Transaction transaction = session.beginTransaction();

        /*
         * 第一种:先通过id查出用户,后删除
         * */
        User user = (User) session.get(User.class, id);
        session.delete(user);

        /*
         * 第二种
         * */
//        User user = new User();
//        user.setUid(id);
//        session.delete(user);

        // 提交事务
        transaction.commit();
        // 关闭资源
        session.close();
        sessionFactory.close();
    }

}
时间: 2024-08-02 11:03:45

hibernate 框架的简单使用的相关文章

hibernate框架的简单入门

1.什么是框架 框架是一个半成品,框架帮我们实现了一部分的功能. 2.使用框架的最大好处 使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能. 3.什么是hiberbnate框架 (1)hibernate框架应用在javaEE三层结构中的dao层框架 (2)hibernate底层的代码就是jdbc,hibernate就是对jdbc的封装,使用hibernate就不需要写jdbc复杂的代码了,而且可以不写sql语句,就能实现对数据库的基本的,增,删,改,查. (3)hiberna

Hibernate学习之简单应用

前言:博主在学到Spring的时候,要开始做项目了,突然觉得好像有点虚,之前学过的Hibernate框架的简单应用好像又忘记了.所以返回来,做个小笔记. 简单来讲,Hibernate框架是利用对象-关系型数据映射(ORM)实现持久化(将数据存入可持久保存的存储设备中). 怎么用呢?这里有一个小demo,实现的是基于Annotation(注解)实现CRUD(增删改查).可以简单分为三步. ① 创建实体类entity(这里的实体类就是UserInfo吧),实体类在此处的作用就跟JavaBean或PO

Hibernate框架简单应用

Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作.除配置文件,映射文件和持久化类外,Hibernate的核心组件包

hibernate框架简单步骤

Demo.java package com.itheima.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.itheima.domain.Customer; /** * 测试Hibern

用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能(二)

前一篇写的有些多,大家先看前一篇,传送门 具体的资源已将上传到资源了. 附地址:MySQL.zip启动 用Maven整合SpringMVC+Spring+Hibernate 框架 上文我们直接搭建前的准备和资源配置都写好了,下面进入具体代码编写.承接上文的小3 3.我习惯建立接口,这样对整个项目感觉更合理. (1.)建立IBaseService(业务逻辑层,有的习惯写成BaseServiceI)都可以,都是标注接口的,我只是简单的贴下代码 package com.jesus.sshframewo

SpringMVC+Hibernate框架整合,构建一个简单项目

SpringMVC:简单易用,上手快,项目配置部分很少,注重代码开发层面 Hibernate:ORM(对象关系映射,英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping)框架,轻量级的数据库封装 下面直接上项目: 1.创建Dynamic Web Project项目,命名:SpringMVC_Hibernate ? 如图,缺少web.xml文件,如下图示,加入: ? 2.导入SpringMVC相关jar包 下载地址:SpringMVC下载 ? 3.

Hibernate框架(一)——总体介绍

作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何.这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:  这篇博客,我们来总结一下,Hibernate宏观的认识和,

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati