搭建JPA项目

本章讲的是简单的搭建SpringDataJPA项目,通过操作对象,然后对应的去操作数据库中的表。

环境搭建过程

1.创建maven工程

2.配置jpa文件

3.创建实体类

4.配置实体类和表,类中属性和表中字段的的映射关系

5.操作增删改查

首先搭建一个mave工程

然后在Resource下面创建一个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:事务的管理方式
            JPA:分布式事务管理
            RESOURCE_LOCAL:本地事务管理
    -->
    <persistence-unit name="jpa1" transaction-type="RESOURCE_LOCAL">
        <!-- jpa的实现方式 -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <!-- 配置属性信息 -->
            <property name="javax.persistence.jdbc.user" value="root"></property>
            <property name="javax.persistence.jdbc.password" value="123456"></property>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql:///springdata"></property>
            <!-- 是否显示sql语句 -->
            <property name="hibernate.show_sql" value="true"></property>
            <!-- 自动创建数据库表
             create 每次都新创建一个表
             update 没表就创建,有表就不创建了
             none   不对数据库表信息进行操作
             -->
            <property name="hibernate.hbm2ddl.auto" value="update"></property>
        </properties>
    </persistence-unit>
</persistence>

​

编写实体类

package com.w.entity;

import javax.persistence.*;

@Entity
@Table(name="cst_customer")
public class Customer {
    //主键
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="cust_id")
    private Long cId;
    //客户名称
    @Column(name="cust_name")
    private String cName;
    //客户来源
    @Column(name="cust_source")
    private String cSource;
    //所属行业
    @Column(name="cust_industry")
    private String cIndustry;
    //等级
    @Column(name="cust_level")
    private String cLevel;
    //地址
    @Column(name="cust_address")
    private String cAddr;
    //电话
    @Column(name="cust_phone")
    private String cPhone;

    public Long getcId() {
        return cId;
    }

    public void setcId(Long cId) {
        this.cId = cId;
    }

    public String getcName() {
        return cName;
    }

    public void setcName(String cName) {
        this.cName = cName;
    }

    public String getcSource() {
        return cSource;
    }

    public void setcSource(String cSource) {
        this.cSource = cSource;
    }

    public String getcIndustry() {
        return cIndustry;
    }

    public void setcIndustry(String cIndustry) {
        this.cIndustry = cIndustry;
    }

    public String getcLevel() {
        return cLevel;
    }

    public void setcLevel(String cLevel) {
        this.cLevel = cLevel;
    }

    public String getcAddr() {
        return cAddr;
    }

    public void setcAddr(String cAddr) {
        this.cAddr = cAddr;
    }

    public String getcPhone() {
        return cPhone;
    }

    public void setcPhone(String cPhone) {
        this.cPhone = cPhone;
    }

    @Override
    public String toString() {
        return "Customer{" +
                "cId=" + cId +
                ", cName='" + cName + '\'' +
                ", cSource='" + cSource + '\'' +
                ", cIndustry='" + cIndustry + '\'' +
                ", cLevel='" + cLevel + '\'' +
                ", cAddr='" + cAddr + '\'' +
                ", cPhone='" + cPhone + '\'' +
                '}';
    }
}

创建数据库表

  /*创建客户表*/
    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;

然后写一个测试类

 @Test
    public void testSave(){
        //1.加载配置文件创建工厂(实体类工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa1");
        //2.通过实体类管理工厂获取实体类管理器
        EntityManager entityManager = factory.createEntityManager();
        //3.获取事务对象,开启事务
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        //4.操作数据,增删改查
        Customer customer = new Customer();
        customer.setcName("张三");
        entityManager.persist(customer);
        //5.提交事务
        transaction.commit();
        //6.释放资源
        entityManager.close();
        factory.close();
    }

新增方法是persist

删除方法是remove

更新操作是merge

查询是find/getReference

其中find是立即加载,getReference是延迟加载。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章