`
ttitfly
  • 浏览: 622292 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate总结

阅读更多
1.key是指外键
比如:
<hibernate-mapping>   
    <class name="com.domain.Classes" table="classes" >   
        <id name="id" type="java.lang.Integer">   
            <column name="id" />   
            <generator class="native" />   
        </id>   
        <property name="name" type="java.lang.String">   
            <column name="name" not-null="true" />   
        </property>   
        <bag name="studentNames" table="student">   
            <!-- key对应的都是外键,其意思也就是拿该外键和<id>的主键值匹配,取集合 -->   
            <key column="classId"></key>   
            <element column="name" type="string"></element>   
        </bag>   
           
    </class>   
</hibernate-mapping>


2.many开头的是持有外键
<hibernate-mapping>
    <class name="com.domain.Computer" table="computer" catalog="onetoone">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
       
        <property name="name" type="java.lang.String">
            <column name="name" not-null="true" />
        </property>
        
         <!-- many开头的是代表该表持有外键 -->
        <many-to-one  name="student" class="com.domain.Student"  unique="true">
            <column name="student_id" />
        </many-to-one>
    </class>
</hibernate-mapping>


3.在many-to-many里,由inverse控制得到主动权后,在 save的对象赋值的时候,不需要双向赋值,只

需要给掌握主动权的对象赋值即可。没有inverse的(比如one-to-one里),需要给双方都赋值,比如


Session session = HibernateSessionFactory.getSession();
		
		Teacher teacher1 = new Teacher();
		teacher1.setName("teacher1");
		
		Teacher teacher2 = new Teacher();
		teacher2.setName("teacher2");
		
		Teacher teacher3 = new Teacher();
		teacher3.setName("teacher3");
		
		Student student1 = new Student();
		student1.setName("student1");
		
		Student student2 = new Student();
		student2.setName("student2");
		//student1.getTeachers().add(teacher1);student1.getTeachers().add

(teacher2);student2.getTeachers().add(teacher1);这几句代码可以不要,因为Teacher掌握主动权

。所以下面几句代码给注释掉了
//		//学生一有2个老师
//		student1.getTeachers().add(teacher1);
//		student1.getTeachers().add(teacher2);
//		
//		//学生二有一个老师
//		student2.getTeachers().add(teacher1);
		
		//因为老师是inverse="false" ,老师掌握主动权
		//第一个老师有2个学生
		teacher1.getStudents().add(student1);
		teacher1.getStudents().add(student2);
		
		//第二个老师有一个学生
		teacher2.getStudents().add(student1);
		
		session.saveOrUpdate(teacher1);
		session.saveOrUpdate(teacher2);
		session.beginTransaction().commit();
		session.close();


4.<one-to-one><one-to-many><many-to-many>都没有 invsere属性,因为inverse属性的意思是是否为

虚的,比如:invere="true"就是表示该表的操作不会影响到关系表。
比如one-to-one中,通过关系表实现

通过关系表实现:
DROP TABLE IF EXISTS `st`;
create table stu_com(
	stu_id int not null,
	com_id int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

<!--optional="true"的意思是只有当stu_id 和 com_id 都不为空时才在关系表里插入。这样也会插入

2遍,所以需要inverse="true"把一方设置为虚的。即不让插入到关系表中-->
<join table="stu-com" optional="true" inverse="true">
	<key column="com_id"/>
	<many-to-one name="student" column="stu_id" unique="true"/>
</join>


分享到:
评论

相关推荐

    SSH之Hibernate总结

    SSH之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...

    Hibernate总结

    【Hibernate总结】 Hibernate是一个强大的Java持久化框架,它封装了JDBC,负责对象持久化,作为应用程序和数据库之间的中间层。映射关系是通过配置文件维护的,这使得Hibernate能够与不同的数据库系统灵活地交互。 ...

    hibernate总结练习源码

    本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...

    Hibernate总结(三)

    《Hibernate总结(三)》 在本篇关于Hibernate的总结中,我们将深入探讨这个流行的Java对象关系映射(ORM)框架的关键概念和技术细节。Hibernate作为一款强大的工具,它极大地简化了Java开发人员处理数据库操作的工作...

    hibernate 总结

    标题:hibernate总结 描述:此文档是个人在使用Hibernate框架进行数据持久化操作时的经验积累和技巧分享。文档全面覆盖了Hibernate的各种配置方法、数据映射技术、集合类映射、对象关系映射(ORM)基础以及与J2EE...

    学习HIbernate总结

    ### 学习Hibernate总结 #### 一、简介与配置 Hibernate是Java环境下一款优秀的对象关系映射(ORM)框架,它极大地简化了数据访问层(DAL)的编码工作,允许开发人员将主要精力集中在业务逻辑上而不是繁琐的SQL语句...

    jdbc_Hibernate总结

    1. 引入Hibernate所需的JAR文件,例如在Eclipse中创建Hibernate类库。 2. 创建配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、日志格式等。 3. 设计实体类,对应数据库表中的记录,并提供对应的getter和...

    hibernate 总结 附 项目

    **总结项目实战** 在实际项目中,使用 Hibernate 可以简化数据库操作,提高开发效率。常见的应用场景包括用户管理、订单处理、商品分类等。项目实践中要注意合理设计实体关系,避免 N+1 查询问题,利用缓存优化性能...

    Hibernate总结——课程管理

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对...

    jdbc和hibernate总结

    总结来说,JDBC是基础的数据库访问技术,适合进行简单的数据库操作,而Hibernate则通过提供面向对象的接口,极大地简化了数据库操作,尤其适用于复杂的业务场景。两者结合使用,可以让开发者在享受面向对象编程便利...

    Hibernate4总结文档

    《Hibernate4总结文档》 Hibernate4作为一款强大的Java对象关系映射框架,简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本文将深入探讨Hibernate4的配置和使用,帮助开发者更好地理解...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...

Global site tag (gtag.js) - Google Analytics