`
waitbin
  • 浏览: 10550 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate 单向一对多映射

阅读更多
好久没用j2ee开发呢,昨天写呢一个hibernate的映射,几次出现异常,翻呢一遍书熟悉呢一下才搞定,这里把几种常用的映射放上来,希望大家方便查找:
作者:waitbin
一:hibernate 单向一对多映射 一个team 对应多个student;
(一):hibernate.cfg.xml


    PUBLIC "-//hibernate/hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

       
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">admin</property>
       

       
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
          
               <mapping resource="hibernate/mapping/Team.hbm.xml">
               <mapping resource="hibernate/mapping/Student.hbm.xml">
    </mapping>
   
</mapping>
(二);team.hbm.xml


    "-//hibernate/hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="hibernate.mapping">
    <class table="team" name="Team">
        <id type="java.lang.Integer" column="id" name="id">
            <generator class="identity"></generator>
        </id>
        <property type="java.lang.String" column="name" name="name"></property>
       
            <key column="t_id"></key>
            <one-to-many class="hibernate.mapping.Student">
        </one-to-many>
   
</class>
(三):student.hb,.xml


    "-//hibernate/hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="hibernate.mapping">
        <class table="student" name="Student">
           <id type="java.lang.Integer" column="id" name="id">
                 <generator class="identity"></generator>
           </id>
                 <property type="java.lang.String" column="name" name="name">
         </property>
    </class>

(四)测试类
package hibernate.dao;

import hibernate.mapping.Student;
import hibernate.mapping.Team;

import org.hibernate.Session;
import org.hibernate.Transaction;


public class One_manyDAO {
    public static void main(String[] args) {
        Session session = HibernateSessionFactory.getSession();
        Transaction ts = session.beginTransaction();
        Team t = new Team();
        t.setName("0102class");
        Student s = new Student();
        s.setName("zhangsan");
        t.getStudent().add(s);
        session.save(t);
        ts.commit();

    }
}
(五)HibernateSessionFactory封装呢Session
package hibernate.dao;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/** 
 * Configures and provides access to Hibernate sessions, tied to the 
#  * current thread of execution.  Follows the Thread Local Session 
#  * pattern, see {@link http://hibernate.org/42.html }. 
#  */
public class HibernateSessionFactory {
    /**  
     #      * Location of hibernate.cfg.xml file. 
     #      * Location should be on the classpath as Hibernate uses   
     #      * #resourceAsStream style lookup for its configuration file.  
     #      * The default classpath location of the hibernate config file is  
     #      * in the default package. Use #setConfigFile() to update  
     #      * the location of the configuration file for the current session.    
     #      */
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
    private static final ThreadLocal threadLocal = new ThreadLocal();
    private static Configuration configuration = new Configuration();
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;

    private HibernateSessionFactory() {
    }

    /** 
    #      * Returns the ThreadLocal Session instance.  Lazy initialize 
    #      * the SessionFactory if needed. 
    #      * 
    #      *  @return Session 
    #      *  @throws HibernateException 
    #      */
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

        if (session == null || !session.isOpen()) {
            if (sessionFactory == null) {
                rebuildSessionFactory();
            }
            session = (sessionFactory != null) ? sessionFactory.openSession()
                    : null;
            threadLocal.set(session);
        }

        return session;
    }

    /** 
    #      *  Rebuild hibernate session factory 
    #      * 
    #      */
    public static void rebuildSessionFactory() {
        try {
            configuration.configure(configFile);
            sessionFactory = configuration.buildSessionFactory();
        } catch (Exception e) {
            System.err.println("%%%% Error Creating SessionFactory %%%%");
            e.printStackTrace();
        }
    }

    /** 
    #      *  Close the single hibernate session instance. 
    #      * 
    #      *  @throws HibernateException 
    #      */
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

    /** 
    #      *  return session factory 
    #      * 
    #      */
    public static org.hibernate.SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    /** 
    #      *  return session factory 
    #      * 
    #      *  session factory will be rebuilded in the next call 
    #      */
    public static void setConfigFile(String configFile) {
        HibernateSessionFactory.configFile = configFile;
        sessionFactory = null;
    }

    /** 
    #      *  return hibernate configuration 
    #      * 
    #      */
    public static Configuration getConfiguration() {
        return configuration;
    }

}


<hibernate-configuration><session-factory><hibernate-mapping package="hibernate.mapping"><hibernate-mapping package="hibernate.mapping">
</hibernate-mapping></hibernate-mapping></session-factory></hibernate-configuration></hibernate-mapping></hibernate-mapping></session-factory></hibernate-configuration>
分享到:
评论

相关推荐

    hibernate单向多对多映射(XML版)

    本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...

    hibernate 单向多对多关联映射练习

    以上就是关于Hibernate单向多对多关联映射的基本介绍和实践。实际应用中,还需考虑性能优化、事务管理、懒加载等问题。通过不断的练习和学习,你可以更熟练地掌握这一重要功能,提升项目开发的效率和质量。

    hibernate单向多对多映射(注解版)

    以下是对"hibernate单向多对多映射(注解版)"的详细解释。 首先,我们需要理解多对多关系的概念。在数据库设计中,多对多关系意味着一个实体可以与多个其他实体相关联,反之亦然。例如,学生和课程之间的关系就是多...

    hibernate单向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,单向一对多关联映射是常见的数据关系处理方式,尤其是在处理数据库中的实体类和表之间的关系时。本主题主要关注如何使用注解来实现这种映射。Hibernate通过注解使得对象关系映射...

    Hibernate单向一对多关联映射(XML版)

    在本主题"Hibernate单向一对多关联映射(XML版)"中,我们将深入探讨如何使用XML配置来实现数据库中一个实体类对应多个实体类的关联关系。 在Hibernate中,一对多关联是一种常见的关系映射类型,它反映了数据库中的...

    Hibernate一对多单向关联映射

    本篇主要探讨的是如何在Hibernate中实现一对多的单向关联映射。 一、概念理解 一对多关联意味着一个实体(如部门)可以有多个关联实体(如员工),而反过来,每个员工只属于一个部门。单向关联则表示只有部门知道其...

    Hibernate学习:单向多对一关联 工程

    本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...

    hibernate一对多关联映射(单向关联)

    这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...

    Hibernate双向一对一关联映射(注解版)

    单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但在代码层面则通过注解来表达。 首先,我们需要...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    Hibernate 系列教程 单向一对多

    本教程聚焦于Hibernate中的单向一对多关联映射,这是一个常见的实体关系模型,广泛应用于各种业务场景。 在数据库设计中,一对多关系意味着一个父表记录可以与多个子表记录相关联。例如,一个学生可以有多个课程,...

    hibernate一对多关联映射

    1.1 单向关联:在单向一对多关联中,一个实体类知道另一个实体类,而另一个实体类并不知情。这通常通过在一方添加一个集合属性来实现,该集合包含另一方的实例。例如,`Department`类可能有一组`Employee`对象: ``...

    Hibernate教程11_关系映射之一对多单向关联

    本教程主要探讨的是Hibernate中的一种重要关系映射类型:一对多单向关联。在关系型数据库中,一对多关联是最常见的关系类型,一个实体可以与多个其他实体相关联。在Hibernate中,这种关系可以通过配置XML映射文件或...

    hibernate多对一单向关联关系实现源码

    在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...

    hibernate多对多关联映射(单项关联)

    总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...

    一对多单向和双向映射

    本篇将详细探讨"一对多单向和双向映射"这一主题,结合标签中的"源码"和"工具",我们将深入理解这些概念,并可能涉及到具体的代码实现。 首先,映射是ORM框架的核心,它允许开发者将数据库表与Java类之间的关系进行...

Global site tag (gtag.js) - Google Analytics