欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jpa的学习笔记

程序员文章站 2022-04-22 08:01:23
...

开始学习Jpa规范

第一步 导入jar包

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.0.7.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate.c3p0</artifactId>
    <version>5.0.7.Final</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

第二步 在resources 新建META-INF文件新建persistence.xml

第三步 添加配置

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <!--持久化单元  name:持久化单元名称 自定义
                   transaction-type:事物管理的方式
                          RESOURCE_LOCAL:本地事物管理 场景(表都存在本地数据库中)
                          JTA :分布式事物管理  场景(不同表存于不同数据库中)
    -->
    <persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL">
    <!-- jpa的实现方式 -->
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <!--  数据库信息-->
    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="123456"/>
<!--  配置jpa实现方(hibernate)的配置信息
     显示sql
           参数 true  false
     自动创建数据库表 hibernate.hbm2ddl.auto
           参数   create 程序运行时创建数据库表(如果数据库存在表,先删除在创建)
                  update 程序运行时创建数据库表(如果数据库存在表,则不创建)
                  none   不会创建表
-->
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
    </properties>
</persistence-unit>
</persistence>  

第四步 基于注解编写实体类

 package com.ahead.pojo;

import javax.persistence.*;
import java.util.Date;

@Table(name="custorm")
@Entity
public class Custorm {
    /*
    * @Id 声明主键的配置
    *
    * @GeneratedValue :配置主键生成策略
    *           GenerationType.IDENTITY 自增 mysql (底层数据库必须支持自动增长,对id自增)
    *           GenerationType.SEQUENCE 序列 oracle 底层数据库必须支持序列
    *           GenerationType.TABLE jpa提供的一种机制,通过一张数据表的形式帮助我们来完成主键自增
    *           GenerationType.AUTO 由程序自动帮助我们选择主键生成策略
    * @Column 配置属性和数据库表中字段的映射
    *        name 数据库表中字段的名称
    * */
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name="id")
    private Integer id;

    @Column(name="name")
    private String name;

    @Column(name="address")
    private String address;

    @Column(name="tel")
    private String tel;

    @Column(name="emaiil")
    private String email;

    @Column(name="create_date")
    private Date  createDate;

    @Column(name="update_date")
    private Date  updateDare;
    省略get和setter;

第六步

  1. 加载配置文件,创建工厂(实体管理类工厂)对象
  2. 通过实体管理类工厂获取实体管理器
  3. 获取事物对象
  4. 完成CRUD操作
  5. 提交事务(回滚事务)
  6. 释放资源
 @Test
    public void testSave(){
        // 1 加载配置文件,创建工厂(实体管理类工厂)对象
        // persistenceUnitName:持久化单元名称 --> 对应得是persistence.xml中配置的
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("JPA");
        // 2 通过实体管理类工厂获取实体类管理器
        EntityManager manager = factory.createEntityManager();
        // 3 获取事物对象
        EntityTransaction tx = manager.getTransaction();
        //开启事物
        tx.begin();
        //4 完成增删查改操作
        Custorm custorm=new Custorm();
        custorm.setName("杨超越");
        custorm.setTel("13980002828");
        custorm.setAddress("北京市朝阳区");
        custorm.setEmail("[email protected]");
        custorm.setCreateDate(new Date());
        //4 完成增删查改操作
        //persist()   save操作
        manager.persist(custorm);
        //5 提交事物(回滚事物)
        tx.commit();
        //6 释放资源
        manager.close();
        factory.close();
    }
}                      
相关标签: Spring data Jpa