数据库框架之jpa入门

1、 什么是Jpa

1.1简单说下什么是jpa,jpa是一种数据库的操作规范类似于java中的接口。需要一些类去实现这个接口,才能实现这个功能。那么在数据库中,需要用hibernate框架去实现jpa的规范。当然了,还有别的框架也可以实现jpa。(因为我这个菜鸡就先学了hibernate的)

2、orm框架,在我所学的Hibernate、Mybatis、Jpa这三个数据库的框架中,均用到了orm框架。博客中有一篇专门描述orm框架的。

3、Jpa入门实例—存储用户信息到Mysql中

3.1配置Jpa编译环境

		idea+maven3.6.3+jpa2.0+Mysql5.7
		pom.xml配置文件如下


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.hibernate.version>5.0.7.Final</project.hibernate.version>
    </properties>

    <dependencies>
    <!-- junit -->
   <!-- 添加测试单元 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
	非常重要的地方, 添加hibernate对jpa的支持
    <!-- 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>

3.2创建用户实体类

简单的一个pojo

  1. 在类的开头配置映射关系
    1.@Entity:声明实体类
    2.@Table:配置实体类和表的映射关系
  2. 实体类中映射和数据库表中字段的映射关系
  3. 标明主键
    1.@Id:标明主键
    2.@GeneratedValue:配置主键的生成策略
    3.@Column:配置属性和字段的映射关系
  4. 普通字段
    1.@Column:配置属性和字段的映射关系
   package cn.itcast.domain;
import javax.persistence.*;
/**
 * 客户实体类
 *      1.配置映射关系
 *      2.实体类中映射和表中字段的映射关系
 *      @Entity:声明实体类
 *      @Table:配置实体类和表的映射关系
 *          name:配置数据库表的名称
 */
@Entity
@Table(name="cst_customer")
public class Customer {
    /**
     * @Id:声明主键的配置
     * @GeneratedValue:配置主键的生成策略
     *      GenerationType.IDENTITY:自增
     * @Column:配置属性和字段的映射关系
     *      name:数据库表中字段的名称
     */
    @Id 声明主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="cust_id")
    private Long custId;//客户的主键
    @Column(name="cust_name")
    private String custName;//客户名称
    @Column(name="cust_source")
    private String custSource;//客户来源
    @Column(name="cust_level")
    private String custLevel;//客户级别
    @Column(name="cust_industry")
    private String custIndustry;//客户行业
    @Column(name="cust_phone")
    private String custPhone;//客户联系方式
    @Column(name="cust_address")
    private String custAddress;//客户地址

		省略get&set方法
}

3.3配置Jpa核心配置文件

  1. Jpa的核心配置文件必须放在类目录下的 META-INF文件夹中
  2. Jpa的核心配置文件必须叫 persistence.xml文件
  3. 文件头约束
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
 version="2.0">

4.xml文件内容
配置jpa节点和事务类型
<persistence-unit
配置jpa的实现类型
<provider </provider
配置数据库信息&可选配置:配置jpa实现方的配置信息-
<properties
数据库四个连接信息
还有两个jpa的可选配置
分别是显示sql语言和自动创建数据库
</properties
</persistence-unit

<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!--    jpa实现方式-->
   <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!--    数据库信息-->
<!--    可选配置:配置jpa实现方的配置信息-->
   <properties>
<!--        数据库信息-->
<!--        用户名 javax.persistence.jdbc.user
           密码  javax.persistence.jdbc.password
           驱动  javax.persistence.jdbc.driver
           数据库地址 javax.persistence.jdbc.url
           -->
           
       //数据库用户
       <property name="javax.persistence.jdbc.user" value="root"></property>
      //数据库的密码
       <property name="javax.persistence.jdbc.password" value="admin"></property>
      //数据库驱动
       <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
     //连接数据库
       <property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa?characterEncoding=UTF-8"/>
      

       <!--    配置jpa实现方的配置信息-->
<!--        显示sql:false true
           自动创建数据库表:hibernate.hbm2ddl.auto
                       create  程序运行时创建数据库表,如果有先删除再创建
                       update  程序运行时 创建表(如果有表不会创建表)
                       none  :不会创建表

-->
       <property name="hibernate.show_sql" value="true"></property>
       <property name="hibernate.hbm2ddl.auto" value="update"></property>
   </properties>

</persistence-unit>
</persistence>

4、实现保存操作

4.1jpa操作流程

  1. 加载配置文件,创建工厂
  2. 通过实体管理类工厂获取实体管理器
  3. 获取事务对象,开启事务
  4. 完成增删改查的操作
  5. 提交事务(回滚事务)
  6. 释放资源

测试代码

  @Test
   public void testSave(){
       //1.加载配置文件创建工厂(实体管理器工厂)对象
       EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
       //2.通过实体管理类工厂获取实体管理器
       final EntityManager em = factory.createEntityManager();
       //3.获取事务对象,开启事务
       final EntityTransaction tx = em.getTransaction();
       tx.begin();//开启事务
       //4.完成增删改成
       Customer customer=new Customer();
       customer.setCustName("奥利给");
       customer.setCustIndustry("煎饼果子");
       customer.setCustAddress("北京");
       //保存
       em.persist(customer);//完成保存操作
//        5.提交事务
       tx.commit();
       //6.释放资源
       em.close();
       factory.close();
   }

基本就是这样啦~~~有新的再继续更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值