Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jpa实现增删改查_hibernate入门案例

jpa实现增删改查_hibernate入门案例

作者头像
全栈程序员站长
发布于 2022-11-01 07:10:52
发布于 2022-11-01 07:10:52
2K00
代码可运行
举报
运行总次数:0
代码可运行

目录

一、ORM思想

二、JPA规范

三、搭建JPA的基础环境

1.创建数据库表

2.创建Maven工程导入坐标

3.创建JPA的核心配置文件

4.编写实体类,配置映射关系

四、入门案例–增删改查

1.jpa的操作步骤

2.基本操作的详细介绍

五、代码实战

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。


一、ORM思想

ORM(Object Relational Mapping),对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。将实体类与数据库表做队形,实体类中的属性与数据库中的字段做对应。这样就不用直接操作数据库,写SQL语句了,直接使用面向对象的技术,对象名.方法(),就可以实现对数据的增删改查等。


二、JPA规范

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

JPA (Java Persistence API) Java持久化API。是一套Java官方制定的ORM 方案。

JPA是一种规范,一种标准,具体的操作交给第三方框架去实现,比如说Hibernate,OpenJPA等。

Sun引入新的JPA ORM规范出于两个原因:

其一,简化现有Java EE和Java SE应用开发工作; 其二,Sun希望整合ORM技术,实现天下归一。


三、搭建JPA的基础环境

