SSH——hibernate阶段总结(一)
来源:互联网 发布:网络爬虫 整个网站 编辑:程序博客网 时间:2024/05/21 14:44
在网上商城中利用SSH框架进行构思,由于对三个框架都还不是很了解,所以程序有些错误也只能先解决。但通过接下来的进一步积累,对于原先遇到的问题以及解决方案有了深入的理解。下面是对于SSH框架中Hibernate的使用概括,先简单总体一览SSH框架:
SSH框架图:
从上图不难看出,SSH架构也是典型的三层思想的应用:
表示层:
由struts2或spring mvc作为核心框架,两者均是MVC思想的载体,通过访问Action加载配置文件转向到JSP或者重定向到另一Action。
业务层:
利用spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
持久层:
Hibernate,封装JDBC,避免了重复写大量数据库连接、查询等操作语句。直接通过调用hibernate封装好的方法即可实现我们原来繁琐的数据库处理操作。
所谓持久,顾名思义,也就是将物体长期存放于某处,对于数据而言,便是将数据存放于数据库中,长期保存。
总言之:
所以总体而概,SSH架构整体三层中,在每一层都运用了一个合适的框架,让项目性能得到优化、编写过程更简易可行。
Hibernate——采用对象化的思维操作数据库
Hibernate核心:将数据库对象化
有过hibernate使用经验的人都知道,hibernate的使用一般可分为以下步骤:
1、建立实体类
2、建立实体关系映射
3、将在hibernate.cfg.xml中加载关系映射
只要这三个步骤,便可实现数据库表与对象之间的相互对应关系。映射文件的作用即在于:隔山打虎。整个过程都在操作实体,看似对数据库分毫未动,但却通过实体映射,实现了对数据库的CRUD。
所以,不难理解:hibernate采用对象化的思维操作数据库的意思:建立实体,通过实体关系映射,将实体类的属性映射到对应表中字段,直接将数据库作为对象处理。
深入Hibernate关联映射:
先看实例子,创建User类,通过关系映射,对创建并CRUD数据库中t_user表
public class User3 {private int id;private String name;private String password;private Date createTime;private Date expireTime;//此处省略get set方法{User.hbm.xml关系映射文件:
<?xml version="1.0"?><!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.bjpowernode.hibernate.User" table="t_user"><id name="id"><generator class="assigned"/></id> <property name="name" length="30" unique="true" not-null="true"/><property name="password"/><property name="createTime" type="date" column="create_time"/><property name="expireTime"/></class></hibernate-mapping>
class标签:
一个实体类对应一张表,采用<class>标签映射。Class中name指向实体类路径,若省略table="t_user"则直接创建一张与类名相同的表,注意如果类名是数据库关键字,则必须使用table指定表名,避免建表失败。
Property标签:
实体类中的普通属性对应表字段,采用<property>标签映射,name指向实体中属性名称;同样如果不指定column=“**”,则默认创建与该property标签name值相同的字段名。type值可设定数库中字段数据类型。
所以在建立关系映射时要注意:如果实体类的名称或实体类中属性的名称和数据库关键字重复,可以考虑采用table属性和column属性对其进行重新命名。
Id标签:
Id标签对应实体中id属性,值得注意的是,主键id的值有多种不同的生成策略
主键id生成策略:
主键生成策略
适用范围
特点
identity
适用于mysql,sqlserver数据库
Id从1自增,且同一数据库,不同表间不关联
sequence
适用于oracel数据库
Id从1自增,但所有表id均关联,例如表1自增id到100,表二则从101开始。可通过property属性设定
uuid
均可
根据当前时间,本机mac等信息随机生成一个32位数作为主键,
native
均可
自适应:根据当前使用数据库的特点,生成自增id。要求实体总id类型必须为int或Integer
assigned
均可
用户设定,直接调用实体setId方法为id赋值。
- SSH——hibernate阶段总结(一)
- SSH——Hibernate阶段总结(二)
- SSH——Hibernate实体关联映射总结(一)
- J2EE 阶段总结(SSH)
- SSH-Hibernate(一)—入门
- 阶段总结——软件工程视频(一)
- 总结SSH阶段常见的异常系列之一hibernate
- 总结SSH阶段常见的异常系列之一hibernate
- SSH阶段总结
- JavaScript阶段总结(一)
- 【JavaScript】阶段总结(一)
- SpringMVC阶段总结(一)
- SSH框架的总结(hibernate)(一)
- SSH——Hibernate初学者之旅(一)
- SSH——Hibernate初学者之旅(一)
- Hibernate阶段总结(1)
- SSH总结(一)
- 【SSH】Hibernate学习(一)
- Freescale iMX53平台UBoot中启动参数说明(一)
- Freescale iMX53平台UBoot中启动参数说明(二)
- Xcode中通过删除原先版本的程序来复位App
- LeetCode 题解(260) : Paint House II
- iOS开发之常用的正则表达式
- SSH——hibernate阶段总结(一)
- 第6周项目4-数制转换
- Network(特殊的输入格式+tarjan求割点模板题)
- Android 系统源码分析之View(一)
- Jsp中的PageContext隐式对象详解
- Android 信息获取
- nyoj 最大和 104 (二维子矩阵 DP) 好题
- 港港
- 在ssm框架中前后台数据交互均使用json格式