在基于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查看。
效果如下: