9.ORM数据访问
1.Spring对ORM的支持
ORM :
对象关系映射(Object Relational Mapping)
是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术
基于ORM的数据持久层框架有:
Hibernate
Mybatis
TopLink……
Spring框架则支持集成Hibernate,Java Persistent API(JPA)等,用于资源管理、数据访问对象(DAO)的实现和事务策略
Spring对ORM的支持,使得数据持久层得到显著增强,ORM在Spring容器中也便于配置和部署
使用Spring框架来创建ORM的DAO,好处有:
通用的资源管理
集成事务管理
统一常见的数据访问异常
更容易测试
2.Spring 集成 Hibernate
配置DataSource:
增加dbinfo.properties文件,该属性文件可以配置数据库和Hibernate相关配置

配置DataSource:
在applicationContext.xml文件中配置DataSource
数据源也可以配置其他数据库连接池数据源,比如:
BoneCP
Druid等
配置SessionFactory:
在applicationContext.xml文件中配置sessionFactory

编写实体Bean
编写Dao实现类
添加@Repository
注入sessionFactory

在applicationContext.xml配置文件中添加事务配置

编写Service层实现类
添加@Service
添加@Transaction
注入持久层的Dao

编写Controller实现类
添加@Controller、@RequestMapping
注入业务逻辑层Service

以Spring容器来管理项目中各层对象,并实现注入
注入的顺序是:dataSource->sessionFactory->XXXDao->XXXService
->XXXController
从而实现控制器中调用业务逻辑层,业务逻辑层调用数据持久层,数据持久层借助sessionFactory和dataSource实现对数据的操作
3.数据校检
数据校验在项目中被广泛应用,一般分为前端数据校验和后端数据校验
前端数据校验可以采用JavaScript、Jquery等前端技术
后端数据校验可以采用JSR303进行数据校验
JSR303是一个运行时数据校验框架
它使得验证逻辑从业务代码中脱离出来
一般用于表单验证
JSR303提供了以下注解用于字段的验证
@NotNull 注解元素必须是非空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否小于等于最大指定整数值
@Min 验证值是否大于等于最小指定整数值
@Pattern 验证字符串是否匹配指定的正则表达式
@Size 验证元素大小是否在指定范围内
@DecimalMax 验证值是否小于等于最大指定小数值
@DecimalMin 验证值是否大于等于最小指定小数值
@AssertTrue 被注解的元素必须为true
@AssertFalse 被注解的元素必须为false
Hibernate Validator扩展了该注解
@Email 被注解的元素必须是电子邮箱地址
@Length 被注解的字符串的大小必须在指定的范围内
@NotEmpty 被注解的字符串的必须非空
@Range 被注解的元素必须在合适的范围内


编写Controller

9.ORM数据访问的更多相关文章
- 超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上
超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上 阅读目录 Deft简介 Deft 核心类介绍 Deft 3分钟即可上手使用 其他可选的配置参数 性能测试 Demo代码下载 回到顶 ...
- 一个类GraphQL的ORM数据访问框架发布
Zongsoft.Data 发布公告 很高兴我们的 ORM 数据访问框架(Zongsoft.Data)在历经两个 SaaS 产品的应用之后,今天正式宣布对外推广! 这是一个类 GraphQL 风格的 ...
- 分享自己的超轻量级高性能ORM数据访问框架Deft
Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手. Deft包含如下但不限于此的特点: 1.按照Transact-SQL的语法语义风格来设计,只 ...
- 架构从最简单的数据访问框架(ORM)到资源调度和治理中心(SOA)说起
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构当网站流量很小时,只需一个应用,将 ...
- 解析大型.NET ERP系统数据访问 对象关系映射框架LLBL Gen Pro
LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化. ...
- ClownFish:比手写代码还快的通用数据访问层
http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...
- 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能
下期预告: 由于很多园友反馈,有的组件不应该缺席.测试复杂度不够.测试还缺乏一定的公平. 因此考虑在下一个版本中,确保在更加公平的前提下进行更高复杂度的测试 . 同时将分为2组测试,纯SQL组件及纯O ...
- hibernate 入门([数据访问中间件] 开源框架)
1.内容: hibernate 也是一个经典的[数据访问中间件] 开源框架. 2.hibernate核心组件 SessionFactory[整个数据的操作]重量级组件 ...
- 三、Spring——数据访问
1.Spring 对 DAO的支持 Spring支持目前大多数常用的数据持久化技术,Spring定义了一套面向DAO层的异常体系,并未各种支持的持久化技术提供了异常转换器.这样,我们在设计DAO接口时 ...
随机推荐
- C++对ASCII文件的操作例子
从键盘读入一行字符,把其中的字母字符依次放在磁盘文件f2.dat中,再把它从磁盘文件读入程序,将其中的小写字母改写成大写字母,再存入磁盘文件f3.dat. code: #include<iost ...
- 基于IFC的大型三维城市群体——智慧城市模拟
- 算法Sedgewick第四版-第1章基础-010一检查括号是否成对出现
/****************************************************************************** * Compilation: javac ...
- java中怎么把String转化为字符数组呢?
我想让用户输入一组字符串,然后将这个字符串的每一个赋给一个char.即,abcde char ch[]=new char[5]; ch[0]=a;ch[1]=b;..... 解决方案如下图所示: St ...
- 1054D&EZOJ #93 Changing Array
传送门 分析 我们可以对一个数列求前缀和,如果pre[l]=pre[r]则我们可以知道区间[l,r]一定不合法 于是我们就要让不合法的区间尽量少 我们知道对于一个数$x$,他只受x和$(2^k-1)$ ...
- SSH2+proxool 出现No suitable driver found for proxool.mysqlProxool
SSH2+proxool 出现No suitable driver found for proxool.mysqlProxool 首先我们要明确使用的是SSH2框架,然而Struts2是基于filte ...
- map集合的应用
分析以下需求,并用代码实现: (1)利用键盘录入,输入一个字符串 (2)统计该字符串中各个字符的数量例如 用户输入字符串"If~you-want~to~change-your_fate_I_ ...
- C++面试笔记--字符串
基本上求职者进行笔试没有不考字符串的.字符串也是一种相对简单的数据结构,容易被考.事实上,字符创也是一个考验程序猿编程规范和编程习惯的重要考点. 1.替换空格:实现一个函数,把字符串中的每个空格替换成 ...
- inline 内联函数
1.目的: 引入内联函数的目的是为了解决程序中函数调用的效率问题. 函数的引入可以减少程序的目标代码,实现程序代码和数据的共享.但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转 ...
- officeaddin开发->excel,word另存为html,xml,csv,txt设置编码格式
在excel中设置保存之后的编码格式,需要获取到Microsoft.Office.Interop.Excel.Workbook然后设置其中的webOpetions的编码格式就可以了. workbook ...