JPA能干什么?我在前面一遍文章步了解JPA》基本描述了。不过你不需要点击回去再看。这里简单的再提一下JPA的功能,就是:(1)实现“对象-关系”映射;(2)对象持久化到数据库;(3)对象查询。

  JPA要怎么用,我们直接入手来跑起一个JPA的demo,我这里是采用Hibernate的JPA实现。

  (1)创建一个普通java工程。

  (2)导入必要的包。

    从Hibernate官方下载一个基本包,我这里下载后得到的是hibernate-release-5.0.4.Final.zip。解压后可以文件结构大概如下:

      

    其中lib文件夹就是我们需要导入到项目中的包。简单的实现,导入required、jpa、jpa-metamodel-generator文件夹下的所有jar包既可。

    另外,不要忘了导入JDBC驱动。我这里用的是mysql的。从MySQL官网下的mysql-connector-java-5.1.37.zip。解压导入就行

  (3)创建配置文件

    JPA有一个硬性要求,配置文件必须是类路径下的META-INF目录下的persistence.xml。在我这里可以看到

    

    文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence
  version="1.0"
  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_1_0.xsd">
  <persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
  <properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    <property name="hibernate.connection.username" value="root" />
    <property name="hibernate.connection.password" value="root" />
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpa" />
    <property name="hibernate.max_fetch_depth" value="3" />
    <property name="hibernate.hbm2ddl.auto" value="update" />
  </properties>
  </persistence-unit>
</persistence>

  如果你的数据库设置和我不一样,自己改一下配置文件。相信一看就懂 ^_^

  (3)代码

  我这里先写两个类。

    

  TestBasic类内容如下:

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

import entity.Person;

public class TestBasic {

  public static void main(String[] args) {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
    EntityManager entityManager = factory.createEntityManager();

    Person person = new Person();
    person.setName("袁");

    entityManager.getTransaction().begin();
    entityManager.persist(person);
    entityManager.getTransaction().commit();

    entityManager.close();
    factory.close();
  }

}

  Person.java如下:

package entity;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Person {

  @Id
  private int id;
  private String name;

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

}

  数据库中只是建好了jpa库,里面没有表。

  运行这段代码,就可以看到数据库中表被建立起来了。表名和类名Person有点类似,是person。并且有数据了。

  

  很明显,可以知道这其实就是对数据库的插入操作。那么怎么查询呢。

  在TestBasic类中改一下代码。

  main方法里这样写:

  

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

Person person = entityManager.find(Person.class, 0);//刚才在数据库里看到,id是0。
System.out.println(person.getName());

entityManager.close();
factory.close();

  运行代码你会看到打印出“袁”。

  那么改操作呢:

  继续改main方法里的代码:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

entityManager.getTransaction().begin();
Person person = entityManager.find(Person.class, 0);//刚才在数据库里看到,id是0。
person.setName("邓");
entityManager.getTransaction().commit();

entityManager.close();
factory.close();

  可以看到数据里的数据变了。

  

  最后一个操作,删除数据。

  main方法中的代码改成如下:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

entityManager.getTransaction().begin();
Person person = entityManager.find(Person.class, 0);//刚才在数据库里看到,id是0。
entityManager.remove(person);
entityManager.getTransaction().commit();

entityManager.close();
factory.close();

  运行这段代码,发现数据库里的person表没数据了。

  JPA的增删改查的演示操作就此完成了。

JPA使用入门的更多相关文章

  1. Spring Data JPA —— 快速入门

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

  2. SpringData JPA快速入门和基本的CRUD操作以及Specifications条件查询

    SpringData JPA概述: SpringData JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作 ...

  3. JPA快速入门(自用)

    该案例为JPA的实体映射案例,将该项目解压导入到myeclipse中即可使用,然后直接使用hibernate即可! 文件地址:files.cnblogs.com/mrwangblog/JPA-Hibe ...

  4. spring boot + jpa + kotlin入门实例

    spring boot +jpa的文章网络上已经有不少,这里主要补充一下用kotlin来做. kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个User的 ...

  5. SpringBoot+JPA+cache入门

    在pom.xml中加入如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  6. Spring Data JPA -1-CRUD入门

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

  7. springData Jpa 快速入门

    前言: 数据持久化的操作,一般都要由我们自己一步步的去编程实现,mybatis通过我们编写xml实现,hibernate也要配置对应的xml然后通过创建session执行crud操作.那么有没有这样一 ...

  8. JPA的入门案例

    1.1    需求介绍 本章节我们是实现的功能是保存一个客户到数据库的客户表中. 1.2    开发包介绍 由于JPA是sun公司制定的API规范,所以我们不需要导入额外的JPA相关的jar包,只需要 ...

  9. JPA的入门CRUD

    主要目的: 操作实体类就相当于操作数据库表 建立两个映射关系: 实体类和表的映射关系 实体类中的属性和表中字段的映射关系 不在关注sql语句 常见的orm框架:Mybatis(ibatis).Hibe ...

随机推荐

  1. 老王讲自制RPC框架.(四.序列化与反序列化)

    #(序列化) 在实际的框架中,真正影响效率的就是数据的传输方式,以及传输的准备,或者说是tcp与http,序列化.当然要想提高整个框架的效率,需要采用一种高效的序列化 框架比如流行的protostuf ...

  2. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    在安装好的MySQL服务器上,配置了环境变量之后,发现用mysql无法登录,报如题的错误,实在没有办法,决定用安全模式对root用户修改密码: 首先关闭正在运行的MySQL; 在一个终端窗口运行命令: ...

  3. VWmare workstation12.5中出现的问题

    安装VWmare Workstation12.5之后,出现只能从主机复制文件到虚拟机,但是虚拟机的文件不能直接拖到主机中进行复制.所以我们需要重新安装VWmare Tools. 在虚拟机的VM-> ...

  4. Bible

    001 Love your neighbor as yourself.         要爱人如己.--<旧·利>19:18      002 Resentment kills a foo ...

  5. No package mysql-server available.

    Centos 7 comes with MariaDB instead of MySQL. MariaDb is a open source equivalent to MySQL and can b ...

  6. 计时器js

    <html>    <head>    <meta http-equiv="Content-Type" content="text/html ...

  7. Sprint1(第四天11.17)

    Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/qu ...

  8. eclipse中将项目发布到tomcat的root目录

    在eclipse中,将项目直接部署在tomcat的root目录中,这样便可以直接ip:port访问项目: 项目右键->属性->web project settings

  9. linux 挂载光盘:mount: you must specify the filesystem type

    尝试挂载光盘镜像时出现mount: you must specify the filesystem type 使用-t auto -t iso9660 或不加参数都搞不定,最后在以下链接找到解决办法: ...

  10. Y Combinator

    常见的例子 阶乘函数: fact = (a) -> if a > 0 then a * fact(a - 1) else 1 问题的提出 如上,在fact函数中调用了fact本身,无法使用 ...