在myeclipse中基于Hibernate框架开发的入门小程序
来源:互联网 发布:数据库中索引是什么 编辑:程序博客网 时间:2024/05/18 02:09
Hibernate框架开发入门
本人最近在学习j2ee框架,学到Hibernate框架开发,花了一天时间弄懂,觉得有必要贴出来大家分享,为初学者提供一些思路。
一、创建Hibernate框架所需环境
①搭建Hibernate框架
Hibernate所需的框架只需要别忘了还有个mysql驱动也就是mysql-connector-java-5.1.18-bin.jar;这个很重要,可以自己到网上去下载,很多的啦,我在这就不赘余了。
②创建数据库,在本地创建一个测试数据库mysqldb,并创建一张User表。
③创建HibernateDemo项目
在myeclipse中(我使用的IDE是myeclipse,很好用,很多框架都直接集成的)新建一个Web Project,名称为HibernateDemo,右键直接—>Myeclipse—>Add Hibernate Capabilities—>next—>next—>选择一个数据库驱动(数据库驱动的建立稍后再后文说)—>next—>创建一个放SessionFactory类文件的包(HibernateConf)—>finish。然后右键—>build path—>Configure build path将下载的框架放进来,还有WEB-INF下lib中的数据库驱动也放进来,这样才能加载到类路径下。至此项目创建完成。
④创建持久化类和设计映射文件,使用Hibernate映射文件将POJO对象映射到数据库。
项目建好了之后,将数据库中的关系与程序中的映射关系建立好,也就是ORM(Object Relationship Mapping)映射关系。即通过POJOs(Plain Old Java Objects)类的编程模式来进行持久化,通过面向对象的方式将关系型数据库中的数据表以更为清晰的、可操作的模式展现出来。
具体操作方法:在myeclipse中可以直接切换到DB Browser模式中,双击数据库驱动找到你创建的数据库下的User表,右键—>Hibernate Reverse Engineering—>选择存放持久化对象和映射文件的位置—>finish。
⑤编写hibernate.cfg.xml配置文件
在创建项目的时候我们的hibernate.cfg.xml配置文件是自动生成的,所以该有的数据库或者映射文件列表都自动生成好了,所以改动的不多,不过比如你如果想看到操作数据库时的sql语句是否正确,你可以在配置文件中加
<property name="show_sql">true</property>
等等配置
⑥编写HibernateUtil.java工具类
HibernateUtil.java工具类主要的作用是负责Hibernate的启动和负责完成存储和访问SessionFactory的工作。HibernateUtil可以很轻松的访问获取到Session,从而实现对数据的存储与获取等操作。
主要用的一些类的方式:
Configuration:用于创建SessionFactory
SessionFactory:用于创建Session
ThreadLocal:用于存储Session变量
具体代码:
package com.hibernate.entity;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/*Hibernate:辅助工具类,既负责Hibernate的启动,也负责完成存储和访问SessionFactory的工作。 * 使用Hibernate类来处理java应用程序中的Hibernate的启动是一种常见的模式 */public class HibernateUtil { private static SessionFactory sessionfactory; // 创建线程局部变量threadLocal,用来保存Hibernate中的Session private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); // 使用静态代码块来初始化Hibernate static { try { Configuration cfg = new Configuration().configure("/HibernateConf/hibernate.cfg.xml");// 读取配置文件hibernate.cfg.xml sessionfactory = cfg.buildSessionFactory(); // 创建SessionFactory } catch (Throwable ex) { throw new ExceptionInInitializerError(ex); } } // 获得SessionFactory的实例 public static SessionFactory getSessionFactory() { return sessionfactory; } // 获得ThreadLocal对象管理的Session实例 public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { // 通过sessionfactory创建session if (sessionfactory == null) { rebuildSessionFactory(); } session = (sessionfactory != null) ? sessionfactory.openSession() : null; threadLocal.set(session); } return session; } // 关闭Session实例 public static void closeSession() throws HibernateException { Session session = threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } // 关闭缓存和连接池 public static void shutdown() { sessionfactory = getSessionFactory(); if (sessionfactory != null) { sessionfactory.close(); } } // 重建SessionFactory private static void rebuildSessionFactory() { try { Configuration cfg = new Configuration() .configure("/HibernateConf/hibernate.cfg.xml"); sessionfactory = cfg.buildSessionFactory(); } catch (Exception e) { System.out.println("SessionFactory build error"); e.printStackTrace(); } }}
注:Configuration在创建SessionFactory之前需要先通过configure()方法读取配置文件hibernate.cfg.xml,如果你直接将配置文件放在类加载路径下(也就是src)那么直接调用configure(“/hibernate.cfg.xml”)方法就可以了,但是如果你是放在比如包HibernateConf下面的那么Configuration实例就会根据参数去找了,所以这是你要将你的路径作为参数即configure(“/HibernateConf/hibernate.cfg.xml”)。
⑦编写DAO接口UserDAO
package com.hibernate.DAO;import com.hibernate.entity.User;public interface UserDAO { void save(User user); // 添加用户 User findById(int id); // 查找用户 void delete(User user); // 删除用户 void update(User user); // 修改用户信息}
⑧编写DAO层实现类UserDAOImpl
package com.hibernate.DAO;import org.hibernate.Session;import org.hibernate.Transaction;import com.hibernate.entity.HibernateUtil;import com.hibernate.entity.User;public class UserDAOImpl implements UserDAO{ //新增用户 public void save(User user) { Session session = HibernateUtil.getSession(); //获取session Transaction tx = session.beginTransaction(); //创建事务 try{ session.save(user); tx.commit(); //提交事务 }catch(Exception e){ System.out.println("保存失败!"); e.printStackTrace(); tx.rollback(); //事务回滚 }finally{ HibernateUtil.closeSession(); //关闭Session资源 } } public User findById(int id) { User user = null; Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); try{ user = session.get(User.class, id); tx.commit(); //提交事务 }catch(Exception e){ System.out.println("查找失败"); e.printStackTrace(); tx.rollback(); //回滚事务 }finally{ HibernateUtil.closeSession(); //关闭Session资源 } return user; } public void delete(User user) { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); try{ session.delete(user); tx.commit(); }catch(Exception e){ System.out.println("删除用户失败"); e.printStackTrace(); tx.rollback(); }finally{ HibernateUtil.closeSession(); } } public void update(User user) { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); try{ session.update(user); tx.commit(); }catch(Exception e){ System.out.println("用户信息更新失败"); e.printStackTrace(); tx.rollback(); }finally{ HibernateUtil.closeSession(); } }}
⑨编写测试类UserTest
package com.hibernate.DAO;import org.junit.Test;import com.hibernate.entity.User;//测试用例public class UserTest { @Test public void UserSave(){ UserDAO userdao = new UserDAOImpl(); try{ User user = new User(); user.setName("test1"); user.setPassword("123456"); user.setType(1); user.setUserId(1); userdao.save(user); }catch(Exception e){ System.out.println("这出错了,添加失败"); e.printStackTrace(); } }}
程序运行结果:
备注:
建数据库驱动
切换到DB Browser视图,右键new—>填写驱动信息,导入数据库驱动包就可以了
- 在myeclipse中基于Hibernate框架开发的入门小程序
- 怎样在MyEclipse中运用hibernate来开发j2ee程序
- 怎样在MyEclipse中运用hibernate来开发j2ee程序
- 如何在myeclipse中使用Hibernate框架
- MyEclipse中开发Hibernate图解入门
- MyEclipse开发hibernate程序
- Myeclipse中基于springMVC+spring+hibernate的非注解入门实例
- Hibernate入门到开发(一)之入门小程序
- Myeclipse中hibernate开发
- 在myEclipse上快速开发基于Axis框架的webservice服务
- MyEclipse开发Hibernate入门实例
- struts框架入门的第一小程序
- 使用Myeclipse开发hibernate程序
- 在附近小程序中展示你的小程序-微信小程序开发-视频教程21
- 基于qvfb的应用小程序开发
- 基于qvfb的应用小程序开发
- Eclipse Hibernate 入门小程序
- 如何在Myeclipse中创建Hibernate开发j2ee
- TClientDataSet的ApplyUpdates的方法
- 人脸数据库
- Constraint 代码实验室--带你一步步理解使用 ConstraintLayout
- 最全的静态网站生成器(开源项目)
- oracle表空间操作
- 在myeclipse中基于Hibernate框架开发的入门小程序
- 调整python默认递归深度
- 工作窃取算法
- DragView(一)
- 开放的智力
- Gprof性能分析工具
- plugin sdk updater was not loaded
- java中的原子操作类
- 关于HTTP