Hibernate技术应用随笔--关联关系建立
来源:互联网 发布:文玩属于哪个淘宝类目 编辑:程序博客网 时间:2024/06/15 08:59
前些时候写了篇Hibernate的基本原理与技术实现,现在就来说说hibernate里头一些常用的技术应用,欢迎吐槽!
一、对象映射,针对一个实体,通过hibernate 建立与关系数据库的映射关联,有两种方式。
1)、一个实体Article.java ,可以建立一个单独映射文件 Article.hbm.xml,Hibernate的基本原理一文中已有列子,可自行查看。
package com.hibernate.test; //读取 *.cfg.xml文件生成数据库表 import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ExportDB{ public static void main(String[]args){ //默认读取hibernate.cfg.xml文件 Configuration cfg = new Configuration().configure(); //根据读取到的配置文件在数据库中完成建表 SchemaExport export = new SchemaExport(cfg); export.create(true, true); } }
2)、通过给给实体添加注解的方式,达到建立映射的目的。
package com.hibernate.test; //根据实体类中的注解配置,生成数据库表import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ExportDB{ public static void main(String[]args){ //默认读取hibernate.cfg.xml文件 Configuration cfg = new AnnotationConfiguration().configure(); SchemaExport export = new SchemaExport(cfg); export.create(true, true); } }注意:hibernate 4.0 之后AnnotationConfiguration给丢弃了,增加了 ServiceRegistry接口;
Hibernate4.1已经可以自动建表,所以开发时只需要在实体中配置好注解就OK。不需要考虑怎么建表。不需要提前建立 ExportDB 工具去提起建表。
配置注解的实体:详细的注解使用,就得各位看官仔细去看相关文档了Configuration cfg = new Configuration();ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();SessionFactory sf = cfg.configure().buildSessionFactory(serviceRegistry);
/** * 系统用户扩展信息 * * $Autuor$ */@Entity@Table(name = "ERP_SYSTEM_ACCOUNT_EXTENSION")//注解数据库中的表名public class AccountExtension { /** * 数据权限级别. */ private Integer dataLevel; @Column(name = "F_DATA_LEVEL")//注解对应数据库中的字段名 public Integer getDataLevel() { return this.dataLevel; } public void setDataLevel(final Integer dataLevel) { this.dataLevel = dataLevel; }}
二、对象关联映射
1)、一对多,多对一 : CommodityInfo( 一对多 ) CommoditySubInfo,实现方式分两种(实体注解,配置 *.hbm.xm 文件l)
——————————————————————————————————
CommodityInfo实体中的注解:主键CommodityInfo_id
@OneToMany(mappedBy = "commodityInfo") public List<CommoditySubInfo> getCommoditySubInfo() { return commoditySubInfo; } public void setCommoditySubInfo (List<CommoditySubInfo> commoditySubInfo) { this.commoditySubInfo = commoditySubInfo; }CommoditySubInfo实体中的注解:主键 CommoditySubInfo_id
@ManyToOne @JoinColumn(name = "F_COMMODITY_INFO" ) public CommodityInfo getCommodityInfo() { return commodityInfo; } public void setCommodityInfo(CommodityInfo commodityInfo) { this.commodityInfo = commodityInfo; }
在注解中 mappedBy = "commodityInfo" 表示所在该表为从表,关系的维护在 commodityInfo元素所在的 CommoditySubInfo 表;
在数据库中的sql 语句体现:在CommoditySubInfo 表中建立了一个外键 F_COMMODITY_INFO,用于关联到 CommodityInfo表的主键 CommodityInfo_id
————————————————————————————————
CommodityInfo.hbm.xml 文件
<set name="commoditySubInfo" inverse="true" cascade="all"> <key column="CommoditySubInfo_id"></key> <one-to-many class="com.bean.CommoditySubInfo"></one-to-many></set>
CommoditySubInfo.hbm.cml 文件
<many-to-one name="commodityInfo" class="com.bean.CommodityInfo" column="CommodityInfo_id" not-null="true" cascade="all"></many-to-one>在配置中:name表示在该表中的元素
以上两种方式都可以建立一对多的关系
1 0
- Hibernate技术应用随笔--关联关系建立
- Hibernate 建立一对多双向关联关系
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Hibernate学习随笔-----关系映射(3)单向1-N关联
- Hibernate学习随笔-----关系映射(4)单向N-N关联
- Hibernate建立多对一的单向关联关系
- Hibernate 建立双向多对多关联关系
- Hibernate关联关系
- Hibernate中的关联关系
- Hibernate自关联关系
- hibernate关联关系
- hibernate 关联关系配置
- Hibernate关联关系
- hibernate 关联关系
- Hibernate 关联关系
- Hibernate关联关系
- hibernate关联关系映射
- Hibernate关联关系配置
- linux服务器上定时备份 mysql 数据库
- Android中的Notification直接实例化方法deprecated的解决
- 成绩排名
- 海量数据搜索、查询
- com.edb.util.PSQLException: FATAL: role "主机名" does not exist
- Hibernate技术应用随笔--关联关系建立
- HTML笔记(1)
- 自定义顺序存储结构线性表--java语言描述
- Jvm学习笔记
- iOS 查看手机的各种属性
- QTableView中文本根据内容自动换行的简单方法
- UIImageView------Android中的imageview
- 用hadoop2.7.1 mapreduce实现QQ好友推荐功能
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题