zoukankan      html  css  js  c++  java
  • Hibernate中的集合映射

    1.定义实体

    public class User {
        private int userId;
        private String userName;
        private Set<String> address;
        set...
        get...
    }

    2.写映射文件

    <?xml version="1.0" encoding="utf-8" ?>
    <!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.juaner.hibernate.address">
        <class name="User" table="t_user">
            <id name="userId" column="u_id">
                <generator class="native"/>
            </id>
            <property name="userName" column="u_name"/>
            <set name="address" table="t_address">
                <!--外键字段-->
                <key column="u_id"></key>
                <!--其他字段,没有bean与其对应,必须制定type-->
                <element column="address" type="string"></element>
            </set>
            <!--list有先后顺序,list-index制定排序列的名称-->
            <!--<list name="addressList" table="t_addresslist">-->
                <!--<key column="u_id"></key>-->
                <!--<list-index column="idx"></list-index>-->
                <!--<element column="address" type="string"></element>-->
            <!--</list>-->
        </class>
    
    </hibernate-mapping>

    3.保存数据

        @Test
        public void testSave()throws Exception{
            Session session = sf.openSession();
            session.beginTransaction();
    
            Set<String> address = new HashSet<String>();
            address.add("广州");
            address.add("北京");
    
            User user = new User();
            user.setUserName("jack");
            user.setAddress(address);
            session.save(user);
            session.getTransaction().commit();
            session.close();
        }

    4.结果

      t_user表:

      

      t_address表:

        

    5.获取数据

        @Test
        public void test3()throws Exception{
            Session session = sf.openSession();
            session.beginTransaction();
    
            User user = (User) session.get(User.class, 1);
            System.out.println(user);
            //当查询用户,同时可以获取用户关联的list集合的数据
            //当使用到集合数据时,才向数据库发送执行的sql语句(懒加载,可以提高执行效率)
            System.out.println(user.getAddressList());
    
            session.getTransaction().commit();
            session.close();
        }
  • 相关阅读:
    JMS(面向消息中间件)
    ActiveMQ消息中间件知识汇总
    linux安装mysql常见命令
    结果集耗尽时,检查是否关闭结果集时常用sql
    Spring注解驱动开发之事务概念
    nginx 基础
    HTTP原理
    MYSQL----cmake 数据库出错
    php安装Phalcon模块
    docker报错 Failed to start Docker Application Container Engine.
  • 原文地址:https://www.cnblogs.com/juaner767/p/5564761.html
Copyright © 2011-2022 走看看