1需求

​ 向客户中插入一条数据

​ 如果使用Jpa框架可以不用先建表 可以使用框架生成表

​ 2 实现步骤

​ a 创建工程 使用maven管理工程

 <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.hibernate.version>5.0.7.Final</project.hibernate.version>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
      </dependency>
      <!--hibernate 对jpa的支持-->
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>${project.hibernate.version}</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-c3p0</artifactId>
          <version>${project.hibernate.version}</version>
      </dependency>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.6</version>
      </dependency>
  </dependencies>

​ b 创键一个配置文件

​ 配置文件的路径必须是: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="myjpa" transaction-type="RESOURCE_LOCAL">
      <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/sprign_data-9501"/>
      <!--配置hibernate的属性-->
          <property name="hibernate.show_sql" value="true"></property>
          <!--sql语句是否格式化-->
          <property name="hibernate.format_sql" value="true"/>
          <!--是否自动创建数据库表
            value 可选值   create update   none
            create 程序自动创建数据库表 如果表存在 先删除后创建
            update 程序自动创建数据库表 如果表存在 不创建
            none   不会创建
          -->
          <property name="hibernate.hbm2ddl.auto" value="create"/>
      </properties>
  </persistence-unit>
</persistence>

​ c: 创键一个Entry类 对应数据库中每个表创键一个实体类

package cn.lijun.jpa.entity;

import javax.persistence.*;

/**
* @author lijun
* @date 2019/8/14 10:38
*/
// 该类是jpa的实体类
@Entity
// 配置实体类和数据库表中映射关系   name   对应的表名

@Table(name="cust_customer")
public class Customer {
  // 配置主键的生成策略     GenerationType.IDENTITY   自增长
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Id
  //配置属性和字段名之间关系
  @Column(name="cust_id")
  private long custId;
  @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="cust_phone")
  private String custPhone;

  public long getCustId() {
      return custId;
  }

  public void setCustId(long custId) {
      this.custId = custId;
  }

  public String getCustNmae() {
      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{" +
              "custId=" + custId +
              ", custName='" + custName + '\'' +
              ", custSource='" + custSource + '\'' +
              ", custIndustry='" + custIndustry + '\'' +
              ", custLevel='" + custLevel + '\'' +
              ", custAddress='" + custAddress + '\'' +
              ", custPhone='" + custPhone + '\'' +
              '}';
  }
}

​ d: 编写测试程序 实现数据的添加

​ 1 创键一个EntityManagerFactory 对象 使用完关闭

​ 2 使用工厂对象EntityManagerFactory 就是一个连接

3 开启事物

​ 4 创键 Customer 对象

​ 5 使用Entitymanager 对象 的persist 方法向数据库添加数据

​ 6 事物提交

​ 7 关闭连接

package cn.lijun.jpa;

import cn.lijun.jpa.entity.Customer;
import org.junit.Test;

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

/**
* @author lijun
* @date 2019/8/14 10:52
*/
public class JpaTest {
  @Test
  public void firstTest(){
//       1 创键一个EntityManagerFactory 对象   使用完关闭
      EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");
//       2 使用工厂对象EntityManagerFactory 就是一个连接
      EntityManager entityManager = factory.createEntityManager();
//       3 开启事物
      EntityTransaction transaction = entityManager.getTransaction();
      transaction.begin();
//       4 创键 Customer 对象
      Customer customer = new Customer();
      customer.setCustName("ruirui");
      customer.setCustLevel("vip");
      customer.setCustSource("网络");
      customer.setCustPhone("123456");
      customer.setCustAddress("懒人中心");
//       5 使用Entitymanager 对象 的persist 方法向数据库添加数据
      entityManager.persist(customer);
//       6 事物提交
      transaction.commit();

//       7 关闭连接
      entityManager.close();
      factory.close();


  }
}

Spring data JPA 快速入门的更多相关文章

  1. Spring Data JPA —— 快速入门

    一.概述 JPA : Java Persistence API, Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring D ...

  2. Spring Data Redis —— 快速入门

    环境要求:Redis 2.6及以上,javase 8.0及以上: 一.Spring Data Redis 介绍 Spring-data-redis是spring的一部分,提供了在srping应用中通过 ...

  3. Spring Data Solr —— 快速入门

    Solr是基于Lucene(全文检索引擎)开发,它是一个独立系统,运行在Tomcat或Jetty(solr6以上集成了jetty,无需再部署到servlet容器上),但其原生中文的分词词功能不行,需要 ...

  4. Spring Data JPA -1-CRUD入门

    1) 引入jar包支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  5. 整合Spring Data JPA与Spring MVC: 分页和排序

    之前我们学习了如何使用Jpa访问关系型数据库.比较完整Spring MVC和JPA教程请见Spring Data JPA实战入门,Spring MVC实战入门. 通过Jpa大大简化了我们对数据库的开发 ...

  6. 整合Spring Data JPA与Spring MVC: 分页和排序pageable

    https://www.tianmaying.com/tutorial/spring-jpa-page-sort Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学 ...

  7. 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询

    Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...

  8. 【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate

    在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa.JPA 和 Hibernate 之前的关系. JPA JPA 是 Java Persistence API ...

  9. Spring Data Jpa 入门学习

    本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...

随机推荐

  1. python 控制终端执行的subprocess.getoutput函数

    devices = subprocess.getoutput('ios-deploy -c') print(devices) 如上代码中,subprocess.getoutput函数首先在终端执行命令 ...

  2. OpenCV常用基本处理函数(3)颜色空间

    颜色空间转换 对图像进行颜色空间转换,比如从 BGR 到灰度图,或者从BGR 到 HSV 等 我们要用到的函数是:cv2.cvtColor(input_image ,flag),其中 flag就是转换 ...

  3. 【leetcode】701. Insert into a Binary Search Tree

    题目如下: Given the root node of a binary search tree (BST) and a value to be inserted into the tree, in ...

  4. vue实现前后台交互

    首先需要前台先安装一个包 cnpm install axios --save 第二还需要解决跨域问题 在settings中添加一条中间件 MIDDLEWARE = [“corsheders.middl ...

  5. hdu 3974 Assign the task (线段树+树的遍历)

    Description There is a company that has N employees(numbered from 1 to N),every employee in the comp ...

  6. tcp和udp得区别

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 UDP 是User Datagram Protocol,即 用户 ...

  7. PHP使用引用变量foreach时,切记其他循环不要使用同一个名字的变量

    foreach ($log['data'] as $k => &$value) { if ($value['token'] != 0) { $value['change_num'] = ...

  8. z-index只能用在定位元素上

    弄了很久才突然想到z-index只能用在被定位的元素上. 定位的时候要注意给父级定位 在ie7里有问题的部分

  9. 高水线 High water mark(HWM)

    所有的Oracle表都有一个容纳数据的上限(很像一个水库历史最高的水位),我们把这个上限称为“High water mark"或HWM.这个HWM是一个标记(专门有一个数据块来记录高水标记等 ...

  10. 转 笔记本无线和有线的MAC地址修改

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueqiang03/article/details/80741734无线网卡的mac地址在出厂时就被 ...