jpa

作者: 一二追 | 来源:发表于2021-10-25 14:21 被阅读0次

    jpa是java persistence api的简称,是jdk5.0注解或者xml描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
    jpa特点:
    1.标准化2.容器级特性支持3.简单方便4.查询能力5.高级特性
    1.jpa是jcp组织发布的javaee标准之一。因此任何声称符合jps标准的框架都遵循同样的架构,提供相同的访问api,这保证了基于jpa开发的企业应用能够经过商量的修改就能够在满足不同的jpa框架下运行。
    2.jpa支持大数据集,事务,并发等容器级事务,这使得jps超越了简单持久化框架的局限,在企业应用发挥更大的作用。
    3.jpa的主要目标之一就是提供更加简单的编程模型,只需要使用javax.persistence.entity进行注释,jpa的框架和接口都能简单,没有太多特别的规则和设计模式要求下,开发者可以很容易的掌握。jpa给予非侵入式原则设计,因此可以容易和其他框架或者容器集成。
    4.jpa的查询语言是面向对象而非面向数据库的,他以面向对象的自然语法构造查询语句。
    5.jpa中能够支持面向对象的高级特性,如类之间的继承,多态和类之间的复杂关系,这样的支持能够让开发者最大限度使用面向对象的模型设计企业应用。
    jpa注解:
    @entity 声明类为实体或者表
    @table 声明表名
    @basic 指定非约束明确的各个字段
    @embedded 指定类或它的值是一个可嵌入的类的实例的实体的属性
    @id 指定的类的属性,用于识别(一个表的主键)
    @generatedValue 指定如何标识属性可以被初始化,例如自动,手动,或从序列表中活的的值
    @transient 指定的属性,他是不持久的,即:该值永远不会存储在数据中
    @Column 指定持久属性栏属性
    @SequenceGenerator 指定在该注解中指定属性的值。他创建了一个序列
    @tableGenerator 指定了在@generatedvalue批注指定属性的值发生器。他创造了的值生成的表(备注:不太理解)
    @accessType 这种类型的注释用于设置访问类型。如果设置@AccessType(field),则可以直接访问变量并且不需要getter和setter,但必须是public;如果设置@AccessType(property),通过getter和setter方法访问
    @joinColumn 指定一个实体组织或者实体的集合。这是用在多对一和一对多的关联上
    @uniqueConstraint 指定的字段和用于主要或辅助表的唯一约束
    @columnResult 参考使用select子句的sql查询中的列名
    @manyToMany 定义了连接表之间的多对多一对多的关系
    @manyToOne 定义了连接表之间的多对一的关系
    @oneToMany 定义了连接表之间的一对多关系
    @oneToOne 定义了连接表之间的一对一关系
    @namedQueries 指定明明查询的列表
    @namedQuery 指定使用静态名称的查询

    问题列表:
    1.# [java.sql.SQLException: Unknown column 'user0_.user_name' in 'field list' 报错问题]
    由于数据库不区分大小写,所以要注意,hibernate会按照驼峰命名规范将userName转成user_name,相当于数据库中的userName==实体类中的user_name;所以只要把@Column(name=“userName”)改成name=“username”就可以解决了。

    相关文章

      网友评论

          本文标题:jpa

          本文链接:https://www.haomeiwen.com/subject/gmsjaltx.html