SSH——hibernate阶段总结(一)



       在网上商城中利用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
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值