一:JPA映射
@Entity -->把一个类映射成数据库表 ,默认值就是类名
@Entity(name="xxx") -->把一个类映射成数据库表 ,表名就是xxx
@Table(name="yyy")-->把一个类映射成数据库表 ,表名就是yyy
@Column(length=4,name="userName",nullable=false)-->
length-->表字段的长度是4,
name=-->表字段的列名是userName,
nullabl-->列不允许为空,等于true就是可以为空
@Id @GeneratedValue--> 主键并自动增长
@Temporal(TemporalType.TIMESTAMP)--> 设置时间格式
TIMESTAMP-->2010-10-10 10:10:10
DATE-->2010-10-10
TIME--> 10:10:10
@Enumerated(EnumType.ORDINAL)-->枚举类型
EnumType.ORDINAL -->表是用枚举的索引
EnumType.STRING -->表是用枚举的名字
@Lob-->长文本类型或(byte)字节类型
@Transient-->不映射成数据库的列名
@Basic(fetch=FetchType.LAZY)-->一般读取大的数据时使用
FetchType.LAZY--> 延迟加载,获取时必须在EntityManager打开或session.openSession()时,才可以用,不然会报错
FetchType.EAGER--> 立即加载
二: EntityManager method 讲解
EntityManager.find(class,Object) //相当hibernate get()
EntityManager.getReference(class,Object) //相当hibernate load()
//延迟加载,获取时必须在EntityManager打开或session.openSession()时,才可以用,不然会报LazyInitialException()
JPA四种状态
new-->新建 User user=new User("zhang");
managed-->脱管 EntityManager.getTransation().begin();打开,这时候处于脱管状态; 如果这时用user.setName("san") ;是可以更新到数据库里面的;
free-->游离 EntityManager.clear()后;这时处于游离状态,这时如果要更新要用 EntityManager.merge(Object)方法;
delte-->删除 EntityManager.remove()时;
三: JPQL
1.查询 (:name)位置符查询和(?1)命名参数查询
2.Query query=EntityManager.createQuery("select * from User");
query.getResultList(); //所有
3.Query query=EntityManager.createQuery("select count(*) from User");
query.getSingleResult(); //单个 相当hibernate 的session.createQuery().uniqueResult() 方法;
4.query.execute();query.executeUpdate();
四:一对多的双向关系维护
eg:
Order(订单)OrderItem(订单项)的关系
Order 就是关系被维护端
OrderItem 就是关系维护端,因为这边多,多得一方是关系维护端
Order set<OrderItem> set=new HashSet<OrderItem>();
OrderItem Order order;
Order(订单) @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="order")
//因为OrderItem是关系维护端, Order 就是关系被维护端 ,mappedBy指向那边,那边就是关系被维护端,
//Order需要OrderItem中的order来维护两边的关系,因为 Order中的每一项都是OrderItem,
//OrderItem 表示主键
//Order 中的orderItemId引用了OrderItem 的id
//mappedBy="order"相当与hibernate inverse=true
cascade -->级联
CascadeType.MERGE, -->当对象处于游离状态时,调用EntityManager.merge()时才有用;如下全都一样,但是状态不一样
CascadeType.PERSIST,
CascadeType.REFRESH,
CascadeType.REMOVE ,
CascadeType.ALL 时,表是所有状态
mappedBy 表示谁是关系的被维护端,
oneToMany //To后面的单词是many表示延迟加载,反之是 FetchType.EAGER--> 立即加载
fetch=FetchType.LAZY //默认是懒加载模式
optional=true //表示可以为NULL ,反之不可以为NULL
@JoinColumn(name="order_id") //表示外键名称
@JoinTable(name="student_teacher",inverseJoinColumns=@JoinColumn(name="teacher_id"),joinColumns=@JoinColumn(name="student_id"))
//@JoinTable 表示中间表
//name 表示中间表的表名
//inverseJoinColumns=@JoinColumn(name="teacher_id") 表示被维护端在中间表的外键列名
//joinColumns=@JoinColumn(name="student_id") 表示维护端在中间表的外键列名
五: 联合主键
1.必须有一个public无参的构造函数
2.必须实现Serializable
3.必须重写主键类的hasCode()、equals()方法,必须用复合主键的字段来作为判断这个对象是否相等;
@Embeddable 元数据,表示只使有里面的字段属性; 将嵌入式主键类使用@Embeddable标注,表示这个是一个嵌入式类。
六: JPA缺点
1.没有index注解
2.没有缓存
分享到:
相关推荐
Gemini JPA是在OSGi环境下(特别是Eclipse RCP)中使用的Java持久化框架。OSGi是一个模块化服务平台,允许在Java环境中动态地安装、启动、停止和卸载组件,而不会影响其他组件的正常运行。在Java开发中,持久化层...
3. **SpringDataJPA介绍** SpringDataJPA是Spring Data项目的一部分,它提供了对JPA的高级支持,包括查询方法的自动声明、动态查询生成等,使得数据库操作更加简单。 4. **集成步骤** - 添加依赖:在`pom.xml`或`...
#### 一、OpenJPA介绍 **1.1 关于本文档** 本文档旨在提供一个全面且深入的指南,帮助开发人员理解和掌握Java Persistence API(JPA)的核心概念及其在Apache OpenJPA中的实现细节。文档将详细介绍JPA的基本原理、...
JPA介绍** JPA是Java EE规范的一部分,用于处理Java应用程序与关系数据库之间的持久化。它提供了一组API,允许开发人员将Java对象映射到数据库表,从而实现ORM。JPA通过Entity、EntityManager和Persistence Context...
JPA介绍** JPA是Java EE平台中的标准持久化API,它定义了一个用于管理关系数据库的接口,使开发者可以使用面向对象的方式来操作数据库。JPA通过ORM(对象关系映射)技术将Java对象映射到数据库表,简化了数据库操作...
JPA介绍** JPA是Java EE的一部分,提供了一套标准接口来处理对象与数据库之间的映射。它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。JPA通过实现ORM框架(如Hibernate、EclipseLink)来...
二、SpringBoot JPA介绍 SpringBoot是Spring框架的一种简化版,它通过自动配置和起步依赖,使得开发者能快速搭建起一个可运行的Spring应用。JPA(Java Persistence API)是Java EE提供的一种ORM(Object-Relational ...
SpringDataJPA介绍** SpringDataJPA是Spring框架的扩展,它简化了数据库操作,通过提供一种声明式的方式来处理数据访问。开发者不再需要编写大量的JPA或Hibernate查询,而是通过接口定义来完成数据操作,例如增删改...
**JPA介绍** JPA是Java标准API,用于处理对象-关系映射,使得开发人员可以在不编写SQL代码的情况下操作数据库。它通过实体类和注解将Java对象映射到数据库表。Spring Data JPA是Spring对JPA的封装,提供了一种简单...
1. **Introduction**: 介绍了 OpenJPA 2.0 的基本概念和发展背景。 2. **Legal**: 包括了许可证、版权等相关法律声明。 3. **Java Persistence API**: 对 JPA 进行了概述,并解释了为什么选择使用 JPA。 4. **Entity...
2. **JPA介绍** JPA是Java平台上的ORM规范,它的目标是提供统一的API来处理对象关系映射,从而避免直接使用SQL语句。JPA通过注解和元数据配置,将Java对象映射到数据库表,简化了数据库操作。 3. **Spring Data ...
1. **JPA介绍** JPA是Java EE规范的一部分,它为Java开发者提供了一种在Java应用程序中管理和持久化对象的标准方式。通过JPA,我们可以定义对象-关系映射,使得数据库操作变得简单且面向对象。 2. **Hibernate JPA...
1. **JPA介绍** JPA是Java平台上的ORM(对象关系映射)标准,它允许Java开发者用面向对象的方式来操作数据库。JPA通过提供API和注解,使得我们可以在实体类上定义数据模型,然后通过EntityManager和...
**JPA介绍** JPA是Java社区对ORM的一种规范,它的目标是提供一种统一的标准API,以便于开发者可以方便地在不同的ORM实现之间切换。JPA通过定义实体类和映射元数据,将Java对象与数据库表进行关联,从而实现了数据的...
**一、JPA介绍** JPA是Java EE平台中的ORM(Object-Relational Mapping)标准,它提供了接口和API,使得开发者可以使用面向对象的方式来操作数据库,避免了传统的SQL语句编程。JPA通过Entity类定义数据模型,持久化...
### 详细介绍 JPA 开发文档 #### 一、发展中的持久化技术 ##### 1.1 JDBC 在早期的企业级应用程序开发中,JDBC (Java Database Connectivity) 是一种广泛使用的数据库连接技术。JDBC 提供了一种标准的方式来访问...
3. JPA注解的全面介绍,包括如何使用它们来定义实体类、字段属性以及关系映射。 4. Oracle数据库与JPA的集成,包括驱动配置、数据源设置等。 5. 使用JPA进行CRUD(创建、读取、更新、删除)操作的示例。 6. JPQL查询...
本资料主要针对JPA的使用进行详细讲解,包括如何搭建JPA开发环境以及全局事务的介绍。 **一、JPA开发环境的搭建** 1. **集成环境选择**: JPA可以与多种应用服务器和IDE集成,如Tomcat、Jetty、Eclipse、IntelliJ ...
Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗?...朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。