JPA
CODE男孩
你只是看起来很努力
展开
-
JPA学习笔记(1)——什么是JPA
JDBC什么是JPAJPA与hibernate的关系JPA的供应商JDBCjdbc是一组规范,是接口,由不同的数据库厂商各自提供相应的实现类,打包成jar包,也就是所谓的数据库驱动。而我们的java应用程序,只需要调用jdbc的接口就可以了。而JPA是和jdbc类似的东西什么是JPAJava Persistence API:用于对象持久化的 AP原创 2016-07-12 10:44:53 · 817 阅读 · 0 评论 -
JPA学习笔记(5)——EntityManager相关
PersistenceEntityManagerFactoryEntityManagerfind方法getReference方法persist方法remove方法merge方法情况1传入的对象没有id情况2传入的对象有identityManager的缓存中没有该对象数据库中没有该记录情况3传入的对象有identityManager的缓存没有该对象数据库中有该记录情况4传入的对象有i原创 2016-07-12 16:17:08 · 1177 阅读 · 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 · 3015 阅读 · 0 评论 -
JPA学习笔记(15)——关联查询
left outer joinString 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 · 579 阅读 · 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 · 1313 阅读 · 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 · 2332 阅读 · 0 评论 -
JPA学习笔记(12)——使用二级缓存
一级缓存查询两次id为1的userUser 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 · 648 阅读 · 0 评论 -
JPA学习笔记(11)——映射双向多对多关联关系
多对多关联比如现在有两个实体类:1. Product(商品)2. Category(类别)一个商品可以有多个类别,一个类别也可以有多个商品,这就形成了多对多的关系Productpackage com.jpa.helloworld2;import java.util.List;import javax.persistence.Column;import java原创 2016-07-12 16:23:53 · 604 阅读 · 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 · 743 阅读 · 0 评论 -
JPA学习笔记(9)——映射双向一对多关联关系
双向一对多关联关系前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一)什么是双向?我们来对比一下单向和双向单向/双向User实体类中是否有List ordersOrder实体类中是否有User user单向多对一无有单向一对多有无原创 2016-07-12 16:21:49 · 712 阅读 · 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 · 682 阅读 · 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 · 837 阅读 · 0 评论 -
JPA学习笔记(6)——EntityTransaction
EntityTransactionEntityTransaction 接口用来管理资源层实体管理器的事务操作。通过调用实体管理器的getTransaction方法 获得其实例。begin ()用于启动一个事务,此后的多个数据库操作将作为整体被提交或撤消。若这时事务已启动则会抛出 IllegalStateException 异常。commit ()用于提交当前原创 2016-07-12 16:17:54 · 1472 阅读 · 0 评论 -
JPA学习笔记(4)——使用Table策略来生成主键
在上一篇博客中,提到一个注解@GeneratedValue,用于标注生成主键的策略,其中一种策略就是Table。注意:这种方法不常用,只有遇到特殊业务需求时才会用到。关于注解,请参考JPA学习笔记(3)——JPA注解如何使用Table策略生成主键使用这种策略,需要创建一张表表名:ID_GENERATOR字段名说明原创 2016-07-12 16:16:33 · 771 阅读 · 0 评论 -
JPA学习笔记(2)——创建JPA项目
创建JPA项目1. 新建java工程其实也可以直接新建JPA工程,由于我这边创建JPA工程会有点问题,所以我创建java工程,效果是一样的。两者不同在于,JPA工程会帮我们创建jpa的配置文件,java工程则要我们手动创建如果是直接创建JPA工程,version请选择2.02.创建lib文件夹新建lib文件夹,加入jar包,并且添加到类路径下 3原创 2016-07-12 16:11:43 · 930 阅读 · 0 评论 -
JPA学习笔记(3)——JPA注解
EntityTableIdGeneratedValueBasicColumnTransientTemporal@Entity@Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。@Table当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明原创 2016-07-12 16:15:02 · 666 阅读 · 0 评论 -
@GeneratedValue 与 @GenericGenerator
一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. Java代码 @Tar原创 2016-08-05 12:31:43 · 454 阅读 · 0 评论