Hibernate基础概念
来源:互联网 发布:c语言函数声明和调用 编辑:程序博客网 时间:2024/06/13 14:13
Hibernate:
表示层–业务逻辑层–持久层–数据库层
域模型(实体模型),面向对象的概念
关系模型,是关系型数据库的概念
ORM(Object Relational Mapping),对象关系映射
关系模型映射成对象模型
Hibernate就是实现ORM的框架
Hibernate对象状态(Object States)
瞬时(Transient)态:由new操作符创建,且尚未与Hibernate Session关联的对象被认为瞬时的。
持久(Persistent)态:持久的实例在数据库中有对应的记录,并拥有一个持久化标识(identifiy)。
脱管(Detached)态:与持久对象关联的Session被关闭后,对象就变为脱管态。
<hibernate-mapping package="net.zhx.po"> <class name="Student" table="t_student"> <id name="id" column="sid"> <!-- Id生成策略 --> <generator class="native"></generator> </id> </class></hibernate-mapping>
Id生成策略:
uuid
uuid2
native
assigned:需要手动设置id,默认
Hibernate 映射
基本映射
关联映射
一对一(one-one)
一对多(one-many,many-one)
多对多(many-many)
一对多(One-to-Many)
<hibernate-mapping package="net.zhx.po"> <class name="User" table="t_user"> <id name="id" column="uid"> <generator class="native"></generator> </id> <property name="name" length="20"></property> <property name="password"></property> <many-to-one name="group" foreign-key="fk_user_groupid_group_gid"> <column name="group_id"></column> </many-to-one> </class></hibernate-mapping>
Lazy策略(懒加载,延时加载)
Hibernate支持的Lazy策略只有在session打开的状态下才有效
User user = (User)session.load(User.class, 1);
User user = (User)session.get(User.class, 1);
Load是支持Lazy加载的:在真正使用对象的时候才会去发SQL查询
一对一(One-to-One)
主键参照(让两个实体对象的ID保持相同)
外键参照(可以看作特殊的多对一关系)
多对一(Many-to-One)
<hibernate-mapping package="net.zhx.po"> <class name="Student" table="t_student"> <id name="id" column="sid"> <generator class="native"></generator> </id> <property name="name"></property> <many-to-one name="classes" foreign-key="fk_student_cid_classes_cid"> <column name="cid"></column> </many-to-one> </class></hibernate-mapping>
多对多(Many-to-Many)
<hibernate-mapping package="net.zhx.po"> <class name="User" table="t_user"> <id name="id" column="uid"> <generator class="native"></generator> </id> <property name="name"></property> <!-- table="r_user_role":指定中间表的名称 --> <set name="roles" table="r_user_role"> <!-- 在中间表里面关联上自己id的字段名和外键名 --> <key column="uid" foreign-key="fk_userrole_uid_user_uid"></key> <many-to-many class="Role" foreign-key="fk_userrole_rid_role_rid"> <column name="rid"></column> </many-to-many> </set> </class></hibernate-mapping><hibernate-mapping package="net.zhx.po"> <class name="Role" table="t_role"> <id name="id" column="rid"> <generator class="native"></generator> </id> <property name="name"></property> <set name="users" table="r_user_role"> <key column="rid" foreign-key="fk_userrole_rid_role_rid"></key> <many-to-many class="User" foreign-key="fk_userrole_uid_user_uid" column="uid"></many-to-many> </set> </class></hibernate-mapping>
继承映射(三种策略)
–单表继承(每颗类继承树使用一张表)—>(好处:节约表 坏处:子类的字段必须不能不为空)
–具体表继承(父类和每个子类各一张表,子类表只有id和自己的属性)
–类表继承(每个具体类一张表)
其他映射
–组件映射(Component Mapping)
–联合主键映射(Composite Mapping)
–集合映射(Set,List,Array,Map)
–自关联
- Hibernate基础概念
- 【Hibernate】1.Hibernate基础概念
- ORM框架与Hibernate基础概念
- Hibernate 概念
- hibernate配置文件和基础概念,三种状态
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- hibernate中的一些概念
- hibernate的一些概念
- Hibernate 概念解释
- hibernate的概念
- Java学习--(二)使用文本文档写java程序
- Android笔记之Activity
- houdini中让shader支持udim texture
- R语言基础介绍
- 简单观察者模式
- Hibernate基础概念
- AngularJS 中 异步请求$http 对象的使用
- Vmware虚拟网络详解
- 【天池竞赛系列】资金流入流出预测思路
- Leetcode: Contains Duplicate III
- meta标签
- C# chart
- clojure-基本语法-函数定义
- 简洁表达式