hibernate的联合主键怎么设置?inverse 设置成false 对sql语句有什么影响
首先需要建立一个主键类:bqMy
public class SCMapping implements Serializable{B\
private Integer sno; //学号A4
private Integer cno; //课程号MC_dS
private Integer grade; //成绩60
©www.java125.cn WuH
...F*o
}©www.java125.cn G&$tZ=
©www.java125.cn m*)
使用映射文件映射联合主键时,持久化类必须满足三个条件:M6gy?
1.实现java.io.Serializable接口;:I
2.覆盖hashCode()方法;p
3.覆盖equals()方法。S{#<
©www.java125.cn b
接着写映射文件:?8Lg
<hibernate-mapping auto-import="falst">+RCA&x
<class name="com.tarena.SCMapping" table="scmapping" catalog="joblog">T?vP#}
<composite-id>y\}
<key-property name="sno" type="integer">.8;OY
<column name="Sno" />/Y&4u
</key-property>w]0M
<key-property name="cno" type="integer">yt5
<column name="Cno" />q.
</key-property>o
</composite-id>#Uq
©www.java125.cn `s>
<property name="grade" type="integer">YXT
<column name="Grede"/>ZY\b5
</property>PS!
©www.java125.cn N/o'
</class>i
</hibernate-mapping>J)
©www.java125.cn mdu
然后调用Hibernae Api测试。nkc36?
©www.java125.cn FE)@q4
------------------------------umNTU:
关于inverse 设置成false 对sql语句有什么影响:8Ie
inverse属性默认是false,就是说关系的两端都来维护关系。@Pi
比如Student和Teacher是多对多关系,用一个中间表TeacherStudent维护。Gp)i
如果Student这边inverse="true", 那么关系由另一端Teacher维护,就是说当插入Student时,不会操作TeacherStudent表(中间表)。只有Teacher插入或删除时才会触发对中间表的操作。|xH1[
所以两边都inverse="true"是不对的,会导致任何操作都不触发对中间表的影响;MFP
当两边都inverse="false" 或默认时,会导致在中间表中插入两次关系。
分享到:
相关推荐
Hibernate通过ORM机制将Java对象与数据库表进行对应,使得开发者可以在Java代码中操作对象,而无需直接编写SQL语句。这种抽象层简化了数据访问逻辑,并提高了开发效率。 二、实体关联 在Hibernate中,实体间的关系...
- **一对多**:假设有一个`Department`部门和多个`Employee`员工的关系,`inverse`属性通常放在`Employee`的映射文件中,并且设置为`false`。这意味着员工表负责维护与部门之间的关联关系。 - **多对多**:例如,...
这些工具通常会根据`inverse`属性生成相应的SQL语句,因此理解这一特性有助于避免由工具生成的代码产生错误。 6. **最佳实践**: - 对于经常变动的一方,如在一个部门中频繁添加或删除员工,应将`inverse`设为`...
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库模型相匹配的方法,使得开发人员能够用面向对象的方式操作数据库,而无需编写复杂的SQL语句。 ### 集合映射:...
传统的数据库编程需要在代码中直接编写SQL语句,而Hibernate通过提供一个自动化的映射方案,使得开发者能够用面向对象的方式处理数据,无需手动编写SQL语句。Hibernate的核心优势在于它能够简化数据访问层的复杂性,...
例如,你可以指定数据库方言(dialect),用于生成符合特定数据库语法的SQL语句;配置数据源,如JDBC连接信息;设置缓存策略;以及定义`.hbm.xml`文件的路径等。 **2. 映射文件 `.hbm.xml`** `.hbm.xml` 文件是 ...
具体来说,Hibernate会生成并执行一条SQL语句来获取所有与User关联的Address对象,并将它们填充到一个自定义的集合对象中。这里需要注意的是,Hibernate提供的自定义集合类(如`net.sf.hibernate.collection.Set`)...
Hibernate是一个开源的Java ORM(对象关系映射)框架,它简化了数据库操作,使得开发者能够用面向对象的方式来处理数据库事务,而无需过多关注SQL语句的编写。Hibernate通过XML或注解方式将Java类和数据库表进行映射...
在 Hibernate 中,主键的生成有多种策略,如 hilo、seqhilo、increment、identity 和 native。hilo 和 seqhilo 使用 hi/lo 算法,适用于需要高效主键生成的情况。increment 在单个应用实例内递增主键,identity 利用...
- 在开发和测试阶段应设置为`true`,以便查看生成的SQL语句。 - 在发布阶段应设置为`false`,以提高性能并减少日志输出。 ### 映射一对多双向关联关系时设置SET元素 - 应在`set`元素中设置`cascade`属性,用于级联...
C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 运行XDoclet工具 附录D 发布和运行netstore应用 D.1 运行netstore所需的软件 D.2 netstore应用的目录结构 D.3 安装SAMPLEDB...
- **where**: 允许添加额外的WHERE条件到SQL语句中。 - **persister**: 自定义持久化策略,可以通过实现`org.hibernate.persister.entity.EntityPersister`接口来扩展。 #### 3. ID节点定义 `id`节点负责处理主键...
- 数据库脚本,创建区和街道相关表的SQL语句。 - 测试类或者服务类,用于演示如何使用Hibernate进行数据操作,包括区和街道的增删改查,以及cascade和inverse属性的实际应用。 通过学习这个项目,开发者不仅可以...
- **hibernate.cfg.xml: format_sql**:设置为`true`可以使打印出来的SQL语句格式更清晰。 - **表名和类名不同,对表名进行配置**:在映射文件或注解中指定表名。 - **字段名和属性相同**:默认情况下,Hibernate会...
4. `<property>`元素的`dynamic-insert`和`dynamic-update`属性:这两个属性用于优化SQL语句的生成。`dynamic-insert="true"`表示在保存对象时,只有非空字段才会被包含在`insert`语句中,而`dynamic-update="true"`...
Hibernate 是一个强大的Java持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句即可实现对象与关系数据库之间的映射。这个文档将带你步入Hibernate的世界,了解其基本概念和核心功能。 ### 一、...
通过使用Hibernate,开发人员能够以面向对象的方式处理数据库操作,无需直接编写SQL语句,从而极大地提高了开发效率和代码的可维护性。 ### 文档结构与内容概览 文档分为多个章节,覆盖了Hibernate从入门到精通所...