hibernate 基本使用配置
发布日期:2022-02-25 01:17:44 浏览次数:32 分类:技术文章

本文共 7621 字,大约阅读时间需要 25 分钟。

创建实体类

import lombok.Data;@Datapublic class User {    private int uid;    private String username;    private String password;    private String address;}

实体类和数据库表进行映射

配置hibernate核心配置文件

com.mysql.jdbc.Driver
jdbc:mysql:///hibernate
root
root
true
true
update
org.hibernate.dialect.MySQLDialect
thread

java 测试

@Testpublic void add(){     //加载hibernate核心配置文件     Configuration configure = new Configuration().configure();     /**      * 创建sessionFactory      * 读取hibernate核心配置文件,创建sessionFactory      * 在此过程中,根据映射关系,在配置文件中把表创建      */     SessionFactory sessionFactory = configure.buildSessionFactory();     /**      * 使用sessionFactory创建session      */     Session session = sessionFactory.openSession();     //开启事务     Transaction transaction = session.beginTransaction();     //具体逻辑     User user = new User();     user.setUsername("小王");     user.setPassword("123");     user.setAddress("日本");     session.save(user);     //提交事务     transaction.commit();     //释放资源     session.close();     sessionFactory.close(); }  @Test    public void get(){        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();        //使用sessionFactory创建session        Session session = sessionFactory.openSession();        //开启事务        Transaction tx = session.beginTransaction();        //具体逻辑        //根据id查询        //第一个参数,实体类的class        //第二个参数,id值        User user = (User) session.get(User.class, 1);        System.out.println("user = " + user);        //提交事务        tx.commit();        //释放资源]        session.close();    }    @Test    public void update(){        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();        //使用sessionFactory创建session        Session session = sessionFactory.openSession();        //开启事务        Transaction tx = session.beginTransaction();        //具体逻辑        //修改首先查询,然后修改值        //(1)根据id查询,返回对象        User user = (User) session.get(User.class, 2);        //(2)向返回的对象中设置需要修改的值        user.setUsername("东方不败");        //执行的过程:到user对象中先找到uid,然后根据uid修改值        session.update(user);        //提交事务        tx.commit();        //释放资源]        session.close();    }    @Test    public void delete (){        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();        //使用sessionFactory创建session        Session session = sessionFactory.openSession();        //开启事务        Transaction tx = session.beginTransaction();        //具体逻辑        //第一种,根据id查询对象(建议使用第一种)        User user = (User) session.get(User.class, 2);        session.delete(user);        //第二种        /*User user = new User();        user.setUid(3);        session.delete(user);*/        //提交事务        tx.commit();        //释放资源]        session.close();    }    @Test    public void testAdd(){        //使用sessionFactory创建session        Session session = HibernateUtil.getCurrentSession();        //开启事务        Transaction tx = session.beginTransaction();        //具体逻辑        User user = new User();        user.setUsername("小虎");        user.setPassword("678");        user.setAddress("东北");        session.save(user);        //提交事务        tx.commit();    }

hibernateUtil

package com.an.toolkit;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {    private static final Configuration configure;    private static final SessionFactory sessionFactory;    static {        //加载hibernate核心配置文件        configure = new Configuration().configure();        /**         * 创建sessionFactory         * 读取hibernate核心配置文件,创建sessionFactory         * 在此过程中,根据映射关系,在配置文件中把表创建         */        sessionFactory = configure.buildSessionFactory();    }    //提供方法返回sessionFactory    public static SessionFactory getSessionFactory(){        return sessionFactory;    }    //提供返回与本地线程绑定的session的方法    public static Session getCurrentSession(){        return sessionFactory.getCurrentSession();    }}

主键生成策略,以下两种使用最多

native会帮助我们识别不同数据库使用不同的主键自增策略
使用uuid,数据库表中的id值为字符串,实体类中为String
使用时不需要设置id,由hibernate帮助我们生成uuid

持久态会自动更新数据库

在这里插入图片描述User user = (User) session.get(User.class, 1); user.setUsername("小明");

Query,Criteria,SQLQuery 三种数据查询

import com.an.entity.User;import com.an.toolkit.HibernateUtil;import org.hibernate.*;import org.junit.Test;import java.util.List;/** * @Author: WCY * @Date: 2019/8/27 14:54 */public class HibernateQuery {    //使用query对象    @Test    public void testQuery(){        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try {            sessionFactory = HibernateUtil.getSessionFactory();            session = sessionFactory.openSession();            //开启事务            tx = session.beginTransaction();            //1 创建Query对象            //方法里面写hql            Query query = session.createQuery("from User");            //2 调用query对象里面的方法得到结果            List
list = query.list(); for (User user : list) { System.out.println(user); } //提交事务 tx.commit(); }catch (Exception e){ e.printStackTrace(); tx.rollback(); }finally { session.close(); sessionFactory.close(); } } //使用Criteria对象 @Test public void testCriteria(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtil.getSessionFactory(); session = sessionFactory.openSession(); //开启事务 tx = session.beginTransaction(); //1 创建Criteria对象 //方法里面写hql Criteria criteria = session.createCriteria(User.class); //2 调用query对象里面的方法得到结果 List
list = criteria.list(); for (User user : list) { System.out.println(user); } //提交事务 tx.commit(); }catch (Exception e){ e.printStackTrace(); tx.rollback(); }finally { session.close(); sessionFactory.close(); } } //使用SQLQuery对象 @Test public void testSQLQuery(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtil.getSessionFactory(); session = sessionFactory.openSession(); //开启事务 tx = session.beginTransaction(); //1 创建Criteria对象 //方法里面写hql String sql = "select * from t_user"; SQLQuery sqlQuery = session.createSQLQuery(sql); //sqlQuery.list() 查询出的每一项数据是数组 //sqlQuery.addEntity() 默认将数组种的数据存入User对象中 //返回的list中的每部分是对象形式 sqlQuery.addEntity(User.class); //2 调用query对象里面的方法得到结果 List
list = sqlQuery.list(); for (User user : list) { System.out.println(user); } //提交事务 tx.commit(); }catch (Exception e){ e.printStackTrace(); tx.rollback(); }finally { session.close(); sessionFactory.close(); } }}

转载地址:https://blog.csdn.net/qq_37746647/article/details/100095091 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ssm dropzone文件上传
下一篇:hibernate 级联操作

发表评论

最新留言

很好
[***.229.124.182]2024年03月18日 13时35分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql执行计划中性能最差的是_MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧... 2019-04-21
易语言执行mysql命令_易语言通过“打开”命令操作数据库 2019-04-21
mysql slave 1062_mysql主从同步slave错误1062 2019-04-21
mysql构造器_MySQL行构造器表达式优化(Row Constructor Expression) 2019-04-21
2008日志清理 server sql_SQL Server 2008 清除日志 2019-04-21
mac mysql root 权限_Mac平台重新设置MySQL的root密码 2019-04-21
mysql新增一列_MySQL-ProxySQL中间件 2019-04-21
mysql 30入门_30分钟带你快速入门MySQL教程 2019-04-21
kangle主机怎么配置MySQL_kangle web服务+easypanel主机控制面板快速搭建网站和数据库以及管理空间详细教程... 2019-04-21
mysql 翻页 存储过程_MySQl通用翻页(存储过程) 2019-04-21
2020word替换所有文本_Excel字符函数(5):REPLACE、SUBSTITUTE查找替换函数之区别... 2019-04-21
win10安装ipython_win10环境 ipython app.py 8080 这里为什么是ipython 这步无法启动 2019-04-21
假定在MYSQL_假定在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义如下 - 问答库... 2019-04-21
mysql多字段存储过程_mysql 的存储过程_多字段 2019-04-21
python怎么创建字符串列表_如何在python列表中为每个字符串创建子列表? 2019-04-21
vba ado 执行多条mysql 语句_access 按钮 多条sql语句 VBA 2019-04-21
弹性方法计算连续梁板内力_(梁板结构)混凝土结构设计复习题及答案 2019-04-21
java root权限_android java获得root权限调用linux命令 | 学步园 2019-04-21
java最小化窗体_JAVA窗体最大化最小化控制+托盘 2019-04-21
java 注解 数组默认值_Java注解默认值 2019-04-21