JPA
CODE男孩
你只是看起来很努力
展开
-
JPA学习笔记(1)——什么是JPA
JDBC什么是JPAJPA与hibernate的关系JPA的供应商 JDBC jdbc是一组规范,是接口,由不同的数据库厂商各自提供相应的实现类,打包成jar包,也就是所谓的数据库驱动。而我们的java应用程序,只需要调用jdbc的接口就可以了。 而JPA是和jdbc类似的东西 什么是JPA Java Persistence API:用于对象持久化的 AP原创 2016-07-12 10:44:53 · 821 阅读 · 0 评论 -
JPA学习笔记(5)——EntityManager相关
PersistenceEntityManagerFactoryEntityManager find方法getReference方法persist方法remove方法merge方法 情况1传入的对象没有id情况2传入的对象有identityManager的缓存中没有该对象数据库中没有该记录情况3传入的对象有identityManager的缓存没有该对象数据库中有该记录情况4传入的对象有i原创 2016-07-12 16:17:08 · 1259 阅读 · 0 评论 -
JPA学习笔记(16)——JPA高级
1.JPA的实体生命周期: JPA的实体有以下4中生命周期状态: (1).New:瞬时对象,尚未有id,还未和Persistence Context建立关联的对象。 (2).Managed:持久化受管对象,有id值,已经和Persistence Context建立了关联的对象。 (3).Datached:游离态离线对象,有id值,但没有和Persistence Context建立关联的对象原创 2016-07-13 08:14:10 · 3045 阅读 · 0 评论 -
JPA学习笔记(15)——关联查询
left outer join String jpql = "FROM User u WHERE u.id = ?"; Query query = entityManager.createQuery(jpql); query.setParameter(1, 1);//第一个参数是占位符的位置,从1开始,第二个参数是要传入的参数 User user = (User) query.getSingl原创 2016-07-12 16:27:32 · 600 阅读 · 0 评论 -
JPA学习笔记(14)——查询缓存
使用hibernate的查询缓存 执行以下代码: String jpql = "FROM User u WHERE u.id = ?"; Query query = entityManager.createQuery(jpql); query.setParameter(1, 1); User user = (User) query.getSingleResult(); query =原创 2016-07-12 16:26:50 · 1323 阅读 · 0 评论 -
JPA学习笔记(13)——JPQL
Query接口 int executeUpdate() 用于执行update或delete语句。 List getResultList() 用于执行select语句并返回结果集实体列表。 Object getSingleResult() 3用于执行只返回单个结果实体的select语句。 Query setFirstResult(int startPosit原创 2016-07-12 16:26:08 · 2349 阅读 · 0 评论 -
JPA学习笔记(12)——使用二级缓存
一级缓存 查询两次id为1的user User user1 = entityManager.find(User.class, 1); User user2 = entityManager.find(User.class, 1);12 结果发现只调用了一次sql查询,因为使用了一级缓存 如果查询一次后,关掉entityManager,再查询 User user1 = e原创 2016-07-12 16:24:50 · 667 阅读 · 0 评论 -
JPA学习笔记(11)——映射双向多对多关联关系
多对多关联 比如现在有两个实体类:1. Product(商品)2. Category(类别) 一个商品可以有多个类别,一个类别也可以有多个商品,这就形成了多对多的关系 Product package com.jpa.helloworld2; import java.util.List; import javax.persistence.Column; import java原创 2016-07-12 16:23:53 · 612 阅读 · 0 评论 -
JPA学习笔记(10)——映射双向一对一关联关系
双向一对一关联关系 一个部门有一个经理,一个经理管一个部门 Department实体类 package com.jpa.helloworld2; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax原创 2016-07-12 16:22:33 · 751 阅读 · 0 评论 -
JPA学习笔记(9)——映射双向一对多关联关系
双向一对多关联关系 前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一) 什么是双向? 我们来对比一下单向和双向 单向/双向 User实体类中是否有List orders Order实体类中是否有User user 单向多对一 无 有 单向一对多 有 无原创 2016-07-12 16:21:49 · 720 阅读 · 0 评论 -
JPA学习笔记(8)——映射一对多关联关系
一对多关联关系 本文有许多和多对一是一样的,因此不会写得很详细。有看不懂的,可以参考JPA学习笔记(7)——映射多对一关联关系 Order实体类 package com.jpa.helloworld2; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence原创 2016-07-12 16:19:41 · 686 阅读 · 0 评论 -
JPA学习笔记(7)——映射多对一关联关系
多对一关联关系 两个实体类,User和Order,一个User可以有多个Order,一个Order只能有一个User 建立关联关系 使用@ManyToOne注解映射多对一关联关系 User实体类 package com.jpa.helloworld; import javax.persistence.Column; import javax.persistence.En原创 2016-07-12 16:18:33 · 844 阅读 · 0 评论 -
JPA学习笔记(6)——EntityTransaction
EntityTransaction EntityTransaction 接口用来管理资源层实体管理器的事务操作。通过调用实体管理器的getTransaction方法 获得其实例。 begin () 用于启动一个事务,此后的多个数据库操作将作为整体被提交或撤消。若这时事务已启动则会抛出 IllegalStateException 异常。 commit () 用于提交当前原创 2016-07-12 16:17:54 · 1494 阅读 · 0 评论 -
JPA学习笔记(4)——使用Table策略来生成主键
在上一篇博客中,提到一个注解@GeneratedValue,用于标注生成主键的策略,其中一种策略就是Table。 注意:这种方法不常用,只有遇到特殊业务需求时才会用到。 关于注解,请参考JPA学习笔记(3)——JPA注解 如何使用Table策略生成主键 使用这种策略,需要创建一张表 表名:ID_GENERATOR 字段名 说明原创 2016-07-12 16:16:33 · 780 阅读 · 0 评论 -
JPA学习笔记(2)——创建JPA项目
创建JPA项目 1. 新建java工程 其实也可以直接新建JPA工程,由于我这边创建JPA工程会有点问题,所以我创建java工程,效果是一样的。两者不同在于,JPA工程会帮我们创建jpa的配置文件,java工程则要我们手动创建 如果是直接创建JPA工程,version请选择2.0 2.创建lib文件夹 新建lib文件夹,加入jar包,并且添加到类路径下 3原创 2016-07-12 16:11:43 · 937 阅读 · 0 评论 -
JPA学习笔记(3)——JPA注解
EntityTableIdGeneratedValueBasicColumnTransientTemporal @Entity @Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。 @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明原创 2016-07-12 16:15:02 · 699 阅读 · 0 评论 -
@GeneratedValue 与 @GenericGenerator
一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. Java代码 @Tar原创 2016-08-05 12:31:43 · 469 阅读 · 0 评论