软件架构平台技术---Hibernate属性映射
软件架构平台技术---Hibernate属性映射
好久没写博客了,一直在忙于一些华而不实的东西,在结束了看似光鲜却真的没有脚踏实地的东西后,就要静下心来整理一下上个学期学习的一些知识点。
首先我来回顾一下hibernate框架,这个框架是迷迷糊糊就大概知道怎么用了,但是却没有踏踏实实的全面了解它。
首先hibernate是一个ORM框架,访问数据库是整个J2EE必不可少的部分,目前依然使用关系型数据来保存数据。用java语言设计的程序是面向对象(Object)的,而持久数据是存储在关系型数据库(Relation)中的,所以需要一种映射机制(Mapping)。
首先什么是ORM?
ORM(对象-关系映射):
完成对象数据到关系型数据映射的机制称为对象-关系映射,简称ORM。
目前持久化的技术主要有三种:
1.传统的JBDC方案
2.半自动ORM框架(MyBatis)
3.全自动ORM框架(Hibernate)
传统的JDBC直接在SQL层面进行关系型数据库的操作,所以其有很高的性能,执行基于数据集的操作,但是JDBC是一个底层API,操作它会非常麻烦,为了保证正确的数据库操作和性能,需要使用大量捕获异常和释放资源的代码。
------------------------------------上面是Hibernate的一些简单介绍-------------------------
hibernate为我们提供了数据库层操作层面上一整套的解决方案,本人实在没有系统学习的情况下直接拿来用的导致于有些使用细节上并没有把握好,现在就类的属性和表的字段的映射上面做一些笔记。
- 普通属性的映射在**.hbm.xml中的写法是
<property name="" type="" column="" length="" not-null="">
其中name是必须要有的,像是文本格式的数据库text字段等特殊字段还是要设置一下type属性的 - 主键映射
<id name="adminId" type="integer"> <column name="adminId" /> <generator class="native" /> </id>
这里<generator>属性是主键的生成策略这里不做细致讨论 - 组成关系映射,也就是设计模式中的组合模式,代码如下面的样纸
package com.zdx.domain; public class User { private Integer id; private String name; private Address address; public User() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
package com.zdx.domain; public class Address { private String provice; private String city; private String street; public String getProvice() { return provice; } public void setProvice(String provice) { this.provice = provice; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } }
这里在User类中包含了一个Address的对象,所以这种常用的组合模式在User.hbm.xml配置文件中的配置如下:
<componment name="address" class="com.zdx.domain.Address"> <property name="province></property> <property name="city></property> <property name="street></property> </<componment>
4.Set集合映射
<set name="" table=""> <key colemn=""/> <element column="" type=""> </set>
当然还有List、Map、array、Bag.
这里还会涉及到关联关系(实体类型的集合映射)
一对多、多对一
多对多、一对一
这些内容在以后讲