`
hongshenghome
  • 浏览: 24791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

JPA(一)

JAVA 2010-07-02 22:50:08 阅读74 评论0   字号: 订阅

 

 

一、   映射实体:

@Entity(name="Customer")//Customer:实体的名称select c from Customer c

@Table(schema="db",uniqueConstraints={

       //唯一鍵

       @UniqueConstraint(

              columnNames = {"CUSTOMER_NAME"}

       )/*,@UniqueConstraint(

              columnNames = {"NAME","SHORTNAME"}

       )*/

})//CUSTOMER:表名,catalog:目录名,schema:数据库

二、   映射ID

1.       Sequence生成器:

    @Id

    @GeneratedValue(

           strategy=GenerationType.SEQUENCE,

           generator="myseq"

    )

    @SequenceGenerator(

           name="myseq",

           sequenceName="id_seq"//,initialValue=1,allocationSize=1

    )

/*@Id @GeneratedValue(generator = "myseq")

        @org.hibernate.annotations.GenericGenerator(

           name = "myseq",

           parameters = {

@org.hibernate.annotations.Parameter(

name="sequence",value="id_seq"

)},

           strategy = "sequence"

    )*/

2.       表生成器:

    @GeneratedValue(

           strategy=GenerationType.TABLE,

           generator="myseq"

    )

    @TableGenerator(

           name="myseq",

           table="tb_seq",

           pkColumnName="gen_name",//栏位名

           valueColumnName="gen_value",//栏位名

           pkColumnValue="pk_tb_seq",//栏位值

           allocationSize=1//,UniqueConstraintTable一样

    )

3.       复合主鍵:

@Embeddable

public class CustomerPK implements java.io.Serializable{

      private String name;

  private String email;

 

public class Customer implements java.io.Serializable {

    @EmbeddedId

private CustomerPK pk;

 

//@Embeddable(第一种方式)

public class SCId implements Serializable {

    private Long sno; // 学号

private Long cno; // 课程号

 

    @Id//(第一种方式) 此方式SC.java中需@Embeddable

    @AttributeOverrides({

       @AttributeOverride(name="sno",column=@Column(name="SNO")),

       @AttributeOverride(name="cno",column=@Column(name="CNO"))

    })

    @EmbeddedId//此方式SC.java中无需@Embeddable(第二种方式)

    @AttributeOverrides({

       @AttributeOverride(name="sno",column=@Column(name="SNO")),

       @AttributeOverride(name="cno",column=@Column(name="CNO"))

    })

    //@Transient(映射非持久化类型)

private SCId scid;

 

<!-- <composite-id name="scid" class="SCId"> -->

        <composite-id>

            <key-property name="sno" type="long">

                <column name="Sno" />

            </key-property>

            <key-property name="cno" type="long">

                <column name="Cno" />

            </key-property>

     </composite-id>

三、   映射方法与属性:

@Basic(fetch=FetchType.EAGER,optional=false)//LAZY:延时加载,EAGER:即时加载(default EAGER),optional表示属性是否可为空default true

@Temporal(TemporalType.DATE)//default java.sql.TIMESTAMP Temporal@转换成java.util.Date

@Column(

           name="CUSTOMER_NAME",

           //unique=true,//是否唯一

           //nullable=false,//是否为空

           //insertable=false,//是否允许insert

           //updatable=false,//是否允许update

           //columnDefinition="varchar2(200) not null",

           length=512//precision=12,scale=2,精度为12,小数倍数为2

)

四、   映射枚举:

@Enumerated(EnumType.ORDINAL)//EnumType.STRING

private CustomerType types;

public enum CustomerType {

    COMPETITOR,INVESTOR,PARTNER,VENDER

}

五、   一对一:

1.       共享主鍵:

User.java:

@OneToOne

    @PrimaryKeyJoinColumn

    @org.hibernate.annotations.Cascade(

           value = org.hibernate.annotations.CascadeType.SAVE_UPDATE

    )

private Address address;

<class name="User" table="USER">

         <id name="id" type="long" column="USER_ID">

        <generator class="sequence">

              <param name="sequence">id_seq</param>

       </generator>

         </id>

         <property name="loginName"/>

         <property name="admin" type="yes_no"/>

        <one-to-one name="address" class="Address" cascade="save-update"/>

</class>

Address.java:

@Id @GeneratedValue(generator = "myForeignGenerator")

@org.hibernate.annotations.GenericGenerator(

        name = "myForeignGenerator",

        strategy = "foreign",

        parameters = @org.hibernate.annotations.Parameter(name = "property",value = "user")

)

@Column(name = "ADDRESS_ID")

private Long id;

@OneToOne

    @PrimaryKeyJoinColumn

private User user;

<class name="Address" table="ADDRESS">

         <id name="id" type="long" column="ADDRESS_ID">

        <generator class="foreign">

              <param name="property">user</param>

       </generator>

         </id>

         <property name="street"/>

         <property name="city"/>

         <property name="zipcode"/> 

         <one-to-one name="user" font-size: 10p

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    **Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...

    JPA分页查询与条件分页查询

    JPA(Java Persistence API)是Java平台上的一个标准,用于管理关系数据库中的数据。Spring Data JPA 是基于 JPA 的一个扩展,它简化了数据库操作,使得开发者无需编写大量SQL语句,就能实现数据的增删改查。在这个...

    JPA源文件/jpa学习

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中存储、检索和管理对象的工作。JPA是Java EE和Java SE环境中的一种ORM(Object-Relational Mapping)...

    JPA (一)

    **Java 持久化 API(JPA)详解(一)** Java 持久化 API(Java Persistence API),简称 JPA,是 Java 平台上的一个标准,用于管理关系数据库中的数据。JPA 提供了一种面向对象的方式来操作数据库,使得开发人员...

    Spring Data JPA的优点和难点.pdf

    Spring Data JPA是Spring生态中的一个强大ORM框架,它极大地提高了Java开发者在处理数据库操作时的效率。Spring Data JPA的主要优点在于其高度的开发效率、成熟的语法结构以及与Spring框架的紧密集成。 1. **开发...

    java + spring boot +jpa 拦截器分库分表demo

    Spring Data JPA是Spring对JPA的扩展,提供了更丰富的功能,包括自动Repository生成、查询方法等。 在Spring Boot项目中集成JPA,首先需要在`pom.xml`或`build.gradle`中添加相应的依赖。接下来,创建实体类...

    Springboot中使用Druid+JPA

    在Spring Boot应用中,Druid和JPA是两种常见的数据库操作工具。Druid是一个功能强大的数据库连接池,而JPA(Java Persistence API)是Java平台上的一个标准,用于对象关系映射(ORM)。本篇文章将深入探讨如何在...

    Spring JPA 配置类包集合 方便大家使用

    Spring JPA,全称为Spring Data JPA,是Spring框架的一部分,专门用于简化Java持久层编程,尤其是与关系型数据库的交互。它建立在Java Persistence API(JPA)之上,提供了更高级别的抽象,使得开发者可以更加专注于...

    如何控制JPA的事务

    "JPA事务管理" JPA(Java Persistence API)是一种Java持久化规范,它提供了一个抽象层来访问关系数据库。JPA的事务管理是指对一系列操作的管理,包括创建、读取、更新和删除(CRUD)等操作。事务管理的目的是确保...

    黎活明老师讲解的JPA源码

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将...

    使用SpringBoot-JPA进行自定义保存及批量保存功能

    使用SpringBoot-JPA进行自定义保存及批量保存功能 使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java ...

    Spring Data JPA从入门到精通

    《Spring Data JPA从入门到精通》是一套深入学习Spring Data JPA的资源,结合了两本书的内容,旨在帮助开发者全面掌握这一强大的数据访问技术。Spring Data JPA是Spring框架的一部分,它为Java Persistence API (JPA...

    spring boot jpa security

    Spring Boot JPA与Security是两个在Java开发领域中极为重要的技术框架,它们分别专注于数据访问和应用程序的安全管理。本文将深入探讨这两个框架的核心概念、如何整合使用以及在实际项目中的应用。 Spring Boot是由...

    jpa代码自动生成工具-springboot

    在Java开发领域,Spring Boot和JPA(Java Persistence API)是两个非常重要的框架。Spring Boot简化了Spring应用程序的创建和配置过程,而JPA作为Java的ORM(对象关系映射)标准,允许开发者以面向对象的方式操作...

    JPA中文解释,JPA的API

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它简化了在Java应用程序中存储、检索和管理数据的过程,是Enterprise JavaBeans(EJB)的一部分,也是Spring框架中的一个...

    springboot + jpa 批量存储示例

    在本文中,我们将深入探讨如何使用Spring Boot与Java Persistence API (JPA) 实现批量存储操作。Spring Boot简化了设置和配置,而JPA作为Java的ORM(对象关系映射)框架,允许开发者以面向对象的方式操作数据库。...

Global site tag (gtag.js) - Google Analytics