JPA
君君要上天
每天学习一点点,每天提升一点点。
展开
-
JPA学习笔记(1)——什么是JPA
JDBC什么是JPAJPA与hibernate的关系JPA的供应商JDBCjdbc是一组规范,是接口,由不同的数据库厂商各自提供相应的实现类,打包成jar包,也就是所谓的数据库驱动。而我们的java应用程序,只需要调用jdbc的接口就可以了。而JPA是和jdbc类似的东西什么是JPAJava Persistence API:用于对象持久化的 APIJava EE 5.0 平台标准的 ORM 规原创 2015-08-13 12:42:30 · 20927 阅读 · 12 评论 -
JPA学习笔记(10)——映射双向多对多关联关系
多对多关联比如现在有两个实体类:1. Product(商品)2. Category(类别)一个商品可以有多个类别,一个类别也可以有多个商品,这就形成了多对多的关系Productpackage com.jpa.helloworld2;import java.util.List;import javax.persistence.Column;import javax.persistence.Entit原创 2015-08-20 15:50:11 · 4935 阅读 · 1 评论 -
JPA学习笔记(13)——查询缓存
使用hibernate的查询缓存执行以下代码:String jpql = "FROM User u WHERE u.id = ?";Query query = entityManager.createQuery(jpql);query.setParameter(1, 1);User user = (User) query.getSingleResult();query = entityMan原创 2015-08-20 17:14:37 · 4670 阅读 · 0 评论 -
JPA学习笔记(12)——JPQL
Query接口int executeUpdate()用于执行update或delete语句。List getResultList()用于执行select语句并返回结果集实体列表。Object getSingleResult()3用于执行只返回单个结果实体的select语句。Query setFirstResult(int startPosition)用于设置从哪个实体记录开始返回查询结果。Query原创 2015-08-20 17:01:26 · 4080 阅读 · 0 评论 -
JPA学习笔记(14)——关联查询
left outer joinString jpql = "FROM User u WHERE u.id = ?";Query query = entityManager.createQuery(jpql);query.setParameter(1, 1);//第一个参数是占位符的位置,从1开始,第二个参数是要传入的参数User user = (User) query.getSingleRe原创 2015-08-20 17:44:30 · 3406 阅读 · 0 评论 -
JPA学习笔记(8)——映射双向一对多关联关系
双向一对多关联关系前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一)什么是双向?我们来对比一下单向和双向 单向/双向 User实体类中是否有List< Order> orders Order实体类中是否有User user 单向多对一 无 有 单向一对多 有 无 双向一对多(双向多对一) 有 有怎么构建关系User实体类pack原创 2015-08-15 14:19:19 · 4842 阅读 · 4 评论 -
JPA学习笔记(3)——JPA注解
EntityTableIdGeneratedValueBasicColumnTransientTemporal@Entity@Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。@Table当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也原创 2015-08-14 13:00:42 · 3391 阅读 · 1 评论 -
JPA学习笔记(2)——创建JPA项目
创建JPA项目1. 新建java工程其实也可以直接新建JPA工程,由于我这边创建JPA工程会有点问题,所以我创建java工程,效果是一样的。两者不同在于,JPA工程会帮我们创建jpa的配置文件,java工程则要我们手动创建如果是直接创建JPA工程,version请选择2.02.创建lib文件夹新建lib文件夹,加入jar包,并且添加到类路径下 3.新建配置文件在src下创建文件夹META-INF,原创 2015-08-13 14:25:01 · 9484 阅读 · 5 评论 -
JPA学习笔记(5)——EntityManager相关
Persistence在之前的JPA学习笔记(2)——创建JPA项目,有使用到Persistence来创建EntityManagerFactory实例String persistenceUnitName = "jpa"; EntityManagerFactory factory = Persistence.createEntityManagerFactory(persistenceUnitName原创 2015-08-14 18:53:02 · 26656 阅读 · 13 评论 -
JPA学习笔记(8)——映射一对多关联关系
一对多关联关系本文有许多和多对一是一样的,因此不会写得很详细。有看不懂的,可以参考JPA学习笔记(7)——映射多对一关联关系Order实体类package com.jpa.helloworld2;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;i原创 2015-08-15 13:23:35 · 2164 阅读 · 0 评论 -
JPA学习笔记(4)——使用Table策略来生成主键
在上一篇博客中,提到一个注解@GeneratedValue,用于标注生成主键的策略,其中一种策略就是Table。注意:这种方法不常用,只有遇到特殊业务需求时才会用到。关于注解,请参考JPA学习笔记(3)——JPA注解如何使用Table策略生成主键使用这种策略,需要创建一张表表名:ID_GENERATOR 字段名 说明 ID 本条记录的ID PK_NAME 主键名 PK_VA原创 2015-08-14 13:51:39 · 4093 阅读 · 0 评论 -
JPA学习笔记(9)——映射双向一对一关联关系
双向一对一关联关系一个部门有一个经理,一个经理管一个部门Department实体类package com.jpa.helloworld2;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.原创 2015-08-15 15:21:01 · 5285 阅读 · 2 评论 -
JPA学习笔记(7)——映射多对一关联关系
多对一关联关系两个实体类,User和Order,一个User可以有多个Order,一个Order只能有一个User建立关联关系使用@ManyToOne注解映射多对一关联关系User实体类package com.jpa.helloworld;import javax.persistence.Column;import javax.persistence.Entity;import javax.pe原创 2015-08-14 19:58:22 · 10263 阅读 · 3 评论 -
JPA学习笔记(6)——EntityTransaction
EntityTransactionEntityTransaction 接口用来管理资源层实体管理器的事务操作。通过调用实体管理器的getTransaction方法 获得其实例。begin ()用于启动一个事务,此后的多个数据库操作将作为整体被提交或撤消。若这时事务已启动则会抛出 IllegalStateException 异常。commit ()用于提交当前事务。即将事务启动以后的所有数据库更新操作原创 2015-08-14 19:03:08 · 2955 阅读 · 0 评论 -
JPA学习笔记(11)——使用二级缓存
一级缓存查询两次id为1的userUser user1 = entityManager.find(User.class, 1);User user2 = entityManager.find(User.class, 1);结果发现只调用了一次sql查询,因为使用了一级缓存如果查询一次后,关掉entityManager,再查询User user1 = entityManager.find(User.原创 2015-08-20 16:13:34 · 4783 阅读 · 0 评论