`

Hibernate Annotation 配置ManyToMany

阅读更多
用户权限关系
涉及三个数据库表
SYS_USER,SYS_USER_ROLE,SYS_ROLE
用户类
package pineapple.web.pal.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="SYS_USER")
public class User implements Serializable{
	
	@Id 
	@SequenceGenerator(name = "SEQ_USER", sequenceName = "SEQ_USER")
	@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ_USER")
	private Integer id;
	
	@Column(name = "USERNAME", length = 100, nullable = false)
	private String username;
	
	@Column(name = "FULLNAME", length = 255)
	private String fullname;
	
	@Column(name = "PASSWORD", nullable = false)
	private String password;
	
	@Column(name = "ENABLED")
	private Integer enabled;
	
	@Column(name = "IS_ADMIN")
	private Integer isAdmin;
	
	@Column(name = "VERSION")
	private Integer version;
	
	@Cascade(value={CascadeType.SAVE_UPDATE})
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(schema = "TRAIN", name = "SYS_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID", referencedColumnName = "ID", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID", nullable = false) })
	Set<Role> roles;


权限类
package pineapple.web.pal.model;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(schema = "TRAIN", name = "SYS_ROLE")
public class Role implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id 
	@SequenceGenerator(name = "SEQ_ROLE", sequenceName = "SEQ_ROLE")
	@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ_ROLE")
	Integer id;

	@Column(name = "NAME", length = 50, nullable = false)
	@Basic(fetch = FetchType.EAGER)
	String name;
	
	@Column(name = "DESCRIPTION")
	@Basic(fetch = FetchType.EAGER)
	String description;

	@Column(name = "ENABLED")
	@Basic(fetch = FetchType.EAGER)
	Integer enabled;

	@Column(name = "IS_ADMIN")
	@Basic(fetch = FetchType.EAGER)
	Integer isAdmin;

	@Column(name = "VERSION")
	@Basic(fetch = FetchType.EAGER)
	Integer version;

	@Cascade(value={CascadeType.SAVE_UPDATE})
	@ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)
	java.util.Set<User> users;


这里涉及到JPA的annotation跟Hibernate的annotation,其中基本都是用的JPA的标准标注,但是@Cascade(value={CascadeType.SAVE_UPDATE})这一句的cascade用的是Hibernate的,因为本例子是在spring+Hibernate环境下实现的,并没有用到JPA,所以如果在@ManyToMany标注下声明@Cascade(value={CascadeType.persist})并不能生效。
分享到:
评论
1 楼 zhy6235657910 2012-04-05  

相关推荐

    springmvc + hibernate annotation 配置

    在本篇文章中,我们将详细探讨如何将Spring MVC与Hibernate结合,并利用注解(Annotation)进行配置。 首先,让我们了解这两个框架的基本概念。Spring MVC是Spring框架的一部分,它是一个用于构建Web应用的模型-...

    hibernate annotation hibernate3

    Hibernate 3中的注解机制使得开发者能够更直观地在Java类中描述数据库模型,减少了XML配置文件的使用,提升了开发效率。通过熟练掌握这些注解,开发者可以更好地运用Hibernate进行数据持久化操作,实现高效、灵活的...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    Hibernate Annotation 中文文档

    这篇文档主要讨论的是Hibernate Annotation的使用方法,以及它如何替代传统的XML配置文件(*.hbm.xml)进行对象-关系映射。 **1. Hibernate Annotation简介** Hibernate Annotation是Hibernate框架的一个扩展,它...

    最全的Hibernate Annotation API文档

    在Hibernate中,注解(Annotation)是一种声明式的方法,用于配置实体类、属性以及它们与数据库表之间的映射关系。本文将深入探讨“最全的Hibernate Annotation API文档”中的关键知识点。 一、实体类(Entity) 在...

    Hibernate Annotation库

    Hibernate Annotation库是Java开发中用于简化对象关系映射(ORM)的一个重要组件,它使得开发者能够在Java类上直接使用注解来定义数据库映射,从而避免了传统的XML配置文件。这三个特定的jar包是Hibernate ORM框架中...

    Hibernate Annotation入门

    而Hibernate Annotation是Hibernate的一个重要特性,它通过在Java类和字段上添加注解来简化数据库表和实体类之间的映射配置。这篇博文将带你了解如何使用Hibernate Annotation进行开发。 首先,我们需要理解Java...

    hibernate annotation api chm文件

    《Hibernate Annotation API详解》 Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问细节。在Hibernate 3.3版本中,引入了Annotation API,这是一种...

    Hibernate Annotation 笔记 总结 注解

    Hibernate Annotation是Hibernate框架的一个重要特性,它允许开发者直接在Java类上使用注解来定义对象的数据库映射,从而避免了传统的XML配置文件。这种做法提高了代码的可读性和维护性,同时也使得开发流程更为简洁...

    Hibernate Annotation笔记

    通过以上步骤,我们可以看到使用Hibernate Annotation能够显著简化Hibernate的配置工作,使得开发过程更加高效和简洁。此外,它还提高了代码的可读性和可维护性,是现代Java应用程序中持久层设计的一个很好的选择。

    hibernate-annotation

    而Hibernate注解则是其在ORM(对象关系映射)领域的进一步进化,它允许开发者将元数据直接嵌入到Java类和属性的声明中,从而避免了XML配置文件的繁琐。本篇将详细阐述Hibernate注解的相关知识。 一、Hibernate注解...

    hibernate annotation 3.40

    在Hibernate 3.4.0版本中,Annotation的引入极大地简化了对象关系映射(ORM)的过程,使得开发者无需编写大量的XML配置文件,而是直接在Java实体类上使用注解进行数据映射。这一改变提高了开发效率,增强了代码的...

    Hibernate distribution and annotation

    1. **配置与实体管理**: Hibernate通过`hibernate.cfg.xml`配置文件来设置数据库连接、缓存策略等。同时,它使用@Entity注解标识Java类为数据库实体。 2. **映射机制**: Hibernate支持XML映射文件(hbm.xml)和...

    hibernate-Annotation.jar

    在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...

    hibernate annotation学习文档

    ### Hibernate Annotation 学习知识点详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 巨具,它极大地简化了 Java 应用程序与数据库之间的交互过程。Hibernate 支持多种注解(Annotation),使得...

    Hibernate Annotation 学习笔记

    Annotation 在 Hibernate 中扮演着关键角色,它们为数据库对象提供了元数据,使得无需XML配置就能实现数据持久化。本笔记将深入探讨Hibernate Annotation的相关知识点。 1. **实体类与@Entity** - `@Entity` 注解...

    hibernate-annotation 所需要的jar包

    3. **Hibernate Annotation**: Hibernate的注解是在Java类和属性上添加元数据的方式,它替代了传统的Hibernate XML配置文件。通过注解,可以在实体类和属性上直接定义数据库映射,如@Entity表示一个数据库表,@Table...

    hibernate 中文文档 and _annotation.chm

    《Hibernate中文文档与Annotation》 Hibernate是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。Hibernate允许开发人员将Java对象模型与数据库表进行映射,从而避免了传统的JDBC...

    hibernate_annotation_中文帮助文档

    系统配置涉及环境变量设置,如JDBC驱动,以及Hibernate的配置文件(如`hibernate.cfg.xml`)。 2. **实体Bean映射** - **EJB3注解**:实体Bean是ORM的核心,EJB3注解提供了在Java类上直接声明数据库映射的方法。 ...

Global site tag (gtag.js) - Google Analytics