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对象里面的方法得到结果 Listlist = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月18日 13时35分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
易语言执行mysql命令_易语言通过“打开”命令操作数据库
2019-04-21
mysql slave 1062_mysql主从同步slave错误1062
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
mysql 翻页 存储过程_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最小化窗体_JAVA窗体最大化最小化控制+托盘
2019-04-21
java 注解 数组默认值_Java注解默认值
2019-04-21