`

hibernate 之M:N 配置方法

    博客分类:
  • JAVA
阅读更多



public class Role implements Serializable {

private int rid ;

private String name;

private Set<Power> powers;

//get set 方法

}

Role.hbm.xml

<hibernate-mapping package="com.hw.dao">

<class name="Role" table="ROLE">

<id name="rid">

<column name="RID"></column>

</id>

<property name="name">

<column name="NAME"></column>

</property>

<set name="powers" table="ROLE_POWER" cascade="all">

<key>

<column name="RID"></column>

</key>

<many-to-many class="Power">

<column name="lid"></column>

</many-to-many>

</set>

</class>

</hibernate-mapping>  


Power.java 文件

public class Power implements Serializable {

private int lid;

private String name;

private Set<Role> roles;

//getset方法

}

Power.hbm.xml

<hibernate-mapping package="com.hw.dao">

<class name="Power">

<id name="lid" column="LID"></id>

<property name="name" column="NAME"></property>

<set name="roles" table="ROLE_POWER" cascade="all">

<key>

<column name="lid"></column>

</key>

<many-to-many class="Role">

<column name="rid"></column>

</many-to-many>

</set>

</class>

</hibernate-mapping>        

测试类

package com.hw.dao;


import java.util.HashSet;

import java.util.List;

import java.util.Set;


import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;


public class test {

public static void main(String[] args) {

Configuration conf = new Configuration().configure();

SessionFactory sf= conf.buildSessionFactory();

Session s= sf.openSession();


s.beginTransaction();

Role role= new Role();

role.setRid(1);

role.setName("admins");

Set<Power> powerset= new HashSet<Power>();

Power poser = new Power();

poser.setLid(1);

poser.setName("adds1");

powerset.add(poser);


role.setPowers(powerset);

System.out.println(role.getRid()+role.getName());

s.save(role);

s.getTransaction().commit(); 

// String hql="from Role";

// Query query = s.createQuery(hql);

// List<Role> list = query.list();

// for (Role role : list) {

// System.out.println(role.getRid()+" "+role.getName());

// Set<Power> power =role.getPowers();  

// for (Power power2 : power) {

// System.out.println(power2.getLid()+" "+power2.getName());

// }

// }

}

}

分享到:
评论

相关推荐

    .hibernate 框架介绍

    Hibernate支持1:1、1:n、n:m等多种关联映射关系,可以有效地管理复杂的数据关系。 在Hibernate框架中,ORM模型简化了数据库查询的过程,开发者可以利用ORM框架提供的查询接口,以对象的方式操作数据,而无需深入...

    Hibernate数据关联技术笔记

    在Java的持久化框架Hibernate中,数据关联技术是其核心特性之一,它使得对象关系映射(ORM)更加灵活和高效。本笔记将深入探讨Hibernate中的数据关联,特别是1:1、1:N和M:N这三种关联关系,以及如何通过POJO类和XML...

    hibernate结构框架及组要实现类的深入分析

    `.hbm.xml` 文件是 Hibernate 对象-关系映射的具体描述,它定义了 Java 类与数据库表之间的映射关系,包括字段的映射、关联关系(1:1, 1:N, N:1, M:N)等。例如,你可以通过 `&lt;one-to-many&gt;` 或 `&lt;many-to-one&gt;` ...

    Hibernate3 学习笔记.ppt

    通过元数据(如XML或注解),开发者可以定义对象类和数据库表之间的映射关系,包括基本类型的字段对应表的列,类的属性与表的外键,以及1:1、1:n、n:m的关联关系和继承结构。 【二、Hibernate入门】 Hibernate是一...

    hibernate中的相关组件的介绍

    log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n ``` #### 六、数据库操作 在Hibernate中进行基本的数据库操作(CRUD)非常直观且高效。 - **添加记录**: ```java ...

    Struts+Spring+Hibernate整合开发详解

    log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} Method:%l%n%m%n ``` 其中: - `%p` 表示日志级别。 - `%d{}` 表示日期格式。 - `%l` 表示类名。 - `%m` 表示消息。 #### 三...

    hibernate

    HQL(Hibernate Query Language)方法 ```java public User getByScreenName(String screenName) { try { return (User) getSession() .createQuery("from User u where u.screenName=:screenName") ....

    HIbernate 教程 资料 培训 学习

    此外,还包括1:1、1:n、n:m的关系映射,以及类表继承等复杂情况。 **二、Hibernate入门** Hibernate是一个优秀的ORM框架,具有开源、成熟、流行的特点,广泛应用于企业级开发。其优势在于提供自定义API,且被JBoss...

    hibernate讲义02.pdf

    log4j.appender.console.layout.ConversionPattern=%-5p(%F:%L)- %m%n ``` - 特定的 Hibernate 日志配置,例如: ```properties log4j.logger.org.hibernate=info log4j.logger.org.hibernate.type=info log4...

    hibernate概述

    - **一对一(1:1)/一对多(1:n)/多对多(n:m)映射**:通过外键或关联表实现不同关系的映射。 - **继承映射**:支持单表继承、具体表继承和类表继承等多种继承方式。 **主键生成策略** Hibernate提供了多种主键...

    Hibernate 培训.pdf

    - 对象之间的关系(如 1:n 或 n:m)通过外键或关联表实现。 - 继承关系可以通过单表继承、具体表继承或类表继承等方式实现。 #### 三、Hibernate 核心接口 ##### 3.1 核心接口图 Hibernate 提供了一组核心接口,...

    hibernate3.3.1接口实现包 slf4j-log4j12-1.5.2

    接下来,通过配置Hibernate的`hibernate.cfg.xml`,设置日志适配器为SLF4J: ```xml &lt;property name="hibernate.show_sql"&gt;true &lt;property name="hibernate.format_sql"&gt;true &lt;property name="hibernate.use_sql_...

    Hibernate中log4j-1.2.16 +slf4j-log4j12-1.5.2

    本文将详细解析" Hibernate中log4j-1.2.16 +slf4j-log4j12-1.5.2 "这个主题,包括其核心组件、配置以及在Hibernate框架中的应用。 首先,`log4j-1.2.16.jar`是Apache Log4j的一个版本,Log4j是一个广泛使用的Java...

    hibernate整合log4j jar包

    log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` 3. **在Hibernate配置中引用SLF4J**:在Hibernate的`hibernate.cfg.xml`配置文件中,设置`use_slf4j_logging`属性为`true`...

    《精通Hibernate》学习-对象关系映射基础.zip

    1. Hibernate概述:Hibernate是Java领域最流行的ORM框架之一,它简化了数据库操作,使得开发者可以专注于业务逻辑而不是底层SQL。通过在Java对象和数据库记录之间建立映射,Hibernate自动处理数据的持久化。 2. ...

    BoneCP数据源记录SQl比hibernate的show sql好用.docx

    总的来说,BoneCP 的 SQL 记录功能之所以优于 Hibernate 的 show_sql,主要是因为它能够提供可执行的、不带占位符的 SQL 语句,这对于理解和优化数据库操作非常有帮助。此外,通过灵活的日志配置,你可以轻松地控制 ...

    hibernat培训资料PPT

    4. **Hibernate映射声明(Mapping Declaration)**:介绍如何定义Java类的持久化,包括使用get/set方法,提供默认构造器,以及如何通过注解或XML配置文件来描述对象和数据库表之间的映射关系。 5. **持久化对象的...

Global site tag (gtag.js) - Google Analytics