HibernateJPA快速搭建

1. 先创建一个普通Maven工程,导入依赖

  <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>5.4.32.Final</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency></dependencies>

2.创建实体类

package com.kuang.pojo;import javax.persistence.*;@Entity//作为 hibernate实体类
@Table(name = "tb_customer")//映射的表名
public class Customer {/*** @Id: 声明主键的配置* @GeneratedValue: 配置主键的生成策略*        strategy :*            1. GenerationType.IDENTITY :自增 mysql*               底层数据库必须支持自动增长 (底层数据库支持的自动增长方式,对id自增)*            2. GenerationType.SEQUENCE : 序列 ,oracle*               底层书库必须支持序列*            3. GenerationType.TABLE : jpa 提供的一种机制, 通过一张数据库表的形式帮助我们完成主键的配置*            4. GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略*   @Column(name = "cust_id") 配置属性和字段的映射关系*       name: 数据库表中字段的名称*/@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "cust_id")private Long custId;//客户的主键@Column(name = "cust_name")private String custName;//客户的名称@Column(name = "cust_address")private String custAddress;public Long getCustId() {return custId;}public void setCustId(Long custId) {this.custId = custId;}public String getCustName() {return custName;}public void setCustName(String custName) {this.custName = custName;}public String getCustAddress() {return custAddress;}public void setCustAddress(String custAddress) {this.custAddress = custAddress;}@Overridepublic String toString() {return "Customer{" +"custId=" + custId +", custName='" + custName + '\'' +", custAddress='" + custAddress + '\'' +'}';}
}

3. 在 resource 文件夹下创建 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">
<hibernate-configuration><session-factory><!--数据源配置,数据库账号密码配自己的--><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/springdata_jpa?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8</property><property name="connection.username">root</property><property name="connection.password">2001</property><!--        设置数据库方言,现在我们用的是mysql所以设置mysql的方言,这样 hibernate 可以根据 mysql 的语法去生成执行语句--><property name="dialect">org.hibernate.dialect.MySQL57InnoDBDialect</property><!--        打印SQL语句,方便排查 默认为false--><property name="show_sql">true</property><!--        格式化SQL语句,方便排查 默认为false--><property name="format_sql">true</property><!--        是否自动生成数据表默认为none 不自动生成update  如果没有表会创建,有会检查更新create  创建--><property name="hbm2ddl.auto">update</property><!--        注册实体关系映射文件  指定哪些pojo 需要进行ORM映射--><mapping class="com.kuang.pojo.Customer"></mapping><!--        <mapping resource="com/kuang/pojo/Customer.hbm.xml"></mapping>--></session-factory></hibernate-configuration>

如果你要找其他的数据库方言  两下Shift

进入这个类 按 ctrl +H

 4.创建测试类 测试增删改查操作

