⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struts+hibernate模板开发笔记.txt

📁 Hibernate使用说明书
💻 TXT
📖 第 1 页 / 共 3 页
字号:
* 从dataModule中取得 SessionFactory
*/

public SessionFactory getSessionFactory(){
return this.sessionFactory;
}
}


2.产生唯一ID的父类

接口 (SingletonIdDAO.java)

package com.company.demo.dao; 
/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public interface SingletonIdDAO {
}


ID父类 (SingletonIdDAOImpl.java) 

package com.company.demo.dao;

import java.util.List;
import com.company.demo.datamodule.*;
import com.company.demo.jdo.SingletonId;

import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.Query;

/**
* 产生唯一的ID
*
* 数据库结构(ORACLE9i):
* 表名 SINGLETON_ID
* 字段 id(char) name varchar2(50) value number(10.0)
*
*
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*
*
*/


public class SingletonIdDAOImpl implements SingletonIdDAO{

private SessionFactory sessionFactory;
private DataModule dataModule;

/**
* 设数据模型
*/

public void setDataModule(DataModule dataModule){
this.dataModule=dataModule;
this.sessionFactory=dataModule.getSessionFactory();
}

////////////////以下是业务逻辑////////////////////
private SingletonId findByName(String name) throws HibernateException,Exception {
Transaction transaction = null;
SingletonId singletonId=new SingletonId();
Session session=sessionFactory.openSession();
String queryString = "select g from SingletonId as g where g.name = :name order by g.value desc";
try{
transaction = session.beginTransaction();
Query query = session.createQuery(queryString);
query.setString("name",name);
// q.setFirstResult(20000);
//q.setMaxResults(100);
query.setMaxResults(1);
List list=query.list();
singletonId=(SingletonId)list.get(0);
transaction.commit();
}
catch(Exception ex){
if ( transaction!=null ){
transaction.rollback();
}
//throw ex;
}finally{
session.close();
}
return singletonId;
}


/** 取得value
* @param name 产唯一ID的类型名称
* @return value
* @throws HibernateException
*/

protected long getValue(String name) throws HibernateException,Exception {
SingletonId singletonId=findByName(name);
return singletonId.getValue();
}
/** 设置value
* @param name 产唯一ID的类型名称
* @throws HibernateException
*/

protected void setValue(String name) throws HibernateException,Exception {
Session session=sessionFactory.openSession();
SingletonId singletonId=findByName(name);
singletonId.setName(name);
singletonId.setValue(singletonId.getValue()+1);
Transaction transaction = null;
try{
transaction = session.beginTransaction();
session.saveOrUpdate(singletonId);
transaction.commit();
}catch(HibernateException he){
if ( transaction!=null ){
transaction.rollback();
}
throw he;
}finally{
session.close();
}
}


}




3.单例图片ID类(ImageSingletonId.java)

package com.company.demo.dao.count; 
import net.sf.hibernate.HibernateException;
import com.company.demo.dao.SingletonIdDAOImpl;
import com.company.demo.datamodule.DataModule;

/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class ImageSingletonId extends SingletonIdDAOImpl{

private static ImageSingletonId imageSingletonId = null;

/**
* 构造函数私有
*/
private ImageSingletonId(){
}
/**
* 静态工厂模式,取得ImageSingletonId实例
*/
public static synchronized ImageSingletonId getInstance() {
if (imageSingletonId==null)
{
imageSingletonId=new ImageSingletonId();
}
return imageSingletonId;
}


/**
* 取图形唯一ID
*/
public synchronized long getImageValue() throws HibernateException,Exception {
long value;
setValue("image");
value=getValue("image");
return value;
}

}


4.图片ID测试文件(TestImageSingletonId.jsp)

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="net.sf.hibernate.*" %>
<%@ page import="net.sf.hibernate.cfg.*" %>
<%@ page import="com.company.demo.datamodule.*" %>
<%@ page import="com.company.demo.dao.count.*" %>
<%!
DataModule dataModule;
ImageSingletonId imageSingletonId;
%>
<%
try{
imageSingletonId=ImageSingletonId.getInstance();
imageSingletonId.setDataModule(new DataModuleImpl());
}
catch(Exception ex)
{
ex.toString();
} 
for(int i=0;i<100;i++){
out.print("测试..........<BR>");
out.print(imageSingletonId.getImageValue());
out.print("----------------<BR>");
}
%>

5.单例记数器ID类(MainPageSingletonId.java)

package com.company.demo.dao.count; 
import net.sf.hibernate.HibernateException;
import com.company.demo.dao.SingletonIdDAOImpl;
import com.company.demo.datamodule.DataModule;

/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class MainPageSingletonId extends SingletonIdDAOImpl{

private static MainPageSingletonId mainPageSingletonId = null;

/**
* 构造函数私有
*/
private MainPageSingletonId(){
}
/**
* 静态工厂模式,取得MainPageSingletonId实例
*/
public static synchronized MainPageSingletonId getInstance() {
if (mainPageSingletonId==null)
{
mainPageSingletonId=new MainPageSingletonId();
}
return mainPageSingletonId;
}


/**
* 取唯一ID
*/
public synchronized long getMainPageValue() throws HibernateException,Exception {
long value;
setValue("mainPage");
value=getValue("mainPage");
return value;
}

}


