SSH——hibernate阶段总结(一)

来源:互联网 发布:网络爬虫 整个网站 编辑:程序博客网 时间:2024/05/21 14:44


       在网上商城中利用SSH框架进行构思,由于对三个框架都还不是很了解,所以程序有些错误也只能先解决。但通过接下来的进一步积累,对于原先遇到的问题以及解决方案有了深入的理解。下面是对于SSH框架中Hibernate的使用概括,先简单总体一览SSH框架:

SSH框架图:

从上图不难看出,SSH架构也是典型的三层思想的应用:

表示层:

struts2spring 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>标签映射。Classname指向实体类路径,若省略table="t_user"则直接创建一张与类名相同的表,注意如果类名是数据库关键字,则必须使用table指定表名,避免建表失败。

Property标签:

实体类中的普通属性对应表字段,采用<property>标签映射,name指向实体中属性名称;同样如果不指定column=“**”,则默认创建与该property标签name值相同的字段名。type值可设定数库中字段数据类型。

     所以在建立关系映射时要注意:如果实体类的名称或实体类中属性的名称和数据库关键字重复,可以考虑采用table属性和column属性对其进行重新命名。

Id标签:

Id标签对应实体中id属性,值得注意的是,主键id的值有多种不同的生成策略

主键id生成策略:

主键生成策略

适用范围

特点

identity

适用于mysqlsqlserver数据库

Id1自增,且同一数据库,不同表间不关联

sequence

适用于oracel数据库

Id1自增,但所有表id均关联,例如表1自增id100,表二则从101开始。可通过property属性设定

uuid

均可

根据当前时间,本机mac等信息随机生成一个32位数作为主键,

native

均可

自适应:根据当前使用数据库的特点,生成自增id。要求实体总id类型必须为intInteger

assigned

均可

用户设定,直接调用实体setId方法为id赋值。

 

0 0
原创粉丝点击