文章
· 三月 12, 2023 阅读大约需 8 分钟

教程 - 使用 SSH 开发 IRIS

 

SSH框架是Java一个的比较有代表性的框架,是多年前比较流行的一个。有struts+spring+hibernatespringMVC+spring+hibernate两种,当然我大学时候使用的是第二种。倘使我能把IRIS作为一个库,联结到Hibernate那么理论上是不是也代表IRIS也可以使用SSH框架开发呢?

 

工具及环境

JDK 1.8

       Maven

       Hibernate 5.X.X

       IRISHealth-2022.1.3

       intellij idea

       Windows 10 64

1、创建数据库

       用代码的方式创建几个表

 

Class BKIP.SOA.MonitorScreen.CacheTable.logError Extends %Persistent

{

/// 服务概况缓存表

Property SucNum As %String(MAXLEN = "");

 

Property failNum As %String(MAXLEN = "");

 

Property fdateTime As %String(MAXLEN = "");

 

}

如图所示:

 

 

 

2、创建一个Spring的项目

       File—New—Project....

next

给项目起名,选择jdk版本

Next

Next

等待maven把项目创建完成

添加需要的包

<!--引入hibernate包-->

        <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-core</artifactId>

            <version>5.2.9.Final</version>

        </dependency>

        <dependency>

            <groupId>com.sun.xml.bind</groupId>

            <artifactId>jaxb-impl</artifactId>

            <version>2.1.2</version>

        </dependency>

 

File—Project Structure。。。

选择Facets—加上Hibernate

点击OK

加上配置文件如图

点击OK

点击OK

 

 

引入iris的jdbc包

 

 

 

 

 

在Hibernate配置中输入连接信息

IDEA的数据库管理工具连上IRIS

 

引入驱动包

 

 

连接IRIS数据库

 

选择所需要的数据库

打开Hibernate工具,View--Persistence

打开映射,如图:

选择连接并且输入报名,由于电脑显示不全,全选。

接下来一直点OK,直到成功:

你就得到了一堆实体类:

 

好了实体类建立出来了,剩下的增删改查就不需要我再展示了,有更强的人来处理。

分享一个工具类:

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.boot.MetadataSources;

import org.hibernate.cfg.Configuration;

import org.hibernate.service.ServiceRegistry;

/**

 * <p>

 *

 * </p>

 *

 * @author wangzhe

 * @since 2017/3/9 14:42

 */

public class HibernateUtil {

    //为保证线程安全,将Seeeion放到ThreadLocal中管理。这样就避免了Session的多线程共享数据的问题

    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

    private static SessionFactory sessionFactory = null;//SessionFactory对象

    //静态块(在类被加载时执行,且生命周期内只执行一次)

    static {

        try {

            // 加载Hibernate配置文件

            Configuration cfg = new Configuration().configure();

            //    创建会话工厂

            //    hibernate4.0版本前这样获取sessionFactory = configuration.buildSessionFactory();

            //    hibernate5以后规定,所有的配置或服务,要生效,必须配置或服务注册到一个服务注册类(服务构建器-->服务注册器)

            ServiceRegistry serviceRegistry = cfg.getStandardServiceRegistryBuilder().build();

            //  根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂

            sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

        } catch (Exception e) {

            System.err.println("创建会话工厂失败");

            e.printStackTrace();

        }

    }

    /**

     *    获取Session

     *  @return Session

     *  @throws HibernateException

     */

    public static Session getSession() throws HibernateException {

        Session session = (Session) threadLocal.get();  //获取ThreadLocal中当前线程共享变量的值。

        if (session == null || !session.isOpen()) {

            if (sessionFactory == null) {        //如果会话工厂创建失败为空就在重新创建一次

                rebuildSessionFactory();

            }

            //创建Sqlsession数据库会话

            session = (sessionFactory != null) ? sessionFactory.openSession(): null;

            //设置ThreadLocal中当前线程共享变量的值。

            threadLocal.set(session);

        }

 

        return session;

    }

    /**

     * 重建会话工厂

     */

    public static void rebuildSessionFactory() {

        try {

            // 加载Hibernate配置文件

            Configuration cfg = new Configuration().configure();

            //    创建会话工厂

            //    hibernate4.0版本前这样获取sessionFactory = configuration.buildSessionFactory();

            //    hibernate5以后规定,所有的配置或服务,要生效,必须配置或服务注册到一个服务注册类(服务构建器-->服务注册器)

            ServiceRegistry serviceRegistry = cfg.getStandardServiceRegistryBuilder().build();

            //  根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂

            sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

        } catch (Exception e) {

            System.err.println("创建会话工厂失败");

            e.printStackTrace();

        }

    }

    /**

     * 获取SessionFactory对象

     * @return SessionFactory对象

     */

    public static SessionFactory getSessionFactory() {

        return sessionFactory;

    }

    /**

     *    关闭Session

     *  @throws HibernateException

     */

    public static void closeSession() throws HibernateException {

        Session session = (Session) threadLocal.get();

        //使用set(null)来回收ThreadLocal设置的值.

        threadLocal.set(null);

        if (session != null) {

            session.close();//关闭Session

        }

    }

}

 

总结:

       以上是我结合SSH框架展示了一下IRIS作为数据源时候如何搭建环境继续开发的一个步骤,展示的内容虽然比较简单,但是如果按照我这种方式的话理论上是可以使用Java来对IRIS进行开发和使用的,并且可以使用Java原生的一系列手段,更加方便Java开发者使用IRIS的强大性能,完成更多的业务,同时在此基础上如果你想使用SpringBoot甚至SpringCloud来开发IRIS也不是不可能,关键是IRIS在这个架构中的角色。

讨论 (0)1
登录或注册以继续