6.记数ID测试文件(TestMainPageSingletonId.jsp)

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="net.sf.hibernate.*" %>
<%@ page import="net.sf.hibernate.cfg.*" %>
<%@ page import="com.company.demo.datamodule.*" %>
<%@ page import="com.company.demo.dao.count.MainPageSingletonId" %>
<%!
DataModule dataModule;
MainPageSingletonId mainPageSingletonId;
%>
<%
try{
mainPageSingletonId=MainPageSingletonId.getInstance();
mainPageSingletonId.setDataModule(new DataModuleImpl());
}
catch(Exception ex)
{
ex.toString();
} 
for(int i=0;i<100;i++){
out.print("测试..........<BR>");
out.print(mainPageSingletonId.getMainPageValue());
out.print("----------------<BR>");
}
%>


七、设计模式:门面
1.在JSP中调"Session Facade"类

在JSP文件中插入下列标签:

<jsp:useBean id="sessionBean" scope="session" class="com.company.demo.web.SessionBean" />

2.SessionBean类

 package com.company.demo.web;


import com.company.demo.datamodule.*;
import com.company.demo.thread.*;
import com.company.demo.facade.*;
/**
 * <p>Title: Struts+Hibernate开发模板</p>
 * <p>Description: 通用开发模板</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: 优势科技</p>
 * @author 段洪杰
 * @version 1.0
 */

public class SessionBean {
  private DataModule dataModule;//数据模型
  private Auth auth;  //登录的用户信息
  private Business business; //系统中的业务逻辑主线
  private Line line; //保存模块中的关联状态
  /**
   * 构函数,初始化业务逻辑中的类(单例)
   */
  public SessionBean(){
  try {
      dataModule=SessionBeanSingletonFactory.getDataModule();
      auth=SessionBeanSingletonFactory.getAuth();
      business=SessionBeanSingletonFactory.getBusiness();
      line=SessionBeanSingletonFactory.getLine();
  }
  catch (Exception ex) {
     ex.printStackTrace();
   }
 }
 /**
  * 门面模式调用的公共应用模块
  * @return Utility
  */
public Utility getUtility()  {
   return SessionBeanFactory.getUtility();
 }
}

3.SessionBeanFactory类

package com.company.demo.web; import com.company.demo.datamodule.*;
import com.company.demo.thread.*;
import com.company.demo.facade.*;
import net.sf.hibernate.HibernateException;
/**
* SessionBean门面模式的抽象工厂类
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class SessionBeanFactory {
/**
* 生成业务逻辑状态实例(facade)
* @return LineImpl
* @throws HibernateException
*/
private SessionBeanFactory(){}
public final static Utility getUtility(){
return new UtilityImpl();
}

}

4.SessionBeanSingletonFactory类

package com.company.demo.web; import com.company.demo.datamodule.*;
import com.company.demo.thread.*;
import com.company.demo.facade.*;
import net.sf.hibernate.HibernateException;

/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class SessionBeanSingletonFactory {
/**
* 生成用户认证实例(单例)
* @return AuthImpl
* @throws HibernateException
*/

private SessionBeanSingletonFactory(){}

public final static Auth getAuth() throws HibernateException{
return new AuthImpl();
}
/**
* 生成商务逻辑实例(单例)
* @return BusinessImpl
* @throws HibernateException
*/
public final static Business getBusiness() throws HibernateException{
return new BusinessImpl();
}
/**
* 生成数据模型实例(单例)
* @return DataModuleImpl
* @throws HibernateException
*/

public final static DataModule getDataModule() throws HibernateException{
return new DataModuleImpl();
}
/**
* 生成业务逻辑状态实例(单例)
* @return LineImpl
* @throws HibernateException
*/

public final static Line getLine() throws HibernateException{
return new LineImpl();
}

}

八、设计模式:DAO
使用数据访问对象(DAO)使我们可以将底层数据访问逻辑与业务逻辑分离开。我们构建了为每一个数据源提供 GRUD (创建、读取、更新、删除)操作的 DAO 类。

下面是一个数据源GRUD(创建)操作的DAO实例.

1.接口(DemoDAO.java)

package com.company.demo.dao; 

import net.sf.hibernate.HibernateException;
import com.company.demo.jdo.Demo;
import com.company.demo.datamodule.*;
/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public interface DemoDAO {

/**设置数据模型**/
public void setDataModule(DataModule dataModule);
/** 建立对象 **/
public void createDemo(Demo demo) throws HibernateException,Exception;

}

2.抽象工厂(DemoDAOFactory.java)

package com.company.demo.dao; 
/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class DemoDAOFactory {

private DemoDAOFactory()
{ }
public final static DemoDAO getDemoDAO(){
return new DemoDAOImpl();
}
}

3.DAO类(DemoDAOImpl.java)

package com.company.demo.dao; 
import java.util.List;
import com.company.demo.datamodule.*;
import com.company.demo.jdo.Demo;

import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.Query;


/**
* <p>Title: Struts+Hibernate开发模板</p>
* <p>Description: 通用开发模板</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 优势科技</p>
* @author 段洪杰
* @version 1.0
*/

public class DemoDAOImpl implements DemoDAO {

private SessionFactory sessionFactory;
private DataModule dataModule;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -