Jpa-Node

1.Jpa需要的依赖-pom文件 



    <dependencies>

        <!--  hibernate 依赖 -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.1.Final</version>
        </dependency>

        <!-- mysql 驱动 -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

    </dependencies>

2.重要的 persistence.xml  目录绝对

 

 <class>标签自加

<persistence-unit name=""> name可以自己决定

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="NewPersistenceUnit">
        <!--
                配置使用什么ORM 产品作为JPA 的实现
                1.实际上配置的是 javax.persistence.spi.PersistenceProvider 接口的实现类
                2.若JPA项目中只有一个JPA的实现产品,则也可以不配置该节点。
                -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>com.example.jpa_demo.pojo.HolleWorldJpa</class>
        <class>com.example.jpa_demo.pojo.TestPojo</class>
        <!-- 添加持久化类-->

        <properties>
            <!-- 连接数据库的基本信息 -->
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/Jpa?useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="root"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <!-- 配置JPA 实现产品的基本属性,配置hibernate 的基本属性 -->
            <!-- 自动显示SQL -->
            <property name="hibernate.show_sql" value="true"/>
            <!-- 格式化sql -->
            <property name="hibernate.format_sql" value="true"/>
            <!--生成数据表的策略-->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <!-- 使用 MySQL8Dialect -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
        </properties>

    </persistence-unit>

</persistence>

 3.创建Jpa持久化pojo类实例

//关联数据表
@Table(name = "JPA_HelloWorld")
//持久化类
@Entity
public class HolleWorldJpa {
    private Integer id;
    private String lastName;
    private int age;
    private String email;

//    2.映射主键及数据列(在get方法上)

    //    数据列的列名( 如果相同可不写 )
//    @Column(name = "ID")
//    生成主键的方式
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    public Integer getId(){
        return id;
    }

    public void setId(Integer id){
        this.id = id;
    }

    @Column(name = "Last_Name")
    public String getLastName(){
        return lastName;
    }

    public void setLastName(String lastName){
        this.lastName = lastName;
    }

    //映射单向n-1关系
//    @JoinColumn(name = "courser_id")
//    @ManyToOne
    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    public String getEmail(){
        return email;
    }

    public void setEmail(String email){
        this.email = email;
    }
}

 4.jpa基本流程

 单独实例

package com.example.jpa_demo;

import com.example.jpa_demo.pojo.HolleWorldJpa;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

/**
 * @author Mr.p
 * @date 2021/8/11 - 10:54
 */
public class Main {

    public static void main(String[] args){

//        1.创建 EntityManagerFactory
        String persistenceUnitName = "NewPersistenceUnit";
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);

//        2.创建 EntityManager
        EntityManager entityManager = entityManagerFactory.createEntityManager();

//        3.开启事务
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();

//        4.进行持久化操作
        HolleWorldJpa holleWorldJpa = new HolleWorldJpa();
        holleWorldJpa.setAge(14);
        holleWorldJpa.setEmail("pellily@qq.com");
        holleWorldJpa.setLastName("pellily");

        entityManager.persist(holleWorldJpa);

//        5.提交事务
        transaction.commit();

//        6. 关闭 EntityManager
        entityManager.close();

//        7. 关闭 EntityManagerFactory
        entityManagerFactory.close();
    }
}

5.Jpa-API

 merge 复制游离对象(new出并赋值但是未录入的对象)到新的对象并且持久化(录入数据库)

6.映射关联 

       1.单向多对一 @ManyToOne

                基础的写法注解

    @ManyToOne
    @JoinColumn(name = "HOLLEWORLD_id")
    //多对一映射
    public HolleWorldJpa getHolleWorldJpa() {
        return holleWorldJpa;
    }

    public void setHolleWorldJpa(HolleWorldJpa holleWorldJpa) {
        this.holleWorldJpa = holleWorldJpa;
    }

模拟保存操作

模拟删除操作(有外键,不能随便删除)

 

        2.双向多对一 @OneToMany

 

        3.双向一对一@OneToOne

 

        保存操作

 

          4.双向多对多@ManyToMany

 

 需要映射中间表表名  table joinColums表示映射当前表 默认懒加载

 7.二级缓存

 

 

 

 

8.JPQL

实例 

 

        查询缓存 

                 

 

         关联查询

                

去掉fetch返回LIst类型 (如果返回多条数据) 

          子查询

                       

           JPQL的函数方法 

                        

                         

         更新操作        

                        

目录

1.Jpa需要的依赖-pom文件 

2.重要的 persistence.xml  目录绝对

 3.创建Jpa持久化pojo类实例

 4.jpa基本流程​

5.Jpa-API

6.映射关联 

       1.单向多对一 @ManyToOne

​模拟保存操作

        2.双向多对一 @OneToMany

        3.双向一对一@OneToOne

          4.双向多对多@ManyToMany

 7.二级缓存

8.JPQL

        查询缓存 

         关联查询

          子查询

           JPQL的函数方法 

         更新操作        

springboot 整合JPA


springboot 整合JPA

Spring Boot 整合 JPA - 云+社区 - 腾讯云 (tencent.com)

目录

1.Jpa需要的依赖-pom文件 

2.重要的 persistence.xml  目录绝对

 3.创建Jpa持久化pojo类实例

 4.jpa基本流程​

5.Jpa-API

6.映射关联 

springboot 整合JPA


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值