假设我们要建表X,那么我将需要执行以下步骤:

注意:在我们的项目中,我们将DAO文件和X.hbm.xml归入DAO包,将表的实例化放入model包,将Service Implement放入ServiceImpl包,将Service Interface放入Service包。另外,dao-background.xml保存dao-xml信息,service-background.xml保存service-xml信息。

1. 连接数据库。

2. 生成表x的DAO,实例化类和hbm.xml。

3. 将实例化类和hbm.xml移到DAO包

4. 修改hbm.xml,注释掉未添加的键值关联

5. 建立XServiceImpl文件,编写Impl代码

6. 提取Service Interface到Service包,类型规范为XService

7. 修改dao-background.xml和service-background.xml,即添加DAO和service信息

8. 新建JUNITtest,测试。

如果需要在项目中使用HQL(以分页为例),可以执行如下步骤。

说明:这里只包含基本的架构方式(参考《轻量级Jave EE》),可能有误。

1. 在DAO或者Service里添加HQL语句(本项目放入DAO包):

2. 注意提交事务和关闭session(这是后期开发遇到的问题)。

   //added manually by Van_ruinpublic static List<ProductInfo> findAllRecordByPage(int start,int limit){List<ProductInfo> productTypeInfos;Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();productTypeInfos = session.createQuery("from ProductInfo").setFirstResult(start).setMaxResults(limit).list();tx.commit();HibernateUtil.closeSession();return productTypeInfos;}

这里会发现Session类和HibernateUtil类都未导入,Session类来自于org.hibernate.Session;HibernateUtil则为自己新建(代码来自于《轻量级Jave EE》)。可以将这个类放到同目录下。

package com.background.dao;import org.hibernate.*;
import org.hibernate.cfg.*;public class HibernateUtil
{public static final SessionFactory sessionFactory;static{try{//采用默认的hibernate.cfg.xml来启动一个Configuration的实例Configuration configuration = new Configuration().configure();//由Configuration的实例来创建一个SessionFactory实例sessionFactory = configuration.buildSessionFactory();}catch (Throwable ex){System.err.println("Initial SessionFactory creation failed." + ex);throw new ExceptionInInitializerError(ex);}}//ThreadLocal可以隔离多个线程的数据共享,因此不再需要对线程同步   public static final ThreadLocal<Session> session= new ThreadLocal<Session>();public static Session currentSession()throws HibernateException{Session s = session.get();//如果该线程还没有Session,则创建一个新的Sessionif (s == null){s = sessionFactory.openSession();//将获得的Session变量存储在ThreadLocal变量session里session.set(s);}return s;}public static void closeSession()throws HibernateException {Session s = session.get();if (s != null)s.close();session.set(null);}
}

2. 添加ServiceImpl中的函数(如果HQL已经放入Impl中,则不需要)

3. 添加ServiceInterface函数。

4. 测试。

简单实用的HQL语句:

1. 排序: from *(实体名) order by *(属性值) [desc]

2. 排序对象为外键的时候: from *(实体名) order by *(实体属性值).*(外键属性)

action开发流程:

1. 根据用例添加action方法。

2. 如果service内没有现成方法,添加service方法。

3. 如果需要用到HQL,在DAO中添加方法。

4. 添加strut信息。

5. 添加action信息。

转载于:https://www.cnblogs.com/wead-hsu/p/3712283.html

J2EE数据库后台开发步骤(附HQL使用教程)相关推荐

  1. linux如何迁移文件,linux 数据库文件迁移步骤详解

    linux 数据库文件迁移步骤详解 linux 数据库文件迁移步骤详解 数据库所有文件(数据文件.日志文件.临时文件.控制文件)迁移步骤: 1. 迁移步骤概述: 1:具体需求 2:保存现有数据文件.控 ...

  2. java计算机毕业设计Web网上购书后台管理系统(附源码、数据库)

    java计算机毕业设计Web网上购书后台管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecl ...

  3. java计算机毕业设计网络游戏后台管理系统(附源码、数据库)

    java计算机毕业设计网络游戏后台管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

  4. java计算机毕业设计服装连锁店后台管理系统(附源码、数据库)

    java计算机毕业设计服装连锁店后台管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  5. JAVA计算机毕业设计校园便利店信息系统开发(附源码、数据库)

    JAVA计算机毕业设计校园便利店信息系统开发(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  6. 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作

    JDBC简介 1.JDBC定义Java数据库连接(Java Database Connectivity,简称JDBC):是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询 ...

  7. pos系统开发步骤1-创建数据库以及拼音缩写的实现

    pos系统开发步骤1-创建数据库以及拼音缩写的实现

  8. 数据库应用软件开发前3个步骤之实例讲解

    摘要:目前大部分的公司开发软件都不规范,开发步骤混乱.究其原因,大致可以分为两方面,一方面是客户的需求简单,公司不需要正常的软件开发步骤就可以实现,另一个方面就是公司开发软件没有规范,凭感觉开发软件, ...

  9. SSM+ 基于Java的花艺商城系统设计与开发 毕业设计-附源码171536

    摘 要 本论文主要论述了如何使用JAVA语言开发一个花艺商城系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述花艺商城系统的当前 ...

最新文章

  1. vscode: Visual Studio Code 常用快捷键
  2. linux命令——tar
  3. 安卓多语言设置,深渊巨坑,适配7.0以上,并且解决因WebView产生的问题
  4. 深入理解javascript原型和闭包(5)——instanceof
  5. Laravel学习笔记(四)数据库 数据库迁移案例
  6. PHP获取汉字首字母并分组排序
  7. 《人工智能:计算Agent基础》——3.3 图搜索
  8. ECMAScript 学习笔记02
  9. android 取色方法,安卓取色器 - 「一年好景君须记」,带你玩转安卓的色彩世界 - Android 应用 - 工具 - 【最美应用】...
  10. Deepin安装Windows字体(如微软雅黑)
  11. 获取chrome的network内容并选择下载其中的资源
  12. 浅谈批处理for命令中的变量扩展
  13. js判断对象是否有某个属性
  14. c语言抖动算法,游戏中抖动(振动)算法的实现
  15. Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)
  16. CodeForces - 1324 D. Pair of Topics 思维+多解法
  17. C语言的 字符串 和 字节串 互转
  18. 数据结构课程设计--学生信息管理系统
  19. mysql-sandbox_mysql-sandbox 安装
  20. SQL命令之FROM子句

热门文章

  1. Qt工作笔记-正则表达式QProcess::startDetached中正则表达式的使用
  2. Java笔记-CXF增加拦截器与自定义拦截器
  3. canvas笔记-使用canvas画矩形及各样式(透明)
  4. C++工作笔记-3种方法对数据类型进行拆分(可用于各种协议)
  5. C++工作笔记-设计普通类的格式,实现简单工厂中接口的定义
  6. ubuntu 18.04 ip固定
  7. Python实现HTTP服务器(三)线程、进程、协程实现多任务
  8. linux awk菜鸟教程,Linux awk 命令
  9. nginx配置php项目后403,nginx配置引发的403问题解决办法
  10. java servlet 返回404_java项目访问servlet出现404