一、 映射实体:
@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//,UniqueConstraint同Table一样
)
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
分享到:
相关推荐
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...
**Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...
Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...
JPA(Java Persistence API)是Java平台上的一个标准,用于管理关系数据库中的数据。Spring Data JPA 是基于 JPA 的一个扩展,它简化了数据库操作,使得开发者无需编写大量SQL语句,就能实现数据的增删改查。在这个...
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中存储、检索和管理对象的工作。JPA是Java EE和Java SE环境中的一种ORM(Object-Relational Mapping)...
**Java 持久化 API(JPA)详解(一)** Java 持久化 API(Java Persistence API),简称 JPA,是 Java 平台上的一个标准,用于管理关系数据库中的数据。JPA 提供了一种面向对象的方式来操作数据库,使得开发人员...
Spring Data JPA是Spring生态中的一个强大ORM框架,它极大地提高了Java开发者在处理数据库操作时的效率。Spring Data JPA的主要优点在于其高度的开发效率、成熟的语法结构以及与Spring框架的紧密集成。 1. **开发...
Spring Data JPA是Spring对JPA的扩展,提供了更丰富的功能,包括自动Repository生成、查询方法等。 在Spring Boot项目中集成JPA,首先需要在`pom.xml`或`build.gradle`中添加相应的依赖。接下来,创建实体类...
在Spring Boot应用中,Druid和JPA是两种常见的数据库操作工具。Druid是一个功能强大的数据库连接池,而JPA(Java Persistence API)是Java平台上的一个标准,用于对象关系映射(ORM)。本篇文章将深入探讨如何在...
Spring JPA,全称为Spring Data JPA,是Spring框架的一部分,专门用于简化Java持久层编程,尤其是与关系型数据库的交互。它建立在Java Persistence API(JPA)之上,提供了更高级别的抽象,使得开发者可以更加专注于...
"JPA事务管理" JPA(Java Persistence API)是一种Java持久化规范,它提供了一个抽象层来访问关系数据库。JPA的事务管理是指对一系列操作的管理,包括创建、读取、更新和删除(CRUD)等操作。事务管理的目的是确保...
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将...
使用SpringBoot-JPA进行自定义保存及批量保存功能 使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java ...
《Spring Data JPA从入门到精通》是一套深入学习Spring Data JPA的资源,结合了两本书的内容,旨在帮助开发者全面掌握这一强大的数据访问技术。Spring Data JPA是Spring框架的一部分,它为Java Persistence API (JPA...
Spring Boot JPA与Security是两个在Java开发领域中极为重要的技术框架,它们分别专注于数据访问和应用程序的安全管理。本文将深入探讨这两个框架的核心概念、如何整合使用以及在实际项目中的应用。 Spring Boot是由...
在Java开发领域,Spring Boot和JPA(Java Persistence API)是两个非常重要的框架。Spring Boot简化了Spring应用程序的创建和配置过程,而JPA作为Java的ORM(对象关系映射)标准,允许开发者以面向对象的方式操作...
Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它简化了在Java应用程序中存储、检索和管理数据的过程,是Enterprise JavaBeans(EJB)的一部分,也是Spring框架中的一个...
在本文中,我们将深入探讨如何使用Spring Boot与Java Persistence API (JPA) 实现批量存储操作。Spring Boot简化了设置和配置,而JPA作为Java的ORM(对象关系映射)框架,允许开发者以面向对象的方式操作数据库。...