jpa入门案例--使用jpa对数据库进行添加操作

注意:使用jpa对数据库进行增删改查的优点就是,不需要建表,也不需要写sql语句,前提是得有数据库

一、创建maven工程

二、引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.dzl</groupId>
    <artifactId>jpa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <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>
        <!--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>

</project>

三、创建配置文件

在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="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/dzl"/>
            <!--hibernate属性配置-->
            <!--是否显示sql 语句  在控制台-->
            <property name="hibernate.show_sql" value="true"/>
            <!--是否格式化sql 语句-->
            <property name="hibernate.format_sql" value="true"/>
            <!--是否自动 创建数据库的表-->
            <!--值:update   程序自动创建表 假如有这个表就不在创建-->
            <!--create   程序自动创建表  有  先删  再创建-->
            <!--none   不会创建表-->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

四、创建实体类

package cn.dzl.jpa.entity;

import javax.persistence.*;

@Entity
@Table(name="cst_customer")
public class Customer {
    // 配置主键生成的策略
    @GeneratedValue(strategy = GenerationType.IDENTITY)
//    cust_id
//    cust_name
//    cust_source
//    cust_industry
//    cust_level
//    cust_address
//    cust_phone
    // 配置主键使用的字段
    @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 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{" +
                "custId=" + custId +
                ", custName='" + custName + '\'' +
                ", custSource='" + custSource + '\'' +
                ", custIndustry='" + custIndustry + '\'' +
                ", custLevel='" + custLevel + '\'' +
                ", custAddress='" + custAddress + '\'' +
                ", custPhone='" + custPhone + '\'' +
                '}';
    }
}

 五、编写测试类

package cn.dzl;

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

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

public class JpaTest {
    @Test
    public void firstJpa(){
//        1  创建EntityManagerFactory
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");
//
//        2 使用工厂对象  创建一个EntityManager对象
        EntityManager entityManager = factory.createEntityManager();
//        3 开启事物
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
//        4 EntityManager对象persist方法插入数据库
        Customer customer = new Customer();
        customer.setCustName("9502");
        customer.setCustLevel("黑金vip");
        customer.setCustSource("抖音");
        customer.setCustPhone("6666666");
        customer.setCustAddress("兰德中心");
        entityManager.persist(customer);
//        5 事物提交
        transaction.commit();

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

    }
}

  

posted @ 2019-10-08 16:33  躺床上看天dzl  阅读(504)  评论(0编辑  收藏  举报