星空网 > 软件开发 > ASP.net

Hibernate之映射文件中索引及约束的使用

1、添加索引:

在一对多的关系中,在多的一方会产生一个外键,这个外键没有自动 添加索引,当存在从一的一端产生对多的一端的查询时,有可能会在多的一端造成全表查询问题,数据量巨大时会产生严重的性能问题。可以在多一端的外键上添加 索引(index="user_group_id_idx")来解决这个问题。例如: 

Hibernate之映射文件中索引及约束的使用Hibernate之映射文件中索引及约束的使用
<??> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjsxt.hibernate.User" table="t_user"> <id name="id"> <generator class="sequence"> <param name="sequence">user_id_seq</param> </generator> </id> <property name="name"></property> <many-to-one name="group" column="group_id" index="user_group_id_idx"></many-to-one> </class> </hibernate-mapping> 

View Code

发出的SQL语句为: 

Hibernate之映射文件中索引及约束的使用Hibernate之映射文件中索引及约束的使用
create index user_group_id_idx on t_user (group_id) 

View Code

2、添加约束:

id会产生主键约束,同时会建立索引;key会产生外键,但默认不会建立索引;在class或set上通过使用check关键字来产生 check约束(例如:<set name="emailAddresses" table="t_email" check="email_address like '%@%'">);单个字段的唯一键通过(unique="true")设置,多个字段联合唯一通过在需要联合的字段上添加(unique- key="name")来实现,其中对联合唯一索引的unique-key的值必须相同;通过not-null="true"来设置字段的非空约束。 

Hibernate之映射文件中索引及约束的使用Hibernate之映射文件中索引及约束的使用
<??> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="events.Person" table="t_person"> <id name="id" column="person_id"> <generator class="sequence"> <param name="sequence">person_id_seq</param> </generator> </id> <property name="age"></property> <property name="firstName" unique-key="name"></property> <property name="lastName" unique-key="name"></property> <set name="emailAddresses" table="t_email" check="email_address like '%@%'"> <key column="person_id"></key> <element column="email_address" type="string"></element> </set> <set name="events" table="t_person_event"> <key column="person_id"></key> <many-to-many class="events.Event" column="event_id"></many-to-many> </set> </class> </hibernate-mapping> 

View Code

产生的SQL语句是: 

Hibernate之映射文件中索引及约束的使用Hibernate之映射文件中索引及约束的使用
 drop table t_email cascade constraints   drop table t_event cascade constraints   drop table t_person cascade constraints   drop table t_person_event cascade constraints   drop sequence event_id_seq   drop sequence person_id_seq   create table t_email ( person_id number(19,0) not null, email_address varchar2(255 char), check (email_address like '%@%') )   create table t_event ( event_id number(19,0) not null, title varchar2(255 char), event_date date, primary key (event_id) )   create table t_person ( person_id number(19,0) not null, age number(10,0), firstName varchar2(255 char), lastName varchar2(255 char), primary key (person_id), unique (firstName, lastName) )   create table t_person_event ( event_id number(19,0) not null, person_id number(19,0) not null, primary key (person_id, event_id) )   alter table t_email add constraint FKA03188117708282F foreign key (person_id) references t_person   alter table t_person_event add constraint FKC7F6A31B7708282F foreign key (person_id) references t_person   alter table t_person_event add constraint FKC7F6A31BF96D1A45 foreign key (event_id) references t_event   create sequence event_id_seq   create sequence person_id_seq

View Code

 




原标题:Hibernate之映射文件中索引及约束的使用

关键词:Hibernate

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

速卖通双十一阿联酋战绩探究 TOP产品有哪些?:https://www.ikjzd.com/articles/136188
【亚马逊】这样做出的产品图片,卖家销量下降50%:https://www.ikjzd.com/articles/136189
美国宠物用品电商公司Petco拟在纳斯达克上市:https://www.ikjzd.com/articles/136190
eBay:卖家须上传更新MSDS 完成带电资质认证:https://www.ikjzd.com/articles/136191
进行亚马逊直播(Amazon Live)前的准备工作:https://www.ikjzd.com/articles/136192
亚马逊滞留库存太多?教你 6 招清库小技巧:https://www.ikjzd.com/articles/136193
37号文今后是否会更新?一文详解关键信息 :https://www.kjdsnews.com/a/1836441.html
探讨内地人开设香港账户的可行性 :https://www.kjdsnews.com/a/1836442.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流