Hibernate,一对多,多对一

Hibernate环境的配置

hibernate.cfg.xml的配置

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
       <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">tiger</property>

        <!-- JDBC connection pool (use the built-in) -->
       <!--  <property name="connection.pool_size">10</property> -->

        <!-- 数据库连接最小连接数 -->
        <property name="c3p0.min_size">10</property>
        <!-- 数据库连接最大连接数 -->
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.timeout">3000</property>
        <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property> 

        <!-- SQL dialect 方言-->
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>

        <!-- Echo all executed SQL to stdout(控制台) -->
        <property name="show_sql">true</property>

        <!-- 格式化sql语句输出查看 -->
        <property name="format_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property> 

        <!-- 实体类对应的映射文件 -->
        <mapping resource="com/zhiyou/entity/User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

每一个实体类对应一个映射文件

如User类,拥有username,password,role属性

对应的映射文件User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.zhiyou.entity">
    <!-- class:指定实体类   name:实体类名称    table:数据库中的表名称 -->
    <class name="User" table="user1">
    <!-- id主键 -->
        <id name="name" column="user_name">
               <!-- 主键生成策略    assigned:用户自己指定主键
                sequence:指定oracle数据库的序列
                uuid:产生32位字符串
                native:自动根据数据库选择主键生成策略
                -->
           <!--  <generator class="sequence">
            参数名
            <param name="sequence">seq_test</param>
            </generator> -->

            <generator class="native"></generator>

        </id>
        <property name="pwd" column="password"/>
        <property name="role" column="role"/>
    </class>

</hibernate-mapping>

需要注意的是,实体类的映射文件需要在hibernate.cfg.xml进行配置。

一对多

原文地址:https://www.cnblogs.com/sonder/p/9175438.html

时间: 2024-08-14 09:33:48

Hibernate,一对多,多对一的相关文章

hibernate 一对多|多对一

一对多:(一个客户对应多个联系人) 客户实体:Customer.java package cn.future.domain; import java.util.HashSet; import java.util.Set; public class Customer { /* * CREATE TABLE `cst_customer` ( `cust_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` VAR

Hibernate一对多(多对一)关联关系

上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对多和多对一是一样的, 一对多反过来想就是多对一了. Hibernate的一对多可分为: 1. 单向一对多. 2. 双向一对多. OneByOne 一: 单向一对多 准备工作: 咱们以 客户(Customer) 和 订单(Order) 的例子来说, 一个客户可以有多个订单, 但是一个订单只能属于一个客

SSH学习六 Hibernate 一对多 多对一的双向映射

其实就是前面两个的结合 Student里面有Teacher类作为成员,映射文件加上对teacherid的外键参照 Teacher里面有Student的Set,映射文件有set标签,里面声明one-to-many以及key 结合http://blog.csdn.net/u011026968/article/details/47154059 http://blog.csdn.net/u011026968/article/details/47156979 即可 版权声明:本文为博主原创文章,未经博主允

框架 day32 Hibernate,一级缓存,关联关系映射(一对多,多对多)

一级缓存 概念 *在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java集合构成了Session缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期 *当session的save()方法持久化一个对象时,该对象被载入缓存, 以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中. 当试图get(). load()对象时,会判断缓存中是否存在该对象,有则返回,此时不查询数据库.没有再查询数据库 *Session 能够在

Hibernate一对多、多对一关联

一对多.多对一关联:在多方加外键 示例:Group(一方)和User(多方),一个Group可以有多个User,每个User只能属于一个Group   多对一单向关联 在User(多方)中建Group(一方)对象,并添加@ManyToOne注解 1.建Group实体类和User实体类,添加Annotation注解,如下 @Entity @Table(name="_group") //group在MySQL中是关键字,不能直接做表名 public class Group { privat

Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; private String userName; // 一个用户,对应的多个地址 private Set<String> address; private List<String> addressList = new ArrayList<String>(); //private Str

Hibernate(六)一对多映射(多对一)

一.Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的. 但在Hibernater中持久化的之间的映射关系,不是通外键建立关联,而是通过属性.主要有以下几种 一对一, 一对多(多对一) 多对多 关联方向: 单向关联 双向关联 二.一对多单向关联关系 2.1.建立数据库表 班级表,和学生表,学生生通过班级表中的,班级编号为外键 --班级表 create table grade ( gid number pr

Hibernate 单向/双向 多对多

Hibernate的多对多从单向和双向来分就是单向多对多和双向多对多两种. Hibernate的双向多对多 先来说一下什么是多对多的关系,举个例子,老师和学生,老师有语文老师,数学老师,英语老师等等,学生可以是1班的学生也可以是2班的学生,对于每个学生而言,他有多个老师给他讲课,而对于每一个老师而言,他要授课的学生也有很多,像这样的情况就可以描述成多对多了.即两个表之间,每一个表中的记录都对应另一个表的部分或全部记录的集合,这种情况就是多对多关系,而单向多对多与双向多对多的不同在于单向只是一方的

hibernate 一对多关联关系(详细分析)

在领域模型中, 类与类之间最普遍的关系就是关联关系. 在 UML 中, 关联是有方向的. 以 Customer 和 Order 为例: 一个用户能发出多个订单, 而一个订单只能属于一个客户. 从 Order 到 Customer 的关联是多对一关联; 而从 Customer 到 Order 是一对多关联 单向关联 双向关联 单向 n-1 单向 n-1 关联只需从 n 的一端可以访问 1 的一端 域模型: 从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Cus

Hibernate一对多操作

--------------------siwuxie095 Hibernate 一对多操作 以客户和联系人为例,客户是一,联系人是多 即 一个客户里面有多个联系人,一个联系人只能属于一个客户 注意:这里的客户是公司级的,即 公司,联系人 即 公司里的员工 (一)一对多映射配置 第一步:创建两个实体类,客户和联系人 第二步:让两个实体类之间互相表示 (1)在客户实体类中表示多个联系人 (2)在联系人实体类中表示所属客户 第三步:配置映射关系 「一般一个实体类对应一个映射配置文件」 (1)配置基本