一、JPA的定义及总体思想
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:
ORM映射元数据
JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
JPA 的API
用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
查询语言
这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
这是我们做项目中其中例子:(用来说明JPA的用处)
@Entity
@Table(catalog="DBTeaching")
public class TCourse implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name; //课程名称
private transient TTeacher creator; //课程创建者
private TSemester semester; //课程所属学期
private TCourseType type; //课程类型
private transient TBranch branch; //课程所属教研室
private String memo; //课程描述
private transient Long optlockversion;
@Version
@Column(name="optlock")
public Long getVersion()
{
return optlockversion;
}
public void setVersion(Long v)
{
optlockversion = v;
}
public TCourse() {
super();
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
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;
}
@ManyToOne
@OnDelete(action=OnDeleteAction.CASCADE)
public TTeacher getCreator() {
return creator;
}
public void setCreator(TTeacher creator) {
this.creator = creator;
}
@ManyToOne
public TSemester getSemester() {
return semester;
}
public void setSemester(TSemester semester) {
this.semester = semester;
}
@ManyToOne
public TCourseType getType() {
return type;
}
public void setType(TCourseType type) {
this.type = type;
}
@ManyToOne
@OnDelete(action=OnDeleteAction.CASCADE)
public TBranch getBranch() {
return branch;
}
public void setBranch(TBranch branch) {
this.branch = branch;
}
@Lob
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}
注释:
@Entity是表示这个类要持久到数据库里
@Table这个是定义表名
@Version 版本
@Column(name="optlock") 数据库表中一个列表字段‘optlock’
@Id
默认情况下,JPA 持续性提供程序假设每个实体必须至少有一个用作主键的字段或属性。
使用这些批注指定以下项之一:Id是其中之一
@GeneratedValue(strategy=GenerationType.AUTO)
默认值
:GenerationType.AUTO
。
默认情况下,JPA 持续性提供程序选择最适合于基础数据库的主键生成器类型。
@ManyToOne 关系型数据库 多对一
@OnDelete(action=OnDeleteAction.CASCADE)
使用 @ManyToOne
批注:
-
将获取类型配置为 LAZY
-
如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)
-
配置关联的目标实体(如果无法从被引用的对象类型推断出它)
-
配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还删除关联的目标
cascade
默认情况下,JPA 不会将任何持续性操作层叠到关联的目标。 @OnDelete 就是删除时不会关联到其他目标
@Lob
@Lob
默认情况下,JPA 持续性提供程序假设所有持久数据均可以表示为典型的数据库数据类型。
结合使用 @Lob
批注与 @Basic
映射,以指定持久属性或字段应作为大型对象持久保存到数据库支持的大型对象类型。
Lob 可以是二进制类型或字符类型。持续性提供程序从持久字段或属性的类型推断出 Lob 类型。
本人是刚学JPA知识,有些只是从参考书copy出来的,或许有些说的不清楚,请见谅!
分享到:
相关推荐
第二本,《JPA+批注参考.pdf》,可能会详细阐述JPA的注解使用,如@Table、@Column、@Id、@GeneratedValue、@OneToMany、@ManyToOne、@OneToOne和@ManyToMany等,这些注解是JPA中实现ORM的关键。此书可能会涵盖如何...
JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致 同时JPA也是JavaEE5 (EJB) 3.0 规范的组成部分。 这个文档是针对JPA常用注解的一些说明。
【JPA学习笔记】 JPA(Java Persistence API)是Java平台上的一个ORM(Object-Relational Mapping)规范,它提供了一种将Java对象与数据库表进行映射的机制,简化了数据库操作。JPA允许开发者使用面向对象的方式...
总之,JPA是Java开发中处理数据库的强大工具,通过学习和掌握其API和注解的使用,开发者可以更加高效地进行数据持久化操作,同时减少对底层数据库知识的依赖。结合提供的"JPA注解参考_Oracle.chm",开发者可以获得...
**Toplink JPA注解参考** Toplink JPA(Java Persistence API)是Oracle公司提供的一种对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。JPA提供了丰富的注解,使得在Java...
总的来说,JPA源码和文档的学习对于Java开发人员来说是提高数据库操作技能的关键步骤,它能帮助我们写出更高效、更易于维护的持久化代码。无论是对JPA的底层机制,还是其提供的高级特性,都需要深入学习和实践,才能...
这篇博客系列可能是对JPA的深入学习和实践,涵盖了JPA的基础概念、配置、实体管理、查询、事务处理等多个方面。由于没有提供具体的描述,我们只能根据标题和标签来推测内容。 **源码分析** 源代码是学习任何技术的...
综上所述,这些文档是学习和精通Spring框架、Spring Data JPA以及JPA的宝贵资源,适合Java开发者尤其是从事企业级应用开发的人员参考学习。通过学习和实践,开发者可以更高效地构建和维护数据库驱动的Java应用程序。
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它是Java EE和Java SE环境中对象关系映射(ORM)的一部分。JPA通过提供API和元数据来描述如何将Java对象映射到数据库表,使得...
Struts2是一个流行的Java web应用程序框架,用于构建和...对于想要学习如何在实际项目中整合Struts2和JPA的开发者来说,这是一个非常有价值的参考资料。通过深入研究和实践,可以提升对这两项技术的理解和应用能力。
在本项目中,"Springboot整合JPA和Mybatis的最佳实践源码" 是一个旨在展示如何优雅地将Spring Boot与JPA(Java Persistence API)和Mybatis两大持久层框架结合的示例。该项目的主要目标是提供一个高效、可扩展且易于...
网络上有一份pdf格式的《JPA学习笔记》,但是内容排版有点乱,而且有缺失的部分,小弟从原来的blog处拷贝出来,并加以排版,制作成了chm格式的,大家应该知道chm格式比较适合作为参考资料或帮助文档的文件格式了。
源代码可以帮助开发者理解JPA 2.0内部的工作机制,对于学习和调试非常有价值。JavaDoc则提供了详细的API文档,列出了所有可用的接口、类和方法,以及它们的用途和参数说明,是开发过程中不可或缺的参考资料。 **...
描述中提到,这是一个简单的程序,适合初学者学习和参考。作者已经包括了必要的JPA库(jar包),这通常是用来处理对象关系映射(ORM)的,以及MySQL数据库的驱动,以便程序能够与数据库进行通信而无需用户额外下载...
提到的"DengDemo"可能是示例项目的名字,这个项目可能包含了整合SpringBoot和JPA的实例代码,包括实体类、Repository接口、配置文件等,供学习者参考。 总的来说,SpringBoot+JPA的组合极大地简化了Java应用的...
最后,该学习指南还提供了一些关于命名空间的参考信息、支持的查询关键字和常见问题的解答,以及一个术语表,对初学者和有经验的开发人员来说都是极好的资源。 通过理解和掌握Spring Data JPA的这些知识点,开发者...
在本文中,我们将深入探讨如何使用Netbeans IDE进行JSF 2.0的开发,并结合Primefaces和JPA来创建...在学习过程中,可以参考提供的PDF文档,它们可能详细讲解了从基础到高级的各个知识点,帮助你更好地掌握这些技术。
SSH(Struts2、Spring、Hibernate)是一种经典的Java Web开发框架,它整合了Struts2的MVC设计模式、Spring的依赖...在这个案例中,S2SpringJPA_annotation文件很可能是包含了具体实现这些功能的源代码,供学习和参考。