1.创建数据库表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  CREATE TABLE cst_customer (
      cust_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
      cust_name varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
      cust_source varchar(32) DEFAULT NULL COMMENT '客户信息来源',
      cust_industry varchar(32) DEFAULT NULL COMMENT '客户所属行业',
      cust_level varchar(32) DEFAULT NULL COMMENT '客户级别',
      cust_address varchar(128) DEFAULT NULL COMMENT '客户联系地址',
      cust_phone varchar(64) DEFAULT NULL COMMENT '客户联系电话',
      PRIMARY KEY (`cust_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.创建Maven工程导入坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.hibernate.version>5.0.7.Final</project.hibernate.version>
    </properties>

    <dependencies>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- hibernate对jpa的支持包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${project.hibernate.version}</version>
        </dependency>

        <!-- c3p0 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>${project.hibernate.version}</version>
        </dependency>

        <!-- log日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- Mysql and MariaDB -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>

3.创建JPA的核心配置文件

位置:配置到类路径下的一个叫做 META-INF 的文件夹下

命名:persistence.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <!--需要配置persistence-unit节点
        持久化单元:
        name:持久化单元名称
        transaction-type:事务管理方式
            JTA: 分布式事务管理
            RESOURCE_LOCAL: 本地事务管理
    -->
    <persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
        <!--jpa的实现方式-->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <!--数据库信息-->
        <!--可选配置:配置jpa实现方的配置信息-->
        <properties>
            <!--数据库信息-->
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>

            <!--可选配置:配置jpa实现方的配置信息
                显示SQLfalse,true

                自动创建数据库表:hibernate.hbm2ddl.auto
                        create:程序运行时创建数据库表,如果有表,先删除表再创建表
                        update:程序运行时创建数据库表,如果有表,不会创建表
                        none:不会创建表
            -->
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>

        </properties>

    </persistence-unit>

</persistence>

4.编写实体类,配置映射关系

实体与表的映射和实体类属性与表字段的映射

配置映射关系 1.实体类和表的映射关系 @Entity 声明是实体类 @Table(name = "cst_customer") 实体类与表的映射关系,name配置表的名称 2.实体类中属性和表字段的映射关系 @Column(name = "cust_id") @GeneratedValue:配置主键的生成策略 strategy GenerationType.IDENTITY :自增,mysql * 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增) GenerationType.SEQUENCE : 序列,oracle * 底层数据库必须支持序列 GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增 * GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* @Author: Promsing(张有博)
* @Date: 2021/10/13 - 17:29
* @Description: 客户的实体类
* @version: 1.0
*/
@Entity
@Table(name = "cst_customer")
public class Customer {
/**
* @Id:声明主键的配置
* @GeneratedValue:配置主键的生成策略
*      strategy
*          GenerationType.IDENTITY :自增,mysql
*                 * 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增)
*          GenerationType.SEQUENCE : 序列,oracle
*                  * 底层数据库必须支持序列
*          GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增
*          GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略
* @Column:配置属性和字段的映射关系
*      name:数据库表中字段的名称
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cust_id")
private Long id;//主键
@Column(name="cust_name")
private String custName;
@Column(name="cust_source")
private String custSource;
@Column(name = "cust_industry")
private String custIndustry;//所属行业
@Column(name="cust_level")
private String custLevel;
@Column(name = "cust_address")
private String custAddress;
@Column(name = "cost_phone")
private String custPhone;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustSource() {
return custSource;
}
public void setCustSource(String custSource) {
this.custSource = custSource;
}
public String getCustIndustry() {
return custIndustry;
}
public void setCustIndustry(String custIndustry) {
this.custIndustry = custIndustry;
}
public String getCustLevel() {
return custLevel;
}
public void setCustLevel(String custLevel) {
this.custLevel = custLevel;
}
public String getCustAddress() {
return custAddress;
}
public void setCustAddress(String custAddress) {
this.custAddress = custAddress;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", custName='" + custName + '\'' +
", custSource='" + custSource + '\'' +
", custIndustry='" + custIndustry + '\'' +
", custLevel='" + custLevel + '\'' +
", custAddress='" + custAddress + '\'' +
", custPhone='" + custPhone + '\'' +
'}';
}
}

四、入门案例–增删改查

1.jpa的操作步骤

1.加载配置文件创建工厂(实体管理类工厂)对象 2.通过实体管理类工厂获取实体管理类 3.获取事务对象,开启事务 4.完成增删改查 5.提交事务(回滚事务) 6.释放资源

2.基本操作的详细介绍

1.加载配置文件创建实体管理器工厂

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");    

根据持久化单元名称创建实体管理器工厂,持久化单元名称就是配置文件中 persistence-unit的name属性

2.根据实体管理器工厂,创建实体管理器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();

EntityManager内部维护的很多的内容 内部维护了数据库信息, 维护了缓存信息 维护了所有的实体管理器对象

EntityManagerFactory是一个线程安全的对象

3.创建事务对象,开启事务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//3.获取事务对象
EntityTransaction tx = em.getTransaction();

Transaction 对象 : 事务 begin:开启事务 commit:提交事务 rollback:回滚

4.增删改查操作

presist : 保存 merge : 更新 remove : 删除 find/getRefrence : 根据id查询

5.提交事务或者回滚事务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tx.commit();
tx.rollback();

6.释放资源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//先申请的后释放
//先释放实体管理器--EntityManager
//后释放实体管理器工厂--EntityManagerFactory

五、代码实战

使用JPA封装好的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* @Author: Promsing(张有博)
* @Date: 2021/10/16 - 8:41
* @Description: jpa的测试类,完成增删改查操作
* @version: 1.0
*/
public class JpaTest {
/**
* 保存操作
*   persist(Object)
*
*/
@Test
public void testSave(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
Customer customer=new Customer();
customer.setCustName("小小张自由");
customer.setCustAddress("廊坊");
customer.setCustIndustry("教育");
customer.setCustLevel("高级");
customer.setCustPhone("1502800");
customer.setCustSource("邯郸");
//5.保存,提交事务
em.persist(customer);
tx.commit();
//7.释放资源
em.close();
myJpa.close();
}
/**
* 根据id查询
*   find(需要封装实体类的字节码文件,主键值)
*     立即加载,获取实体对象,立即执行SQL语句,查询数据库
*/
@Test
public void testFind(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
/**
* find(需要封装实体类的字节码文件,主键值)
* 立即加载,获取实体对象,立即执行SQL语句,查询数据库
*/
Customer customer = em.find(Customer.class, 2L);
System.out.println(customer);
//5.保存,提交事务
tx.commit();
//7.释放资源
em.close();
myJpa.close();
}
/**
* 根据id查询
*  getReference(需要封装实体类的字节码文件,主键值)
*   延迟加载(懒加载),获取动态代理对象,延迟执行SQL语句,
*   当使用到代理对象时,查询数据库
*/
@Test
public void testReference(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
/**
* getReference(需要封装实体类的字节码文件,主键值)
* 延迟加载,获取动态代理对象,延迟执行SQL语句,
* 当使用到代理对象时,查询数据库
*/
Customer customer = em.getReference(Customer.class, 2L);
System.out.println(customer);
//5.保存,提交事务
tx.commit();
//7.释放资源
em.close();
myJpa.close();
}
/**
* 删除客户的案例
*  remove(Object)
*/
@Test
public void testRemove(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
//根据id先查询用户
Customer customer = em.find(Customer.class, 2L);
//调用remove方法,完成删除操作
em.remove(customer);
//5.保存,提交事务
tx.commit();
//7.释放资源
em.close();
myJpa.close();
}
/**
* 更新客户的案例
*   merge(Object)
*/
@Test
public void testUpdate(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
EntityManager em = myJpa.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
//根据id先查询用户
Customer customer = em.find(Customer.class, 1L);
//调用remove方法,完成删除操作
customer.setCustIndustry("架构师");
em.merge(customer);
//5.保存,提交事务
tx.commit();
//7.释放资源
em.close();
myJpa.close();
}
}

使用JPQL查询

JPQL(Java持久性查询语言)是一种面向对象的查询语言,用于对持久实体执行数据库操作。 JPQL不使用数据库表,而是使用实体对象模型来操作SQL查询。旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。

其特征与原生SQL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.dynamic.test;
import org.junit.Before;
import org.junit.Test;
import javax.persistence.*;
import java.util.List;
/**
* @Author: Promsing(张有博)
* @Date: 2021/10/17 - 9:48
* @Description: JPQL的测试类
* @version: 1.0
*/
public class JpqlTest {
private EntityManager em;
@Before
public void testBefore(){
//1.加载配置文件创建工厂对象
EntityManagerFactory myJpa = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
em = myJpa.createEntityManager();
}
/**
* 查询全部
*  sql:SELECT * FROM `cst_customer`
*  jqpl:from com.dynamic.domain.Customer 或者from Customer
*/
@Test
public void testFindAll(){
//将第一第二步封装起来,
//在@test执行之前执行Before
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
String jqpl="from com.dynamic.domain.Customer";
Query query = em.createQuery(jqpl);
//发送查询,并封装结果集
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
System.out.println();
}
//5.提交事务
tx.commit();
//7.释放资源
em.close();
//        myJpa.close();
}
/**
* 排序查询,根据id倒叙
*  sql:SELECT * FROM `cst_customer` ORDER BY cust_id desc ;
*  jqpl:from Customer order by custId desc
*/
@Test
public void testOrders(){
//将第一第二步封装起来,
//在@test执行之前执行Before
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
String jqpl="from Customer order by id desc";
Query query = em.createQuery(jqpl);
//发送查询,并封装结果集
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
System.out.println();
}
//5.提交事务
tx.commit();
//7.释放资源
em.close();
//        myJpa.close();
}
/**
* 统计查询,使用count
*  sql:SELECT COUNT(cust_id) FROM `cst_customer`;
*  jqpl:SELECT COUNT(id) FROM Customer
*/
@Test
public void testCount(){
//将第一第二步封装起来,
//在@test执行之前执行Before
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
String jqpl="SELECT COUNT(id) FROM Customer";
Query query = em.createQuery(jqpl);
//发送查询,并封装结果集
Object singleResult = query.getSingleResult();
System.out.println(singleResult);
//5.提交事务
tx.commit();
//7.释放资源
em.close();
//        myJpa.close();
}
/**
* 分页查询
*   SQL语句:SELECT * FROM `cst_customer` LIMIT 0,2
*   jpql语句:使用Query对象
*/
@Test
public void testPaged(){
//将第一第二步封装起来,
//在@test执行之前执行Before
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
String jqpl="from Customer";
Query query = em.createQuery(jqpl);
//起始索引
query.setFirstResult(0);
//每次查询的长度
query.setMaxResults(2);
//发送查询,并封装结果集
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
}
//5.提交事务
tx.commit();
//7.释放资源
em.close();
//        myJpa.close();
}
/**
* 条件查询
*   SQL语句:SELECT * FROM `cst_customer` where cust_name LIKE '%自由%'
*   jpql语句:from Customer where custName like ?
*/
@Test
public void testCondition(){
//将第一第二步封装起来,
//在@test执行之前执行Before
//3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//4.完成增删改查操作
String jqpl="from Customer where custName like ?";
Query query = em.createQuery(jqpl);
//给占位符赋值,占位符从1开始
query.setParameter(1,"%自由%");
//发送查询,并封装结果集
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
}
//5.提交事务
tx.commit();
//7.释放资源
em.close();
//        myJpa.close();
}
}

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179951.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java JPA 解释
JPA (Java Persistence API) 是 Java 平台的一个规范,用于对象关系映射(ORM)和管理关系数据库中的数据。以下是关于 JPA 的详细解释:
编程小白狼
2025/04/21
860
快速学习-使用JPA完成增删改查操作
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。
cwl_java
2020/04/01
8180
高级教程-springData-JPA第一天【悟空教程】
ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过 ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联, 操作对象就可以直接操作数据库数据,就可以说这套程序实现了 ORM 对象关系映射
Java帮帮
2018/08/16
4.4K0
高级教程-springData-JPA第一天【悟空教程】
JPA入门和相关操作
ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射
不愿意做鱼的小鲸鱼
2022/09/26
3.2K0
JPA的基本操作
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。
暴躁的程序猿
2022/03/24
7120
高级框架-springDate-JPA 第二天【悟空教程】
通过annotation(注解)来映射实体类和数据库表的对应关系,基于annotation的主键标识为@Id注解, 其生成规则由@GeneratedValue 设定的.这里的@id 和@GeneratedValue 都是 JPA 的标准用法。 其中:JPA 提供的四种标准用法为 TABLE,SEQUENCE,IDENTITY,AUTO。由于我们使用的是 hibernate 实现,它也支持 hibernate 中定义的生成规则。
Java帮帮
2018/09/29
2.6K0
高级框架-springDate-JPA 第二天【悟空教程】
快速学习-JPA的入门案例
由于JPA是sun公司制定的API规范,所以我们不需要导入额外的JPA相关的jar包,只需要导入JPA的提供商的jar包。我们选择Hibernate作为JPA的提供商,所以需要导入Hibernate的相关jar包。
cwl_java
2020/04/02
5100
快速学习-Spring Data JPA 入门
使用Spring Data JPA,需要整合Spring与Spring Data JPA,并且需要提供JPA的服务提供者hibernate,所以需要导入spring相关坐标,hibernate坐标,数据库驱动坐标等
cwl_java
2020/04/01
4230
SSH框架之Hibernate第四篇
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/09/18
3.6K0
[ SSH框架 ] Hibernate框架学习之四(JPA操作)
一、JPA概述以及它和Hibernate之间的关系 1.1.Hibernate 概述   JPA Java Persistence API,是EJB3规范中负责对象持久化的应用程序编程接口(ORM接口),它定义一系列的注释。这些注释大体可分为:类级别注释、方法级别注释、字段级别注释。给实体类添加适当的注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象的形式从数据库中读取出来。   目前有两种注释方案可以确定对象与表格之间的对应关系:一种是注释实体类的属性字段(字段级
Kevin_Zhang
2018/05/22
6.9K0
(二)JPA 连接工厂、主键生成策略、DDL自动更新
所以此时可以考虑将部分的代码移交给JPA的专属连接管理类,用这个类可以基于ThreadLocal实现EntityManager存储,这样每一次通过该类的方法获取EntityManager的时候如果不关闭,则获取到的是同一个实例。
用户7630333
2023/12/07
3670
(二)JPA 连接工厂、主键生成策略、DDL自动更新
Spring 全家桶之 Spring Data JPA(一)
3.在applicationContext.xml配置文件中注入jdbcTemplate及数据源的配置
RiemannHypothesis
2022/08/19
1.5K0
Spring 全家桶之 Spring Data JPA(一)
Jpa使用详解
在java工程的resources路径下创建一个名为META-INF的文件夹,在此文件夹下创建一个名为persistence.xml的配置文件
说故事的五公子
2020/06/02
3.4K0
Spring Data开发手册|Java持久化API(JPA)需要了解到什么程度呢?
JPA,Java Persistence API是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术
浅羽技术
2020/12/07
1.4K0
Spring Data开发手册|Java持久化API(JPA)需要了解到什么程度呢?
(四)JPA - JQPL 实现增删改查
用户7630333
2023/12/07
5680
(四)JPA - JQPL 实现增删改查
快速学习-JPA的API介绍
Persistence对象主要作用是用于获取EntityManagerFactory对象的 。通过调用该类的createEntityManagerFactory静态方法,根据配置文件中持久化单元名称创建EntityManagerFactory。
cwl_java
2020/04/01
5630
快速学习-JPA的API介绍
对象持久化API之JPA入门教程
注意:JPA是规范,不是ORM框架,是ORM框架的规范,JPA没有实现ORM,具体实现由ORM厂商提供
SmileNicky
2019/01/17
1.1K0
Hibernate学习笔记 JPA简介
Hibernate除了是一个ORM框架之外,同时还实现了Java EE的一项标准JPA。我们在前面已经看到了Hibernate可以在注解方面直接使用JPA。现在我们来看看如何在Hibernate中使用JPA。
乐百川
2022/05/05
5960
一篇 JPA 总结
下面是 JDBC 在 Java 应用和数据库之间的位置,充当着一个中间者,供 Java 应用程序访问所有类别的数据库,建立一个标准
bgZyy
2018/08/01
5.7K0
一篇 JPA  总结
flea-db使用之JPA分库分表实现
flea-frame-db使用之基于EntityManager实现JPA分表的数据库操作【旧】
huazie
2024/10/24
2870
flea-db使用之JPA分库分表实现
相关推荐
Java JPA 解释
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验