如何设计数据库表?
1.
发现领域中的概念,理清领域中的概念,将其映射成表‘
2.
尽量遵循数据库设计范式:
1.
第一范式:有主键,具有原子性,列不可分割;
2.
第二范式:完全依赖,没有部分依赖;
3.
第三范式:没有传递依赖;
3.
主键尽量采用单一主键,避免符合主键,尽量使用没有业务予以的字段作为主键(如, oracle 的 Sequence 来维护一个主键),主键一般建
议使用数值型,会提高检索的效率;
4.
冗余的字段,应该根据需要的具体情况是否加入;
5.
最好加入外键约束
使用Hibernate作为ORM,设计数据库的时候,一般说的是不要选取自然主键(有业务含义的主键)
按常理来论,关联都应该是双向的,确实如此,hibernate 建议用双向关联,在建立表的时候设置表间的联系(通过forigen key关联),在数据设计中表之间多对多的关系,需要新建一个表,存储双方的主键,在hibernate方向工程中就可以自动建立双向关联了。双向关联中联系多对多的关系。
记住在hibernate 实体中存放的是表实体,而不是关系实体。
6.
如果做通用性产品,最好不是使用数据库特性的功能;
7.
如果数据量非常庞大,并且频繁使用相关字段的查询,最好建立索引;
示例
表 product和brand
一个brand对应多个product
在product中游brand的外键 brand_id
hibernate逆向工程后生成hbx
<class name="com.Product" table="product" catalog="shopxx">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="increment" />
</id>
<many-to-one name="brand" class="com.Brand" fetch="select">
<column name="brand_id" length="32" />
</many-to-one>
<property name="createDate" type="java.util.Date">
<column name="createDate" length="19" />
</property>
brand 映射
<class name="com.Brand" table="brand" catalog="shopxx">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="increment" />
</id>
<property name="createDate" type="java.util.Date">
<column name="createDate" length="19" />
</property>
<property name="modifyDate" type="java.util.Date">
<column name="modifyDate" length="19" />
</property>
<property name="introduction" type="java.lang.String">
<column name="introduction" length="65535" />
</property>
<set name="products" inverse="true">
<key>
<column name="brand_id" length="32" />
</key>
<one-to-many class="com.Product" />
</set>
分享到:
相关推荐
在 Hibernate 中,数据库访问接口的设计是至关重要的,因为它提供了与数据库交互的桥梁,简化了传统的 JDBC 编程,提高了开发效率和代码的可维护性。 ### 1. Session 接口 Hibernate 的核心接口是 `Session`,它...
【hibernate动态数据库进化版】是一个关于...这需要开发者深入理解Hibernate的内部工作机制,并具备一定的数据库设计和管理经验。通过这种方式,可以提高代码的复用性和项目的可维护性,同时降低了数据库迁移的成本。
总之,为了实现Hibernate对多数据库的支持,需要精心设计和配置,以确保代码的可移植性,同时兼顾性能和数据一致性。以上各点提供了实现这一目标的基础,但实际项目中可能还需要解决更多特定于数据库的问题。通过...
【精通Hibernate数据库编程】是针对初学者设计的学习资源,旨在帮助快速掌握Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate是Java开发中的一个重要工具,它简化了数据库操作,使得开发者可以更专注于...
【标题】:“Hibernate数据库连接”深入解析 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了与数据库的交互。本篇文章将深入探讨Hibernate的数据库连接机制,帮助开发者理解如何利用...
3. 数据库设计:遵循正常化原则,合理设计数据库表结构。 4. 分页查询:避免一次性加载大量数据,可以使用HQL或Criteria的setFirstResult和setMaxResults方法进行分页。 5. 断言和日志:利用Hibernate的assertions...
在探讨Hibernate中所有数据库方言之前,我们先简要回顾一下Hibernate框架本身。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用与各种关系型数据库进行交互。它提供了强大的功能,如对象持久化、查询...
在IT行业中,数据库管理和高效的读写操作是至关重要的任务,特别是在处理海量数据时。本话题主要探讨了如何利用C#编程语言以及...通过优化代码、数据库设计和服务器配置,可以显著提升读写性能,满足大规模业务的需求。
理解这些类型映射对于优化数据库设计和提高代码效率至关重要。例如,根据数据的实际需求选择合适的类型可以节省存储空间,避免因类型不匹配导致的转换错误,同时也能提高查询效率。在实际开发中,还需要考虑数据库...
综上所述,Hibernate自动生成数据库文件涉及到ORM设计、Hibernate Tools的使用、配置文件的编写、Java注解的理解以及数据库操作的最佳实践等多个方面。掌握这些知识点有助于高效地利用Hibernate进行数据库开发。
方言是Hibernate为了适应不同的数据库而设计的一种抽象层,它负责将Hibernate的标准SQL语句转化为具体数据库能理解的SQL语法。在描述中提到了三个不同版本的Hibernate方言包:oscarHibernate36.jar,oscarHibernate4...
这个压缩包中的HibernateTest项目是一个综合性的学习资源,涵盖了Hibernate与Oracle数据库的集成、JDBC连接配置、实体类设计、DAO实现以及测试实践。通过这个实例,开发者可以深入了解Hibernate在实际项目中的应用,...
综上所述,这个毕业设计项目是一个典型的Java Web应用实例,通过整合JSP、Struts和Hibernate等技术,实现了基于Oracle数据库的新闻管理功能。它不仅锻炼了开发者在实际项目中的应用能力,也展示了如何构建一个高效、...
《Hibernate动态数据库改进版》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇文章将深入探讨如何利用Hibernate实现动态数据库操作,并结合具体的实例,介绍一个...
此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...
2. **设计模式**:模仿Hibernate,我们需要理解其背后的设计模式,如工厂模式(用于创建数据库连接)、单例模式(控制数据库连接的数量)、代理模式(处理延迟加载)等。 3. **JDBC基础**:尽管我们要模仿Hibernate...
本项目"maven搭建spring4+struts2+hibernate4项目demo含数据库"是一个典型的企业级应用开发实例,它利用Maven作为构建工具,Spring 4作为核心框架,Struts2作为控制器层,Hibernate4作为持久层,同时包含了数据库的...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在某些复杂的应用场景下,我们可能需要同时连接并操作多个不同的数据库,例如,一个用于存储主业务...