`
ligf06
  • 浏览: 102860 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JPA介绍

    博客分类:
  • JPA
阅读更多
    一: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 介绍资料

    Gemini JPA是在OSGi环境下(特别是Eclipse RCP)中使用的Java持久化框架。OSGi是一个模块化服务平台,允许在Java环境中动态地安装、启动、停止和卸载组件,而不会影响其他组件的正常运行。在Java开发中,持久化层...

    SpringBoot+JPA

    3. **SpringDataJPA介绍** SpringDataJPA是Spring Data项目的一部分,它提供了对JPA的高级支持,包括查询方法的自动声明、动态查询生成等,使得数据库操作更加简单。 4. **集成步骤** - 添加依赖:在`pom.xml`或`...

    openjpa-manual

    #### 一、OpenJPA介绍 **1.1 关于本文档** 本文档旨在提供一个全面且深入的指南,帮助开发人员理解和掌握Java Persistence API(JPA)的核心概念及其在Apache OpenJPA中的实现细节。文档将详细介绍JPA的基本原理、...

    springboot微服务项目加jpa

    JPA介绍** JPA是Java EE规范的一部分,用于处理Java应用程序与关系数据库之间的持久化。它提供了一组API,允许开发人员将Java对象映射到数据库表,从而实现ORM。JPA通过Entity、EntityManager和Persistence Context...

    Spring4集成JPA和MyBatis3简单例子

    JPA介绍** JPA是Java EE平台中的标准持久化API,它定义了一个用于管理关系数据库的接口,使开发者可以使用面向对象的方式来操作数据库。JPA通过ORM(对象关系映射)技术将Java对象映射到数据库表,简化了数据库操作...

    SpringBoot + JPA + Mysql

    JPA介绍** JPA是Java EE的一部分,提供了一套标准接口来处理对象与数据库之间的映射。它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。JPA通过实现ORM框架(如Hibernate、EclipseLink)来...

    前后端分离springbootJPA.rar

    二、SpringBoot JPA介绍 SpringBoot是Spring框架的一种简化版,它通过自动配置和起步依赖,使得开发者能快速搭建起一个可运行的Spring应用。JPA(Java Persistence API)是Java EE提供的一种ORM(Object-Relational ...

    持久层方案SpringDataJPA文件及配置

    SpringDataJPA介绍** SpringDataJPA是Spring框架的扩展,它简化了数据库操作,通过提供一种声明式的方式来处理数据访问。开发者不再需要编写大量的JPA或Hibernate查询,而是通过接口定义来完成数据操作,例如增删改...

    Springboot+jpa+MySQL+HTML之简单的增删改查Demo

    **JPA介绍** JPA是Java标准API,用于处理对象-关系映射,使得开发人员可以在不编写SQL代码的情况下操作数据库。它通过实体类和注解将Java对象映射到数据库表。Spring Data JPA是Spring对JPA的封装,提供了一种简单...

    openjpa2.0英文版API

    1. **Introduction**: 介绍了 OpenJPA 2.0 的基本概念和发展背景。 2. **Legal**: 包括了许可证、版权等相关法律声明。 3. **Java Persistence API**: 对 JPA 进行了概述,并解释了为什么选择使用 JPA。 4. **Entity...

    springboot-jpa-demo202010211912.zip

    2. **JPA介绍** JPA是Java平台上的ORM规范,它的目标是提供统一的API来处理对象关系映射,从而避免直接使用SQL语句。JPA通过注解和元数据配置,将Java对象映射到数据库表,简化了数据库操作。 3. **Spring Data ...

    HIbernate Jpa 生成entities

    1. **JPA介绍** JPA是Java EE规范的一部分,它为Java开发者提供了一种在Java应用程序中管理和持久化对象的标准方式。通过JPA,我们可以定义对象-关系映射,使得数据库操作变得简单且面向对象。 2. **Hibernate JPA...

    sprint boot数据库操作(jpa)

    1. **JPA介绍** JPA是Java平台上的ORM(对象关系映射)标准,它允许Java开发者用面向对象的方式来操作数据库。JPA通过提供API和注解,使得我们可以在实体类上定义数据模型,然后通过EntityManager和...

    EJB_JPA数据库持久层开发详解

    **JPA介绍** JPA是Java社区对ORM的一种规范,它的目标是提供一种统一的标准API,以便于开发者可以方便地在不同的ORM实现之间切换。JPA通过定义实体类和映射元数据,将Java对象与数据库表进行关联,从而实现了数据的...

    JPA+Spring2.5+Struts2.0实例 附详细文档

    **一、JPA介绍** JPA是Java EE平台中的ORM(Object-Relational Mapping)标准,它提供了接口和API,使得开发者可以使用面向对象的方式来操作数据库,避免了传统的SQL语句编程。JPA通过Entity类定义数据模型,持久化...

    详细介绍 jpa 开发文档

    ### 详细介绍 JPA 开发文档 #### 一、发展中的持久化技术 ##### 1.1 JDBC 在早期的企业级应用程序开发中,JDBC (Java Database Connectivity) 是一种广泛使用的数据库连接技术。JDBC 提供了一种标准的方式来访问...

    JPA中文解释,JPA的API

    3. JPA注解的全面介绍,包括如何使用它们来定义实体类、字段属性以及关系映射。 4. Oracle数据库与JPA的集成,包括驱动配置、数据源设置等。 5. 使用JPA进行CRUD(创建、读取、更新、删除)操作的示例。 6. JPQL查询...

    03_JPA详解_搭建JPA开发环境和全局事务介绍.zip

    本资料主要针对JPA的使用进行详细讲解,包括如何搭建JPA开发环境以及全局事务的介绍。 **一、JPA开发环境的搭建** 1. **集成环境选择**: JPA可以与多种应用服务器和IDE集成,如Tomcat、Jetty、Eclipse、IntelliJ ...

    JPA持久化简介

    Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗?...朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。

Global site tag (gtag.js) - Google Analytics