JPA使用入门
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使用入门的更多相关文章
- Spring Data JPA —— 快速入门
一.概述 JPA : Java Persistence API, Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring D ...
- SpringData JPA快速入门和基本的CRUD操作以及Specifications条件查询
SpringData JPA概述: SpringData JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作 ...
- JPA快速入门(自用)
该案例为JPA的实体映射案例,将该项目解压导入到myeclipse中即可使用,然后直接使用hibernate即可! 文件地址:files.cnblogs.com/mrwangblog/JPA-Hibe ...
- spring boot + jpa + kotlin入门实例
spring boot +jpa的文章网络上已经有不少,这里主要补充一下用kotlin来做. kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个User的 ...
- SpringBoot+JPA+cache入门
在pom.xml中加入如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- Spring Data JPA -1-CRUD入门
1) 引入jar包支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- springData Jpa 快速入门
前言: 数据持久化的操作,一般都要由我们自己一步步的去编程实现,mybatis通过我们编写xml实现,hibernate也要配置对应的xml然后通过创建session执行crud操作.那么有没有这样一 ...
- JPA的入门案例
1.1 需求介绍 本章节我们是实现的功能是保存一个客户到数据库的客户表中. 1.2 开发包介绍 由于JPA是sun公司制定的API规范,所以我们不需要导入额外的JPA相关的jar包,只需要 ...
- JPA的入门CRUD
主要目的: 操作实体类就相当于操作数据库表 建立两个映射关系: 实体类和表的映射关系 实体类中的属性和表中字段的映射关系 不在关注sql语句 常见的orm框架:Mybatis(ibatis).Hibe ...
随机推荐
- 浅谈C#Socket
好不容易把socket通信搞懂一点,比较喜欢做笔记,嘿嘿~ 希望共同学习,共同进步! socket通信是C#中非常基础的一个知识点,我这里用到的是基于Tcp协议的socket通信.Tcp会有三次握手连 ...
- Rdseed与SAC的安装
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- SQLPlus 在连接时通常有四种方式
1. sqlplus / as sysdba 操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态.比如我们想要启动数据库就可以用这种方式进入 sqlpl ...
- 周爱民:真正的架构师是没有title的(图灵访谈)
周爱民,现任豌豆荚架构师,国内软件开发界资深软件工程师.从1996年起开始涉足商业软件开发,历任部门经理.区域总经理.高级软件工程师.平台架构师等职,有18年的软件开发与架构.项目管理及团队建设经验, ...
- 20169212《Linux内核原理与分析》第四周作业
Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在 ...
- Scala学习(二)
二.Scala基础 1.变量:三种修饰符 -> ①val 常亮②var 变量③lazy val 惰性变量求值 2.类型 3.代码块 Block {exp1;exp2} 或 { exp1 exp2 ...
- 每天一个percona 工具 --- pt-kill
主要用途:pt-kill是用来kill MySQL连接的一个工具,在MySQL中因为空闲连接较多导致超过最大连接数,或某个有问题的sql导致mysql负载很高时,需要将其KILL掉来保证服务器正常运行 ...
- BZOJ2408 混乱的置换
这道题即THUSC 2015 t3...只不过数据范围$n, m ≤ 10^5$ 可以上网查这个鬼畜的东西"Burrows-Wheeler Transform" 这道题要用到解压缩 ...
- tcpdump 获取http请求url
There are tcpdump filters for HTTP GET & HTTP POST (or for both plus message body): Run man tcpd ...
- 使用AXIS2客户端调用 WEBSERVICE
问题 在调用WEBSERVICE时,可以使用wsdl2java生成java代码,调用接口,这种方法在接口固定的情况下是一种不错的选择,如果需要动态调用接口,那么这样就行不通了. 解决办法 1.直接构建 ...