package com.bjsxt.hibernate;
public enum Gender {
MALE, FEMALE
}
package com.bjsxt.hibernate;
import javax.persistence.Embeddable;
public class TeacherPK implements java.io.Serializable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if(o instanceof TeacherPK) {
TeacherPK pk = (TeacherPK)o;
if(this.id == pk.getId() && this.name.equals(pk.getName())) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
package com.bjsxt.hibernate;
import java.util.Date;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.IdClass;
import javax.persistence.SequenceGenerator;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
@Entity
@javax.persistence.TableGenerator(
name="Teacher_GEN",
table="GENERATOR_TABLE",
pkColumnName = "pk_key",
valueColumnName = "pk_value",
pkColumnValue="Teacher",
allocationSize=1
)
@SequenceGenerator(name="teacherSEQ", sequenceName="teacherSEQ_DB")
@IdClass(TeacherPK.class)
public class Teacher {
//private TeacherPK pk;
private int id;
private String name;
private String title;
private String yourWifeName;
private Date birthDate;
private boolean good;
private Gender gender;
@Enumerated(EnumType.STRING)
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public boolean isGood() {
return good;
}
public void setGood(boolean good) {
this.good = good;
}
@Transient
public String getYourWifeName() {
return yourWifeName;
}
public void setYourWifeName(String yourWifeName) {
this.yourWifeName = yourWifeName;
}
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="Teacher_GEN")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Id
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Temporal(TemporalType.TIME)
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
/*@EmbeddedId
public TeacherPK getPk() {
return pk;
}
public void setPk(TeacherPK pk) {
this.pk = pk;
}*/
}
分享到:
相关推荐
在IT行业中,Hibernate是一款广泛应用的关系对象映射框架,它极大地简化了Java开发人员与数据库交互的工作。而JPA(Java Persistence API)是Java平台上的一个标准,为持久化提供了统一的API,使得开发者可以轻松地...
Java 持久化API(Java Persistence API,简称JPA)是Java开发人员用来管理关系数据库的对象/关系映射(ORM)工具。JPA通过提供一套标准接口和API,简化了在Java应用中存储、查询和管理数据的过程,使得开发者可以...
8. **Inheritance Mapping**: Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-class,可以根据业务需求选择合适的映射方式。 9. **Lazy Loading & Eager Loading**: Hibernate提供了懒加载和急加载...
Hibernate提供多种映射类型,包括基本映射、主键映射、关系映射、组合映射、继承映射等。开发者需要根据应用场景选择合适的映射策略。 ### 9. 基本映射策略 基本映射策略包括注解(Annotation)映射和XML映射两种...
在IT行业中,构建高效、可维护的Web应用是至关重要的,SpringMVC、Hibernate和JPA作为Java领域中三大主流框架,常常被联合使用来实现这一目标。本篇将详细介绍如何利用Maven来搭建整合SpringMVC、Hibernate和JPA的...
通过上述内容可以看出,Hibernate提供了丰富的注解机制来简化实体Bean的声明、属性的映射、表的定义、主键和外键的定义、关联关系的建立、查询的定义等。这些注解极大地提高了开发效率,并有助于构建清晰、灵活且...
日期_枚举等字段类型的JPA映射** JPA提供了对不同数据类型的映射,如日期类型(@Temporal),枚举类型(@Enumerated),甚至自定义类型,通过Converter接口可以自定义数据类型转换。 **6. 大数据字段映射与字段...
- 联合主键:多个字段共同组成主键。 - 继承映射:支持单表继承、多表继承等多种模式。 - 支持关联映射:一对一、一对多、多对一、多对多等各种关联关系。 - 支持延迟加载:只在真正需要时才加载关联对象,提高性能...
8. **继承映射(Inheritance Mapping)**:JPA支持单表继承、联合继承和表格分层等策略,使你可以设计复杂的对象模型。 9. **懒加载(Lazy Loading)**:默认情况下,JPA实现如Hibernate支持懒加载,即关联的对象只...
11. **联合实体映射**:讲解如何处理复杂的数据结构,如联合主键和复合实体。 12. **多态性与继承**:介绍如何在Hibernate中处理类继承关系,以及多态查询的实现。 13. **JPA集成**:如果指南也涵盖了JPA(Java ...
- **定义与实现**:解释联合主键的概念,并展示其在JPA中的实现方式。 通过以上知识点的梳理,我们可以看出JPA不仅是一种强大的持久层框架,还具有高度的灵活性和扩展性,能够满足不同场景下的需求。同时,由于其...
- 单表继承、联合表继承、子类表继承,根据需求选择合适的映射策略。 7. **集合映射**: - List、Set、Map等集合类型与数据库表的映射,处理关联关系的集合操作。 8. **懒加载**: - 提高性能,延迟加载关联...
在本文中,我们将深入探讨如何使用Spring Boot框架与Java Persistence API (JPA)结合,特别是通过Hibernate实现数据库的增删改查操作,并进行简单的两表联合查询。首先,我们需要了解Spring Boot的基础,然后掌握JPA...
3. Inheritance:Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-hierarchy。 四、关联映射 1. OneToMany/ManyToOne:一对多和多对一关系映射,使用@OneToMany和@ManyToOne注解,@JoinColumn定义...
- **联合主键**:在实体类中使用多个字段作为主键的情况,需注意其配置方式。 ##### 5. Hibernate核心开发接口介绍 - **核心接口**: - `Configuration`:负责加载配置文件。 - `SessionFactory`:创建`Session`...
在使用这个策略时,JPA会将主键的生成工作交由数据库完成,hibernate 不会介入。这意味着,数据库将负责生成主键,而不是hibernate。这种策略适用于大多数情况,因为它可以确保主键的唯一性和连续性。 uuid uuid是...
10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...
**联合主键(Composite Primary Key)**在JPA中,当一个实体的主键由两个或更多个字段组成时,我们称之为联合主键。`JPACompositePK`示例将说明如何使用`@Embeddable`和`@EmbeddedId`注解来定义这样的主键。 在这些...