JAP的简单了解JAP 与 Hibernate 与 ORM 的关系 1 JPA 的由来 1 ORM 框架能够将 java 对象映射到关系型数据库中 能够直接持久化复杂的 Java 对象 ROM 的出现 可以让开发者从数据库编程中解脱出来 把更大的精力放在业务模型于业务逻辑上 目前比较流行的 ORM 框架有 Mybatis Hibernate TopLink JDO 等 2
大家好,我是讯享网,很高兴认识大家。
JAP与Hibernate与ORM的关系
1.JPA的由来
(1)ORM框架能够将java对象映射到关系型数据库中,能够直接持久化复杂的Java对象.ROM的出现,可以让开发者从数据库编程中解脱出来,把更大的精力放在业务模型于业务逻辑上,目前比较流行的ORM框架有"Mybatis",“Hibernate”,“TopLink”,"JDO"等
2.JAP是什么
(1)JPA (Java Persistence API)是Sun官方提出的Java 持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理 Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在 Hibernate、TopLink、JDO等ORM框架各自为 营的局面。值得注意的是,JPA 是在充分吸收了现有的 Hibernate、Toplink、JDO等ORM框架的基础上发展而来的,具有易于使用、伸缩性强等优点。从目前的开发社区的反应上看,JPA 受到 了极大的支持和赞扬,其中就包括了Spring与EJB3.0 的开发团队。 注意:JPA 是一套规范,不是一套产品,那么像 Hibernate Toplink、JDO 它们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以称他们为JPA的实现产品。
3.Spring Dtaa JAP
Spring Data 是 Spring的一个子项目,用于简化数据库访问,包括NoSQL非关系型数据库,另外还包括对关系型数据库的访问支持。Spring Data使我们可以快速简单地使用普通的数据访问技术及新的数据访问技术,Spring Data会让数据的访问变得更加方便。Spring Data JPA 是 Spring基于 ORM框架、JPA规范的基础上封装的一套JPA应用框架,可以让开发者用极筒的代码即可实现对数据的访问和操作。它提供了包括增、删、改、查等在内的常用功能,且易于扩展,学习并使用 Spring Data JPA 可以极大提高开发效率。Spring Data JPA其实就是Spring 基于 Hibernate 之上构建的JPA 使用解决方案,方便在 Spring Boot 项目中使用JPA技术。Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它实现。
4.Spring Data JPA 的基本使用步骤:
(1).下面我们用使用Intelij IDEA 开发软件来演示步骤: 注意:以下这些红框表示自己需要什么勾什么 注意:勾上自己所选的一般它会自动配置pom.xml文件, 讯享网
项目pom.xml文件配置如下:
项目pom.xml文件配置如下: 数据库连接配置:
5.JPA拥有的注解
|
@Entity
声明类为实体或表。
@Table
声明表名。
@Basic
指定非约束明确的各个字段。
-@Embedded-
-指定类或它的值是一个可嵌入的类的实例的实体的属性。
@Id
指定的类的属性,用于识别(一个表中的主键)。
-@GeneratedValue-
- 指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值。
@Transient
指定的属性,它是不持久的,即:该值永远不会存储在数据库中。
-@Column-
-指定持久属性栏属性。
@SequenceGenerator
指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。
@TableGenerator
指定在@GeneratedValue批注指定属性的值发生器。
@AccessType
这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量并且不需要getter和setter,但必须为public。如果设置@AccessType(PROPERTY),通过getter和setter方法访问Entity的变量。
@JoinColumn
指定一个实体组织或实体的集合。这是用在多对一和一对多关联
@UniqueConstraint
指定的字段和用于主要或辅助表的唯一约束。
@ColumnResult
参考使用select子句的SQL查询中的列名。
@ManyToMany
定义了连接表之间的多对多一对多的关系。
@ManyToOne
定义了连接表之间的多对一的关系。
@OneToMany
定义了连接表之间存在一个一对多的关系。
@OneToOne
定义了连接表之间有一个一对一的关系。
@NamedQueries
指定命名查询的列表。
@NamedQuery
指定使用静态名称的查询。
6.自定义查询方法命名规则
Keyword
Sample
JPQL snippet
And
findByLastnameAndFirstname
… where x.lastname = ?1 and
Or
findByLastnameOrFirstname
… where x.lastname = ?1 or x.firstname = ?2
Is,Equals
findByFirstnameIs,findByFirstnameEquals
… where x.firstname = ?1
Between
findByStartDateBetween
… where x.startDate between ?1 and ?2
LessThan
findByAgeLessThan
… where x.age < ?1
LessThanEqual
findByAgeLessThanEqual
… where x.age ⇐ ?1
GreaterThan
findByAgeGreaterThan
… where x.age > ?1
GreaterThanEqual
findByAgeGreaterThanEqual
… where x.age >= ?1
After
findByStartDateAfter
… where x.startDate > ?1
Before
findByStartDateBefore
… where x.startDate < ?1
IsNull
findByAgeIsNull
… where x.age is null
IsNotNull
NotNull findByAge(Is)NotNull
… where x.age not null
Like
findByFirstnameLike
… where x.firstname like ?1
NotLike
findByFirstnameNotLike
… where x.firstname not like ?1
StartingWith
findByFirstnameStartingWith
… where x.firstname like ?1 (parameter bound with appended %)
EndingWith
findByFirstnameEndingWith
… where x.firstname like ?1 (parameter bound with prepended %)
Containing
findByFirstnameContaining
… where x.firstname like ?1 (parameter bound wrapped in %)
OrderBy
findByAgeOrderByLastnameDesc
… where x.age = ?1 order by x.lastname desc
Not
findByLastnameNot
… where x.lastname <> ?1
In
findByAgeIn(Collection ages)
… where x.age in ?1
NotIn
findByAgeNotIn(Collection age)
… where x.age not in ?1
TRUE
findByActiveTrue()
… where x.active = true
FALSE
findByActiveFalse()
… where x.active = false
IgnoreCase
findByFirstnameIgnoreCase
… where UPPER(x.firstame) = UPPER(?1)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/123328.html