为什么要用hibernate 与基于数据库表结构的项目开发
最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,
于是我就去搜了一下,就搜到了一篇帖子,里面讲的一些情况我还是赞同的.比如hibernate可以解决对象和关系的映射问题.这个问题在我的项目中也出现了,比如我
建了一个父版块表,一个子版块表,子版块和父版块的关系是多对一的关系,按照关系型数据库的,那么我会在子版块的表中加入一个父版块的Id,然后我会在java的实体类中建立一个子版块和父版块
的实体类,但是当查询子板块且需要显示他的父版块的名字时,我会在子板块的实体类中加入fatherModuleName这个字段,如果后期要要显示这个子版块的版主,那么我会在子板块中加入了userName
这个字段,这样子版块这个类中已经多了两个字段了已经'破坏了面向对象'的完整了,这就是我所遇到的对象关系映射问题.下面附了这个帖子的链接
http://zhidao.baidu.com/question/1829907591248169420?sharesource ==New Start================================================================================================================================================= 基于数据库表结构的项目开发,自从认真的学习hibernate 我就开始注意这个问题了,实际开发情况和书上讲的不一样,
书上讲了类图,流程图还有其他一些名字很专业的图,但是我们实际开发呢
第一步:分析需求
第二步:建立数据库表
第三步:开始开发
1.根据数据库表建立一个实体类
2.MVC三层开始布局
3.前端
4,优化
第四步:自测,大家一起测,一般没有专业测试(原因不是主题所以不说)
第五步:至此,我们的开发主体完成
总结来说,我们不是根据什么图来开发的而是基于数据库表来开发的,
数据库里面有什么字段,实体类中就用某一个字段,如果数据库表里面加了字段,那么实体类也要添加一个字段.
如果连个表关联时,我和同事的做法都是在一个表里添加这些重复的字段,只为拼凑这个关联之后的虚拟表的全部字段,
但是,当你注意时问题就来了,举个例子来说明
学生表,学生id,学号,姓名,性别,专业,
课程表:课程id,课程名,课程成绩,学生Id
当只显示学生或者只显示课程时实体类就表达的很完美,但是如果两个表被关联起来我们的做法就破坏了实体类的.
因为暂时没有更好的办法解决这种问题,开始学习hibernate,才知道这个是对象关系映射的问题.
如果有更好的办法,欢迎留言,PS:我的项目用的是Spring的jdbcTemplate工具,
为什么要用hibernate 与基于数据库表结构的项目开发的更多相关文章
- hibernate动态创建数据库表名几种方式
数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实 ...
- 数据库表结构文档查看器 基于netcore
前言 日常开发业务代码,新接手一块不熟悉的业务时需要频繁的查看对应业务的数据库表设计文档.相比于直接翻看业务代码,有必要提供一个数据库表结构文档查看器来解决这些繁琐的问题. CML.SqlDoc CM ...
- spring security基于数据库表进行认证
我们从研究org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl.class的源码开始 public class JdbcDaoI ...
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- 微调数据库表结构,30 分钟搞定 WordPress 数据库查询缓慢问题
同事的美女图片站,基于 WordPress 搭建的,因为数据越来越多,变得慢,我从 PHP slow log 里面看出是 WordPress 有些查询总是很慢,即使已经安装了页面缓存插件,但是由于页面 ...
- python 全栈开发,Day105(路飞其他数据库表结构,立即结算需求)
考试第三部分:Django 16. 列列举你熟悉的Http协议头以及作用.(1分) Accept-Charset: 用于告诉浏览器,客户机采用的编码 Host: 客户机通过这个头告诉服务器,想访问的 ...
- 不同数据库表结构的转化,PowerDesigner的使用教程
通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库 ...
- 用户中心mysql数据库表结构的脚本
/* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...
- mysql数据库表结构导出
mysql数据库表结构导出 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localh ...
随机推荐
- Maven 常用命令, 备忘
Maven在现在的Java项目中有非常重要的地位, Maven已经不是Ant这样仅仅用于构建, 首先, 它是一个构建工具, 把源代码编译并打包成可发布应用的构件工具其次, 它是一个依赖管理工具, 集中 ...
- maven spring profile 协同
请在网上查相关的使用情景,这里直接上要点.另外,可能不只一种方法,但这里只有一种. 1.POM.XML片段,使web.xml文件中有关活跃spring profile的内容可以被maven自动替换 & ...
- NET Core HTTP 管道
ASP.NET Core HTTP 管道中的那些事儿 前言 马上2016年就要过去了,时间可是真快啊. 上次写完 Identity 系列之后,反响还不错,所以本来打算写一个 ASP.NET Cor ...
- Linux shell基础
shell是核心程序kernel之外的指令解析器,是一个程序,同事是一种命令语言和程序设计语言 --shell是命令解析器,用户输入命令,它去解析. shell类型 ash,bash,ksh,csh, ...
- CoffeeScript的类继承的工具函数extends
__hasProp = {}.hasOwnProperty, __extends = function(child, parent) { // 派生类时,如果基类的类属性值是对象,那么子类的类属性只是 ...
- vbs http
get请求 模拟发送http请求到百度Dim httpSet http = CreateObject("Msxml2.ServerXMLHTTP")http.open " ...
- 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...
- lecture10-模型的结合与全贝叶斯学习
这是Hinton的第10课 这节课有两篇论文可以作为背景或者课外读物<Adaptive mixtures of local experts>和<Improving neural ne ...
- Package Control Installation
simple 用 ctrl+~ 打开 sublime 的控制台,将下面代码复制进去. sublime text2: import urllib2, os, hashlib; h = '2915d185 ...
- c8051f320学习,单片机不外乎时钟、IO、串口、USB等外设用法
时钟 IO(输入.输出,如何配置) IO 数字和模拟资源可以通过25个I/O 引脚(C805 1F3 2 0 ),每个端口引脚都可以被定义为 通用I/O(GPIO)或 0 模拟输入 所有端口I ...