zoukankan      html  css  js  c++  java
  • 快捷配置Hibernate实现对数据库的配置(构建通道)

      在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。

      但是如果Hibernate配置完全通过手动来进行写入的时候,极易出现错误,并且略有繁琐,下面介绍的就是如何利用eclipse快捷建立数据访问层的增删改查。

      一、新建一个web项目

      二、复制包

      把Hibernate和数据访问的包导入lib文件夹中

      

      三、配置hibernate configurations

      “窗口”--“显示视图”--“其它”-“hibernate configurations”

     

      四、

      在"hibernate configurations"窗口中右击,选择“Add Configuration”(即在上图中空白处右击)

      这里的5.2是导入lib文件的jar包的Hibernate版本,project选择你要操作的项目,Database connection默认是没有的,这时候就需要选择New 新建一个数据连接

      这里用什么的数据库就选择什么类型的。

      接下来的configuration file继续选setup,选择新建一个,然后选择你的项目放到src源文件夹之下

      下一步

      完成后,到这一步基本实现了对数据库通道的配置文件的建立,接下来就是运行生成配置文件。

      首先,打开Hibernate的透视图

      然后是运行Hibernate Code Generation配置

      左侧列表处新建配置

     按照如上所示填写时,在reveng.xml选择setup时,选择好在src之下建立文件下一步之后,出现如下对话框

      点击refresh,选择你的数据库所用的表,添加至右侧,点击完成,点击运行,这时候你的Hibernate配置数据库构建通道就基本实现完毕了。

      测试实现功能

      新建HibernateUtil类

    package com.model;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtil {
        private static final ThreadLocal<Session> threadLock = new ThreadLocal<Session>();
        private static final SessionFactory factory = buildFactory();
    
        private static SessionFactory buildFactory() {
            Configuration cfg = new Configuration().configure();
            return  cfg.buildSessionFactory();
        }
        public static Session getSession(){
            Session session = threadLock.get();
            if(session ==null){
                session = factory.openSession();
                threadLock.set(session);
            }
            return session;
        }
        
        public static void closeSession(){
            
            Session session = threadLock.get();
            if(session !=null){
                threadLock.set(null);
                session.close();
                
            }
        }
    }

      新建一个Test源文件夹,创建名与src一样的包名,新建测试TestRelation.java

    package com.model;
    
    import org.hibernate.Session;
    import org.junit.Test;
    
    import junit.framework.TestCase;
    
    public class TestRelation extends TestCase{
        @Test
        public void testone2one(){
            Session session = null;
            try{
                session= HibernateUtil.getSession();
                Info i = session.load(Info.class, "p002");
                System.out.println(i.getName());
            }
            catch(Exception ex){
                ex.getStackTrace();
            }
            finally{
                HibernateUtil.closeSession();
            }
            
        }
        @Test
        public void testone2many(){
            Session session = null;
            try{
                session= HibernateUtil.getSession();
                Work w = session.load(Work.class, 5);
                System.out.println(w.getFirm());
            }
            catch(Exception ex){
                ex.getStackTrace();
            }
            finally{
                HibernateUtil.closeSession();
            }
            
        }
    
    }

      这里用到了一个jar包,junit-4.12.jar。是为了用大纲的测试文件直接测试使用的。

      直接右键两个静态方法运行junit查看。

      效果如下:

  • 相关阅读:
    对于ajax传递中文乱码问题,研究js encodeURI 与request.HtmlEncode的区别
    对于sa无法登陆,如何用windows身份验证来修改密码
    ASP.Net中自定义Http处理及应用之HttpHandler篇 1
    ReportViewer报表控件解析与使用(原)
    HttpUtility.UrlEncode,Server.UrlEncode 的区别
    xsl xml 以及 树的编写(原创)
    【转】存储过程的优缺点
    【转】关闭模态子窗口后刷新父窗口
    【转】ASP.NET 文件下载
    【转】去除HTML标签的方法
  • 原文地址:https://www.cnblogs.com/claricre/p/6509931.html
Copyright © 2011-2022 走看看