Hibernate对JPA的支持

    JPA(Java Persistence API)目前使用范围范围越来越广,作为J2EE平台提供的ORM规范,得到了很多开源框架的支持,JPA可以脱离容器独立运行,方便开发和测试,下面我们通过实例来说明如何在Hibernate中使用JPA来简化编程的。

    JPA作为一种规范存在,就相当于一个接口,而Hibernate就来实现这个接口,对JPA的实现需要三个组件支持:

hibernate-annotation是Hibernate支持annotation方式配置的基础,包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation。

hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能

hibernate-entitymanager可以看做是hibernate-core和JPA之间的桥梁,它对hibernate-core进行封装,使得hibernate符合JPA的规范。

应用JPA项目,我们也离不开JPA所依赖的包:

 hibernate-annotations.jar

 ejb3-persistence.jar

 hibernate-commons-annotations.jar

  当然在Hibernate的框架中我们不需要映射文件,只需要在Hibernate的配置文件中采用类名的方式去映射即可:

<mappingclass="com.bjpowernode.hibernate.User"/>

   在实体中我们就要采用注解的方式完成映射了:

package com.bjpowernode.hibernate;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
	@Id
	private String id;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}	
}

    在解析配置文件的时候,我们使用AnnotationConfiguration()方法完成,解析加入注解的相关主键

     Configuration cfg = newAnnotationConfiguration().configure();

其中采用注解的方式将实体映射到配置文件中,下面就是几种常用的注解:

1、对实体类整体的映射:

@Entity

@Table(name="t_user1")

表示实体在数据库中映射的表名为t_user1。

2、对主键的映射:

@Id

@GeneratedValue表示数据库采用自增长的方式生成主键

@GenericGenerator(name="myIdGenerator",strategy="uuid")表示主键的生成策略为uuid。

3、对字段名称的映射:

@Column(name="create_time")表示列的字段名称为create_time。

4、继承中的映射:

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)指定为继承映射,每个继承树一张表

@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)鉴别字段

@DiscriminatorValue(value="P")鉴别值是P

@Inheritance(strategy=InheritanceType.JOINED)//指定为继承映射,每个类一张表

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)//指定为继承映射,每个具体类一张表

5、多对多的关联映射:

@ManyToMany(mappedBy="roles")映射

@ManyToMany

@JoinTable(

               name="t_user_role",

               joinColumns={@JoinColumn(name="user_id")},

               inverseJoinColumns={@JoinColumn(name="role_id")}

)指定第三方表名称

(mappedBy出现在哪一端,哪一端不维护关系,它成为了关系的被管理端。相当于hibernate中的inverse=true。)

6、多对一的关联映射:

@ManyToOne多对一的映射

7、一对多的关联映射:

@OneToMany(mappedBy="classes",targetEntity=Student.class)

 

    JPA是JCP组织发布的 Java EE标准之一,框架中支持大数据集、事务、并发等容器级事务,

提供了更加简单的编程模型。JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,与Hibernate中的hql非常类似,同样也支持面向对象中的继承和多态特性,能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。由此Hibernate中应用JPA是必然的趋势。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值