package com.kuang.test;import com.kuang.pojo.Customer;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.Before;
import org.junit.Test;import java.util.List;public class Hibernate {// 当中 sqlSessionFactory     session: 数据库会话  代码和数据库的一个桥梁private SessionFactory sf;@Beforepublic void init(){StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("/hibernate.cfg.xml").build();//2.根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的session工厂sf=new MetadataSources(registry).buildMetadata().buildSessionFactory();}@Testpublic void testInsert(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();Customer customer = new Customer();customer.setCustName("李六");customer.setCustAddress("武汉");session.save(customer);transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}@Testpublic void testSelect(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();Customer customer = session.find(Customer.class, 2L);
//            Customer customer = session.load(Customer.class, 1L);//懒加载,什么时候用到customer这个对象才会去查询System.out.println(customer);transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}@Testpublic void testUpdate(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();Customer customer = new Customer();customer.setCustId(2L);customer.setCustName("大象");customer.setCustAddress("苏州");//这是个覆盖操作session.saveOrUpdate(customer);transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}@Testpublic void testRemove(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();Customer customer = new Customer();customer.setCustId(2L);//这是个覆盖操作session.remove(customer);transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}@Testpublic void testHQL(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();// 可以 :columnName 占位符  已经不支持 ? 占位符了String hql=" FROM Customer where custId=:custid";List<Customer> resultList = session.createQuery(hql, Customer.class).setParameter("custid",3L).getResultList();System.out.println(resultList);transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}@Testpublic void template(){//session 进行持久化操作Session session = null;Transaction transaction =null;try{session = sf.openSession();transaction = session.beginTransaction();transaction.commit();}catch (Exception e){e.printStackTrace();transaction.rollback();}finally {if (session!=null){session.close();}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 匿名内部类使用的外部变量,为什么一定要加 final?

问题描述 Effectively final Java 1.8 新特性&#xff0c;对于一个局部变量或方法参数&#xff0c;如果他的值在初始化后就从未更改&#xff0c;那么该变量就是 effectively final&#xff08;事实 final&#xff09;。 这种情况下&#xff0c;可以不用加 final 关键字修饰。 …

报错:Parsed mapper file: ‘file mapper.xml 导致无法启动

报错 &#xff1a; Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…

K8S学习指南(4)-minikube的使用

文章目录 简介安装 Minikube启动 Minikube 集群基本概念创建和管理资源1. 创建 Pod2. 创建 Deployment3. 创建 Service 监视和调试1. 查看集群状态2. 查看集群信息3. 访问 Kubernetes Dashboard4. 使用 kubectl 命令 清理资源1. 删除 Pod2. 删除 Deployment3. 删除 Service4. 停…

! [remote rejected] master -> master (pre-receive hook declined)

! [remote rejected] master -> master (pre-receive hook declined) 如图&#xff1a; 出错解决方法 首先输入命令 git branch xindefenzhi然后&#xff0c;进入这个新创建的分支 git checkout branch然后重新git push就可以了

爬虫学习-基础库的使用(urllib库)

目录 一、urllib库介绍 二、request模块使用 &#xff08;1&#xff09;urlopen ①data参数 ②timeout参数 &#xff08;2&#xff09;request &#xff08;3&#xff09;高级用法 ①验证 ②代理 ③Cookie 三、处理异常 ①URLError ②HTTPError 四、解析链接 ①urlparse ②…

LeetCode-10. 正则表达式匹配

LeetCode-10. 正则表达式匹配 问题分析算法描述程序代码CGo 问题分析 这道题的难点主要在于*号的匹配&#xff0c;这里记dp[i][j]表示s[1...i]和p[1...j]能否完成匹配&#xff0c;先根据特殊情况归纳总结&#xff1a; *号匹配 0 次&#xff0c;则dp[i][j] dp[i][j-2]*号匹配…

Mybatis源码解析4:获取Session、Mapper

Mybatis源码解析4&#xff1a;获取Session、Mapper 1.项目结构2. 源码分析2.1 获取Session DefaultSqlSessionFactory#openSession2.2 获取Mapper DefaultSqlSession#getMapper 1.项目结构 2. 源码分析 2.1 获取Session DefaultSqlSessionFactory#openSession private SqlSe…

利用人工智能算法解决内存垃圾回收问题

内存垃圾回收是计算机领域中的一个重要问题&#xff0c;可以利用人工智能算法解决此问题。常用的人工智能算法包括遗传算法、模拟退火算法、禁忌搜索算法等。 其中&#xff0c;遗传算法是一种基于自然选择和遗传进化的算法&#xff0c;可以用于优化问题。在内存垃圾回收中&…

Python实战演练之Python实现一个简单的天气查询应用

今天&#xff0c;晓白给大家分享Python实现一个简单的天气查询应用&#xff0c;帮助大家获取实时的天气信息&#xff0c;内容仅供学习交流。 首先&#xff0c;我们需要安装一个名为"requests"的Python库&#xff0c;它可以帮助我们发送HTTP请求并获取响应数据。你可…

Kernel(一):基础

本文主要讨论210的kernel基础相关知识。 内核驱动 驱动是内核中的硬件设备管理模块,工作在内核态,程序故障可能导致内核崩溃,程序漏洞会使内核不安全 根文件系统提供根目录,进程存放在根文件系统中,内核启动最后会装载根文件系统 应用程序不属于内核,…

1828_ChibiOS中的对象FIFO

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 最初的这个理解&#xff0c;当看到后面之后就知道有点偏差了。其实&#xff0c;这个传输就是一个单纯的FIFO而不是两个FIFO之间的什么操作。 2.…

去掉参数中第一个“,”

记录一下&#xff0c;前端传参中&#xff0c;传给我参数是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418” 但是后端&#xff0c;因为我的mybati是in查询&#xff0c;所以因为第一个是“,”。所以会导…

RabbitMQ安装在Linux系统详细教程

安装教程&#xff1a; 1.首先将下载好的文件上传到服务器&#xff0c;拉到opt文件夹中(可以用xftp&#xff09; 2.输入命令&#xff1a; cd /opt 3.安装erlang rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm rpm -ivh&#xff08;复制配置文件的名字&#xff09; 4.在Rab…

sap增强

四代增强 2种显示增强1种隐式增强 隐式增强 光标放在增强点或其中的代码点击修改即可修改代码 显示增强 1.ENHANCEMENT-POINT 在代码修改界面选择空行 光标所在位置 可以创建多个增强实施且激活后都会执行. 2.ENHANCEMENT-SECTION 1,选中程序中空行 2.编辑->创建选项 …

回顾2023 亚马逊云科技 re_Invent,创新AI,一路同行

作为全球云计算龙头企业的亚马逊云科技于2023年11月27日至12月1日在美国拉斯维加斯举办了2023 亚马逊云科技 re:Invent&#xff0c;从2012年开始举办的亚马逊云科技 re:Invent 全球大会,到现如今2023 亚马逊云科技 re:Invent&#xff0c;回顾历届re:Invent大会&#xff0c;亚马…

Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?

首先&#xff0c;我将简单介绍一下Spring框架中的动态代理和循环依赖问题。 动态代理与循环依赖 1. 动态代理 在Spring框架中&#xff0c;动态代理是一种常用的技术&#xff0c;用于实现AOP&#xff08;面向切面编程&#xff09;。动态代理允许Spring在运行时为目标对象创建…

C++『异常』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1.异常基本概念1.1.C语言异常处理方式1.2.C异常处理方式 2.异常的使用2.1.异常…

在线网页生成工具GrapesJS

项目地址 https://github.com/GrapesJS/grapesjshttps://github.com/GrapesJS/grapesjs 项目简述 这是一个基于node.js的在线网页生成项目&#xff0c;对简化开发有很大的帮助。 主要使用的语言如下&#xff1a; 编辑页面如下&#xff1a; 使用也很简洁 具体可以看下项目。…

使用c++编程语言,将字符串中的数字全部替换成字符串:number

给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替换为number。 样例输入&#xff1a;a1b2c3 样例输出&#xff1a;anumberbnumbercnumber 代码如下&#xff1a; #incl…

12. MySQL 锁机制

目录 概述 MylSAM引擎 InnoDB引擎 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;。在数据库中&#xff0c;除传统的计算资源(如CPU、RAM、I/O等&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资如何保证数据…